0s autopkgtest [01:57:16]: starting date and time: 2024-06-08 01:57:16+0000 0s autopkgtest [01:57:16]: git checkout: 433ed4cb Merge branch 'skia/nova_flock' into 'ubuntu/5.34+prod' 0s autopkgtest [01:57:16]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.233g0j38/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-ppc64el-19.secgroup --name adt-oracular-ppc64el-translate-toolkit-20240608-015716-juju-7f2275-prod-proposed-migration-environment-2-06faae69-d8bd-4df7-901f-12d749403989 --image adt/ubuntu-oracular-ppc64el-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/ 135s autopkgtest [01:59:31]: testbed dpkg architecture: ppc64el 135s autopkgtest [01:59:31]: testbed apt version: 2.9.3 135s autopkgtest [01:59:31]: @@@@@@@@@@@@@@@@@@@@ test bed setup 136s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 136s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2864 B] 136s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 136s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 136s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [336 kB] 137s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main ppc64el Packages [54.3 kB] 137s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted ppc64el Packages [1860 B] 137s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe ppc64el Packages [300 kB] 137s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse ppc64el Packages [1768 B] 137s Fetched 858 kB in 1s (807 kB/s) 137s Reading package lists... 140s Reading package lists... 140s Building dependency tree... 140s Reading state information... 140s Calculating upgrade... 140s The following packages will be upgraded: 140s debianutils libheif-plugin-aomdec libheif-plugin-aomenc 140s libheif-plugin-libde265 libheif1 libnetplan1 liburcu8t64 netplan-generator 140s netplan.io python3-netplan 140s 10 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 140s Need to get 804 kB of archives. 140s After this operation, 5120 B of additional disk space will be used. 140s Get:1 http://ftpmaster.internal/ubuntu oracular/main ppc64el debianutils ppc64el 5.18 [90.5 kB] 141s Get:2 http://ftpmaster.internal/ubuntu oracular/main ppc64el netplan-generator ppc64el 1.0-3ubuntu1 [59.3 kB] 141s Get:3 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-netplan ppc64el 1.0-3ubuntu1 [21.8 kB] 141s Get:4 http://ftpmaster.internal/ubuntu oracular/main ppc64el netplan.io ppc64el 1.0-3ubuntu1 [66.6 kB] 141s Get:5 http://ftpmaster.internal/ubuntu oracular/main ppc64el libnetplan1 ppc64el 1.0-3ubuntu1 [138 kB] 141s Get:6 http://ftpmaster.internal/ubuntu oracular/main ppc64el libheif-plugin-aomdec ppc64el 1.17.6-3 [10.2 kB] 141s Get:7 http://ftpmaster.internal/ubuntu oracular/main ppc64el libheif-plugin-aomenc ppc64el 1.17.6-3 [16.6 kB] 141s Get:8 http://ftpmaster.internal/ubuntu oracular/main ppc64el libheif1 ppc64el 1.17.6-3 [320 kB] 141s Get:9 http://ftpmaster.internal/ubuntu oracular/main ppc64el libheif-plugin-libde265 ppc64el 1.17.6-3 [8484 B] 141s Get:10 http://ftpmaster.internal/ubuntu oracular/main ppc64el liburcu8t64 ppc64el 0.14.0-4 [72.9 kB] 141s Fetched 804 kB in 1s (1140 kB/s) 141s (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 ... 72612 files and directories currently installed.) 141s Preparing to unpack .../debianutils_5.18_ppc64el.deb ... 141s Unpacking debianutils (5.18) over (5.17build1) ... 142s Setting up debianutils (5.18) ... 142s (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 ... 72612 files and directories currently installed.) 142s Preparing to unpack .../0-netplan-generator_1.0-3ubuntu1_ppc64el.deb ... 142s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 142s Unpacking netplan-generator (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 142s Preparing to unpack .../1-python3-netplan_1.0-3ubuntu1_ppc64el.deb ... 142s Unpacking python3-netplan (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 142s Preparing to unpack .../2-netplan.io_1.0-3ubuntu1_ppc64el.deb ... 142s Unpacking netplan.io (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 142s Preparing to unpack .../3-libnetplan1_1.0-3ubuntu1_ppc64el.deb ... 142s Unpacking libnetplan1:ppc64el (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 142s Preparing to unpack .../4-libheif-plugin-aomdec_1.17.6-3_ppc64el.deb ... 142s Unpacking libheif-plugin-aomdec:ppc64el (1.17.6-3) over (1.17.6-1ubuntu4) ... 142s Preparing to unpack .../5-libheif-plugin-aomenc_1.17.6-3_ppc64el.deb ... 142s Unpacking libheif-plugin-aomenc:ppc64el (1.17.6-3) over (1.17.6-1ubuntu4) ... 142s Preparing to unpack .../6-libheif1_1.17.6-3_ppc64el.deb ... 142s Unpacking libheif1:ppc64el (1.17.6-3) over (1.17.6-1ubuntu4) ... 142s Preparing to unpack .../7-libheif-plugin-libde265_1.17.6-3_ppc64el.deb ... 142s Unpacking libheif-plugin-libde265:ppc64el (1.17.6-3) over (1.17.6-1ubuntu4) ... 142s Preparing to unpack .../8-liburcu8t64_0.14.0-4_ppc64el.deb ... 142s Unpacking liburcu8t64:ppc64el (0.14.0-4) over (0.14.0-3.1build1) ... 142s Setting up liburcu8t64:ppc64el (0.14.0-4) ... 142s Setting up libnetplan1:ppc64el (1.0-3ubuntu1) ... 142s Setting up python3-netplan (1.0-3ubuntu1) ... 142s Setting up netplan-generator (1.0-3ubuntu1) ... 142s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 142s Setting up netplan.io (1.0-3ubuntu1) ... 142s Setting up libheif-plugin-aomdec:ppc64el (1.17.6-3) ... 142s Setting up libheif-plugin-libde265:ppc64el (1.17.6-3) ... 142s Setting up libheif1:ppc64el (1.17.6-3) ... 142s Setting up libheif-plugin-aomenc:ppc64el (1.17.6-3) ... 142s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 142s Processing triggers for man-db (2.12.1-1) ... 143s Processing triggers for dbus (1.14.10-4ubuntu4) ... 144s Reading package lists... 144s Building dependency tree... 144s Reading state information... 144s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 145s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 145s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 145s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 145s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 146s Reading package lists... 146s Reading package lists... 146s Building dependency tree... 146s Reading state information... 147s Calculating upgrade... 147s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 147s Reading package lists... 147s Building dependency tree... 147s Reading state information... 147s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 150s autopkgtest [01:59:46]: testbed running kernel: Linux 6.8.0-31-generic #31-Ubuntu SMP Sat Apr 20 00:05:55 UTC 2024 150s autopkgtest [01:59:46]: @@@@@@@@@@@@@@@@@@@@ apt-source translate-toolkit 153s Get:1 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (dsc) [3172 B] 153s Get:2 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (tar) [1203 kB] 153s Get:3 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (diff) [24.4 kB] 153s gpgv: Signature made Wed Apr 10 14:04:46 2024 UTC 153s gpgv: using RSA key A62D2CFBD50B9B5BF360D54B159EB5C4EFC8774C 153s gpgv: Can't check signature: No public key 153s dpkg-source: warning: cannot verify inline signature for ./translate-toolkit_3.12.2-1ubuntu1.dsc: no acceptable signature found 153s autopkgtest [01:59:49]: testing package translate-toolkit version 3.12.2-1ubuntu1 154s autopkgtest [01:59:50]: build not needed 155s autopkgtest [01:59:51]: test translate-toolkit: preparing testbed 156s Reading package lists... 156s Building dependency tree... 156s Reading state information... 156s Starting pkgProblemResolver with broken count: 0 156s Starting 2 pkgProblemResolver with broken count: 0 156s Done 157s The following additional packages will be installed: 157s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 157s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 157s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 157s python3-aeidon python3-bs4 python3-cheroot python3-dateutil 157s python3-diff-match-patch python3-enchant python3-iniparse 157s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 157s python3-more-itertools python3-phply python3-ply python3-pycountry 157s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 157s python3-simplejson python3-soupsieve python3-translate python3-vobject 157s python3-xapian subversion translate-toolkit 157s Suggested packages: 157s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 157s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 157s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 157s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 157s db5.3-util libapache2-mod-svn subversion-tools 157s Recommended packages: 157s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 157s python3-cssselect python3-html5lib translate-toolkit-doc 157s The following NEW packages will be installed: 157s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 157s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 157s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 157s libxslt1.1 python3-aeidon python3-bs4 python3-cheroot python3-dateutil 157s python3-diff-match-patch python3-enchant python3-iniparse 157s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 157s python3-more-itertools python3-phply python3-ply python3-pycountry 157s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 157s python3-simplejson python3-soupsieve python3-translate python3-vobject 157s python3-xapian subversion translate-toolkit 157s 0 upgraded, 42 newly installed, 0 to remove and 0 not upgraded. 157s Need to get 11.0 MB/11.0 MB of archives. 157s After this operation, 52.8 MB of additional disk space will be used. 157s Get:1 /tmp/autopkgtest.wV9Ur8/1-autopkgtest-satdep.deb autopkgtest-satdep ppc64el 0 [872 B] 157s Get:2 http://ftpmaster.internal/ubuntu oracular/main ppc64el emacsen-common all 3.0.5 [12.1 kB] 157s Get:3 http://ftpmaster.internal/ubuntu oracular/main ppc64el dictionaries-common all 1.29.7 [188 kB] 157s Get:4 http://ftpmaster.internal/ubuntu oracular/main ppc64el libgomp1 ppc64el 14.1.0-1ubuntu1 [161 kB] 157s Get:5 http://ftpmaster.internal/ubuntu oracular/main ppc64el gettext ppc64el 0.21-14ubuntu2 [985 kB] 158s Get:6 http://ftpmaster.internal/ubuntu oracular/main ppc64el hunspell-en-us all 1:2020.12.07-2 [280 kB] 158s Get:7 http://ftpmaster.internal/ubuntu oracular/main ppc64el libapr1t64 ppc64el 1.7.2-3.2 [133 kB] 158s Get:8 http://ftpmaster.internal/ubuntu oracular/main ppc64el libaprutil1t64 ppc64el 1.6.3-1.1ubuntu7 [113 kB] 158s Get:9 http://ftpmaster.internal/ubuntu oracular/main ppc64el libaspell15 ppc64el 0.60.8.1-1build1 [383 kB] 158s Get:10 http://ftpmaster.internal/ubuntu oracular/main ppc64el libhunspell-1.7-0 ppc64el 1.7.2+really1.7.2-10build3 [313 kB] 158s Get:11 http://ftpmaster.internal/ubuntu oracular/main ppc64el libenchant-2-2 ppc64el 2.3.3-2build2 [59.8 kB] 158s Get:12 http://ftpmaster.internal/ubuntu oracular/main ppc64el libexttextcat-data all 3.4.7-1build1 [193 kB] 158s Get:13 http://ftpmaster.internal/ubuntu oracular/universe ppc64el libserf-1-1 ppc64el 1.3.10-2 [56.5 kB] 158s Get:14 http://ftpmaster.internal/ubuntu oracular/universe ppc64el libutf8proc3 ppc64el 2.9.0-1build1 [72.5 kB] 158s Get:15 http://ftpmaster.internal/ubuntu oracular/universe ppc64el libsvn1 ppc64el 1.14.3-1build4 [1640 kB] 159s Get:16 http://ftpmaster.internal/ubuntu oracular/universe ppc64el libxapian30 ppc64el 1.4.22-1build1 [808 kB] 159s Get:17 http://ftpmaster.internal/ubuntu oracular/main ppc64el libxslt1.1 ppc64el 1.1.39-0exp1build1 [192 kB] 159s Get:18 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-aeidon all 1.11-2 [221 kB] 159s Get:19 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-soupsieve all 2.5-1 [33.0 kB] 159s Get:20 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-bs4 all 4.12.3-1 [109 kB] 159s Get:21 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-more-itertools all 10.2.0-1 [52.9 kB] 159s Get:22 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-jaraco.functools all 4.0.0-1 [10.7 kB] 159s Get:23 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 159s Get:24 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-dateutil all 2.9.0-2 [80.3 kB] 159s Get:25 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-diff-match-patch all 20230430-1 [33.1 kB] 159s Get:26 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-enchant all 3.2.2-1 [34.0 kB] 159s Get:27 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-rapidfuzz ppc64el 3.6.2+ds-3 [1091 kB] 159s Get:28 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-levenshtein ppc64el 0.25.1-3 [134 kB] 159s Get:29 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-lxml ppc64el 5.2.1-1 [1250 kB] 159s Get:30 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-mistletoe all 1.3.0-1 [38.0 kB] 159s Get:31 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-ply all 3.11-6 [46.5 kB] 159s Get:32 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-phply all 1.2.6-1 [50.5 kB] 159s Get:33 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-ruamel.yaml.clib ppc64el 0.2.8-1build1 [159 kB] 159s Get:34 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 159s Get:35 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-simplejson ppc64el 3.19.2-1build2 [60.6 kB] 159s Get:36 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-translate all 3.12.2-1ubuntu1 [318 kB] 159s Get:37 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-vobject all 0.9.6.1-2 [40.6 kB] 160s Get:38 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-xapian ppc64el 1.4.22-1build5 [359 kB] 160s Get:39 http://ftpmaster.internal/ubuntu oracular/universe ppc64el subversion ppc64el 1.14.3-1build4 [945 kB] 160s Get:40 http://ftpmaster.internal/ubuntu oracular/universe ppc64el translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 160s Get:41 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-iniparse all 0.5-2 [20.0 kB] 160s Get:42 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 160s Preconfiguring packages ... 160s Fetched 11.0 MB in 3s (3456 kB/s) 160s Selecting previously unselected package emacsen-common. 161s (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 ... 72612 files and directories currently installed.) 161s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 161s Unpacking emacsen-common (3.0.5) ... 161s Selecting previously unselected package dictionaries-common. 161s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 161s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 161s Unpacking dictionaries-common (1.29.7) ... 161s Selecting previously unselected package libgomp1:ppc64el. 161s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_ppc64el.deb ... 161s Unpacking libgomp1:ppc64el (14.1.0-1ubuntu1) ... 161s Selecting previously unselected package gettext. 161s Preparing to unpack .../03-gettext_0.21-14ubuntu2_ppc64el.deb ... 161s Unpacking gettext (0.21-14ubuntu2) ... 161s Selecting previously unselected package hunspell-en-us. 161s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 161s Unpacking hunspell-en-us (1:2020.12.07-2) ... 161s Selecting previously unselected package libapr1t64:ppc64el. 161s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_ppc64el.deb ... 161s Unpacking libapr1t64:ppc64el (1.7.2-3.2) ... 161s Selecting previously unselected package libaprutil1t64:ppc64el. 161s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_ppc64el.deb ... 161s Unpacking libaprutil1t64:ppc64el (1.6.3-1.1ubuntu7) ... 161s Selecting previously unselected package libaspell15:ppc64el. 161s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_ppc64el.deb ... 161s Unpacking libaspell15:ppc64el (0.60.8.1-1build1) ... 161s Selecting previously unselected package libhunspell-1.7-0:ppc64el. 161s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_ppc64el.deb ... 161s Unpacking libhunspell-1.7-0:ppc64el (1.7.2+really1.7.2-10build3) ... 161s Selecting previously unselected package libenchant-2-2:ppc64el. 161s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_ppc64el.deb ... 161s Unpacking libenchant-2-2:ppc64el (2.3.3-2build2) ... 161s Selecting previously unselected package libexttextcat-data. 161s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 161s Unpacking libexttextcat-data (3.4.7-1build1) ... 161s Selecting previously unselected package libserf-1-1:ppc64el. 161s Preparing to unpack .../11-libserf-1-1_1.3.10-2_ppc64el.deb ... 161s Unpacking libserf-1-1:ppc64el (1.3.10-2) ... 161s Selecting previously unselected package libutf8proc3:ppc64el. 161s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_ppc64el.deb ... 161s Unpacking libutf8proc3:ppc64el (2.9.0-1build1) ... 161s Selecting previously unselected package libsvn1:ppc64el. 161s Preparing to unpack .../13-libsvn1_1.14.3-1build4_ppc64el.deb ... 161s Unpacking libsvn1:ppc64el (1.14.3-1build4) ... 161s Selecting previously unselected package libxapian30:ppc64el. 161s Preparing to unpack .../14-libxapian30_1.4.22-1build1_ppc64el.deb ... 161s Unpacking libxapian30:ppc64el (1.4.22-1build1) ... 161s Selecting previously unselected package libxslt1.1:ppc64el. 161s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_ppc64el.deb ... 161s Unpacking libxslt1.1:ppc64el (1.1.39-0exp1build1) ... 161s Selecting previously unselected package python3-aeidon. 161s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 161s Unpacking python3-aeidon (1.11-2) ... 161s Selecting previously unselected package python3-soupsieve. 161s Preparing to unpack .../17-python3-soupsieve_2.5-1_all.deb ... 161s Unpacking python3-soupsieve (2.5-1) ... 161s Selecting previously unselected package python3-bs4. 161s Preparing to unpack .../18-python3-bs4_4.12.3-1_all.deb ... 161s Unpacking python3-bs4 (4.12.3-1) ... 161s Selecting previously unselected package python3-more-itertools. 161s Preparing to unpack .../19-python3-more-itertools_10.2.0-1_all.deb ... 161s Unpacking python3-more-itertools (10.2.0-1) ... 161s Selecting previously unselected package python3-jaraco.functools. 161s Preparing to unpack .../20-python3-jaraco.functools_4.0.0-1_all.deb ... 161s Unpacking python3-jaraco.functools (4.0.0-1) ... 161s Selecting previously unselected package python3-cheroot. 161s Preparing to unpack .../21-python3-cheroot_10.0.0+ds1-2_all.deb ... 161s Unpacking python3-cheroot (10.0.0+ds1-2) ... 161s Selecting previously unselected package python3-dateutil. 161s Preparing to unpack .../22-python3-dateutil_2.9.0-2_all.deb ... 161s Unpacking python3-dateutil (2.9.0-2) ... 161s Selecting previously unselected package python3-diff-match-patch. 161s Preparing to unpack .../23-python3-diff-match-patch_20230430-1_all.deb ... 161s Unpacking python3-diff-match-patch (20230430-1) ... 161s Selecting previously unselected package python3-enchant. 161s Preparing to unpack .../24-python3-enchant_3.2.2-1_all.deb ... 161s Unpacking python3-enchant (3.2.2-1) ... 161s Selecting previously unselected package python3-rapidfuzz. 161s Preparing to unpack .../25-python3-rapidfuzz_3.6.2+ds-3_ppc64el.deb ... 161s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 161s Selecting previously unselected package python3-levenshtein. 161s Preparing to unpack .../26-python3-levenshtein_0.25.1-3_ppc64el.deb ... 161s Unpacking python3-levenshtein (0.25.1-3) ... 161s Selecting previously unselected package python3-lxml:ppc64el. 161s Preparing to unpack .../27-python3-lxml_5.2.1-1_ppc64el.deb ... 161s Unpacking python3-lxml:ppc64el (5.2.1-1) ... 161s Selecting previously unselected package python3-mistletoe. 161s Preparing to unpack .../28-python3-mistletoe_1.3.0-1_all.deb ... 161s Unpacking python3-mistletoe (1.3.0-1) ... 162s Selecting previously unselected package python3-ply. 162s Preparing to unpack .../29-python3-ply_3.11-6_all.deb ... 162s Unpacking python3-ply (3.11-6) ... 162s Selecting previously unselected package python3-phply. 162s Preparing to unpack .../30-python3-phply_1.2.6-1_all.deb ... 162s Unpacking python3-phply (1.2.6-1) ... 162s Selecting previously unselected package python3-ruamel.yaml.clib:ppc64el. 162s Preparing to unpack .../31-python3-ruamel.yaml.clib_0.2.8-1build1_ppc64el.deb ... 162s Unpacking python3-ruamel.yaml.clib:ppc64el (0.2.8-1build1) ... 162s Selecting previously unselected package python3-ruamel.yaml. 162s Preparing to unpack .../32-python3-ruamel.yaml_0.17.21-1_all.deb ... 162s Unpacking python3-ruamel.yaml (0.17.21-1) ... 162s Selecting previously unselected package python3-simplejson. 162s Preparing to unpack .../33-python3-simplejson_3.19.2-1build2_ppc64el.deb ... 162s Unpacking python3-simplejson (3.19.2-1build2) ... 162s Selecting previously unselected package python3-translate. 162s Preparing to unpack .../34-python3-translate_3.12.2-1ubuntu1_all.deb ... 162s Unpacking python3-translate (3.12.2-1ubuntu1) ... 162s Selecting previously unselected package python3-vobject. 162s Preparing to unpack .../35-python3-vobject_0.9.6.1-2_all.deb ... 162s Unpacking python3-vobject (0.9.6.1-2) ... 162s Selecting previously unselected package python3-xapian. 162s Preparing to unpack .../36-python3-xapian_1.4.22-1build5_ppc64el.deb ... 162s Unpacking python3-xapian (1.4.22-1build5) ... 162s Selecting previously unselected package subversion. 162s Preparing to unpack .../37-subversion_1.14.3-1build4_ppc64el.deb ... 162s Unpacking subversion (1.14.3-1build4) ... 162s Selecting previously unselected package translate-toolkit. 162s Preparing to unpack .../38-translate-toolkit_3.12.2-1ubuntu1_all.deb ... 162s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 162s Selecting previously unselected package python3-iniparse. 162s Preparing to unpack .../39-python3-iniparse_0.5-2_all.deb ... 162s Unpacking python3-iniparse (0.5-2) ... 162s Selecting previously unselected package python3-pycountry. 162s Preparing to unpack .../40-python3-pycountry_23.12.11+ds1-2_all.deb ... 162s Unpacking python3-pycountry (23.12.11+ds1-2) ... 162s Selecting previously unselected package autopkgtest-satdep. 162s Preparing to unpack .../41-1-autopkgtest-satdep.deb ... 162s Unpacking autopkgtest-satdep (0) ... 162s Setting up python3-more-itertools (10.2.0-1) ... 162s Setting up libxapian30:ppc64el (1.4.22-1build1) ... 162s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 162s Setting up python3-diff-match-patch (20230430-1) ... 163s Setting up python3-jaraco.functools (4.0.0-1) ... 163s Setting up python3-aeidon (1.11-2) ... 163s Setting up libutf8proc3:ppc64el (2.9.0-1build1) ... 163s Setting up libaspell15:ppc64el (0.60.8.1-1build1) ... 163s Setting up python3-ply (3.11-6) ... 163s Setting up python3-ruamel.yaml.clib:ppc64el (0.2.8-1build1) ... 163s Setting up libgomp1:ppc64el (14.1.0-1ubuntu1) ... 163s Setting up python3-simplejson (3.19.2-1build2) ... 163s Setting up emacsen-common (3.0.5) ... 164s Setting up python3-cheroot (10.0.0+ds1-2) ... 164s Setting up python3-pycountry (23.12.11+ds1-2) ... 164s Setting up python3-xapian (1.4.22-1build5) ... 164s Setting up python3-ruamel.yaml (0.17.21-1) ... 164s Setting up python3-mistletoe (1.3.0-1) ... 165s Setting up libexttextcat-data (3.4.7-1build1) ... 165s Setting up libapr1t64:ppc64el (1.7.2-3.2) ... 165s Setting up libxslt1.1:ppc64el (1.1.39-0exp1build1) ... 165s Setting up python3-dateutil (2.9.0-2) ... 165s Setting up python3-levenshtein (0.25.1-3) ... 165s Setting up libhunspell-1.7-0:ppc64el (1.7.2+really1.7.2-10build3) ... 165s Setting up python3-soupsieve (2.5-1) ... 165s Setting up python3-iniparse (0.5-2) ... 165s Setting up libaprutil1t64:ppc64el (1.6.3-1.1ubuntu7) ... 165s Setting up python3-vobject (0.9.6.1-2) ... 165s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 165s patterns['name'] = '[a-zA-Z0-9\-_]+' 165s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 165s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 165s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 165s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 165s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 165s """ 166s Setting up gettext (0.21-14ubuntu2) ... 166s Setting up python3-phply (1.2.6-1) ... 166s Setting up dictionaries-common (1.29.7) ... 166s Setting up libserf-1-1:ppc64el (1.3.10-2) ... 166s Setting up python3-bs4 (4.12.3-1) ... 166s Setting up python3-lxml:ppc64el (5.2.1-1) ... 167s Setting up hunspell-en-us (1:2020.12.07-2) ... 167s Setting up libsvn1:ppc64el (1.14.3-1build4) ... 167s Setting up libenchant-2-2:ppc64el (2.3.3-2build2) ... 167s Setting up subversion (1.14.3-1build4) ... 167s Setting up python3-enchant (3.2.2-1) ... 167s Setting up python3-translate (3.12.2-1ubuntu1) ... 168s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 168s Setting up autopkgtest-satdep (0) ... 168s Processing triggers for man-db (2.12.1-1) ... 168s Processing triggers for install-info (7.1-3build2) ... 168s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 168s Processing triggers for dictionaries-common (1.29.7) ... 172s (Reading database ... 76040 files and directories currently installed.) 172s Removing autopkgtest-satdep (0) ... 173s autopkgtest [02:00:09]: test translate-toolkit: [----------------------- 173s ========= SMOKE TEST: /usr/bin/android2po =========== 173s Usage: android2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 173s 173s Convert Android string files to Gettext PO localization files. See: 173s http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/android2po.html for examples and usage 173s 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 xml 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 xml format 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s --duplicates=DUPLICATESTYLE 173s what to do with duplicate strings (identical source 173s text): merge, msgctxt (default: 'msgctxt') 173s ========= SMOKE TEST: /usr/bin/build_tmdb =========== 173s usage: build_tmdb [-h] [-d TMDB_FILE] [-s SOURCE_LANG] -t TARGET_LANG 173s input files [input files ...] 173s 173s positional arguments: 173s input files 173s 173s options: 173s -h, --help show this help message and exit 173s -d TMDB_FILE, --tmdb TMDB_FILE 173s translation memory database file (default: tm.db) 173s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 173s source language of translation files (default: en) 173s -t TARGET_LANG, --import-target-lang TARGET_LANG 173s target language of translation files 173s ========= SMOKE TEST: /usr/bin/buildxpi =========== 173s usage: Usage: buildxpi.py [] [ ...] 173s 173s positional arguments: 173s langs 173s 173s options: 173s -h, --help show this help message and exit 173s -L L10NBASE, --l10n-base L10NBASE 173s The directory containing the subdirectory. 173s -o OUTPUTDIR, --output-dir OUTPUTDIR 173s The directory to copy the built XPI to (default: 173s current directory). 173s -p MOZPRODUCT, --mozproduct MOZPRODUCT 173s The Mozilla product name (default: "browser"). 173s -s SRCDIR, --src SRCDIR 173s The directory containing the Mozilla l10n sources. 173s -d, --delete-dest Delete output XPI if it already exists. 173s -v, --verbose Be more noisy 173s --soft-max-version Override a fixed max version with one to cover the 173s whole cycle e.g. 24.0a1 becomes 24.0.* 173s ========= SMOKE TEST: /usr/bin/csv2po =========== 173s 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] 173s 173s Convert Comma-Separated Value (.csv) files to Gettext PO localization files. 173s See: http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/csv2po.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 csv 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 po, pot, 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 --charset=CHARSET set charset to decode from csv files 173s --columnorder=COLUMNORDER 173s specify the order and position of columns 173s (location,source,target) 173s --duplicates=DUPLICATESTYLE 173s what to do with duplicate strings (identical source 173s text): merge, msgctxt (default: 'msgctxt') 173s ========= SMOKE TEST: /usr/bin/csv2tbx =========== 173s Usage: csv2tbx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 173s 173s Convert Comma-Separated Value (.csv) files to a TermBase eXchange (.tbx) 173s glossary file. See: http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/csv2tbx.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 csv format 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in tbx format 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s --charset=CHARSET set charset to decode from csv files 173s --columnorder=COLUMNORDER 173s specify the order and position of columns 173s (comment,source,target) 173s ========= SMOKE TEST: /usr/bin/dtd2po =========== 174s 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] 174s 174s Convert a Mozilla .dtd UTF-8 localization format to a Gettext PO localization 174s file. Uses the po and dtd modules, and the dtd2po convertor class which is in 174s this module You can convert back to .dtd using po2dtd.py. 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 dtd 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 dtd 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 --duplicates=DUPLICATESTYLE 174s what to do with duplicate strings (identical source 174s text): merge, msgctxt (default: 'msgctxt') 174s ========= SMOKE TEST: /usr/bin/flatxml2po =========== 174s Usage: flatxml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 174s 174s Convert flat XML files to Gettext PO localization files. See: 174s http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/flatxml2po.html for examples and usage 174s 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 xml 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 -S, --timestamp skip conversion if the output file has newer timestamp 174s -r ROOT, --root=ROOT name of the XML root element (default: "root") 174s -v VALUE, --value=VALUE 174s name of the XML value element (default: "str") 174s -k KEY, --key=KEY name of the XML key attribute (default: "key") 174s -n NS, --namespace=NS 174s XML namespace uri (default: None) 174s ========= SMOKE TEST: /usr/bin/get_moz_enUS =========== 174s usage: get_moz_enUS [-h] [-s SRCDIR] [-d DESTDIR] [-p MOZPRODUCT] 174s [--delete-dest] [-v] 174s 174s options: 174s -h, --help show this help message and exit 174s -s SRCDIR, --src SRCDIR 174s The directory containing the Mozilla l10n sources. 174s -d DESTDIR, --dest DESTDIR 174s The destination directory to copy the en-US locale 174s files to. 174s -p MOZPRODUCT, --mozproduct MOZPRODUCT 174s The Mozilla product name. 174s --delete-dest Delete the destination directory (if it exists). 174s -v, --verbose Be more noisy 174s ========= SMOKE TEST: /usr/bin/html2po =========== 174s Usage: html2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 174s 174s Convert HTML files to Gettext PO localization files. See: 174s http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/html2po.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 htm, html, xhtml 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 -S, --timestamp skip conversion if the output file has newer timestamp 174s -P, --pot output PO Templates (.pot) rather than PO files (.po) 174s --keepcomments preserve html comments as translation notes in the 174s output 174s --duplicates=DUPLICATESTYLE 174s what to do with duplicate strings (identical source 174s text): merge, msgctxt (default: 'msgctxt') 174s --multifile=MULTIFILESTYLE 174s how to split po/pot files (single, toplevel or 174s onefile) 174s ========= SMOKE TEST: /usr/bin/ical2po =========== 174s 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] 174s 174s Convert iCalendar files to Gettext PO localization files. See: 174s http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/ical2po.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 ics 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 ics 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 --duplicates=DUPLICATESTYLE 174s what to do with duplicate strings (identical source 174s text): merge, msgctxt (default: 'msgctxt') 174s ========= SMOKE TEST: /usr/bin/idml2po =========== 174s Usage: idml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 174s 174s Convert IDML files to PO localization files. 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 idml 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 -S, --timestamp skip conversion if the output file has newer timestamp 175s ========= SMOKE TEST: /usr/bin/ini2po =========== 175s 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] 175s 175s Convert .ini files to Gettext PO localization files. See: 175s http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/ini2po.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 ini, isl, iss 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 -t TEMPLATE, --template=TEMPLATE 175s read from TEMPLATE in ini, isl, iss 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 ========= SMOKE TEST: /usr/bin/json2po =========== 175s 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] 175s 175s Convert JSON files to Gettext PO localization files. See: 175s http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/json2po.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 json format 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 -t TEMPLATE, --template=TEMPLATE 175s read from TEMPLATE in json format 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 --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 175s everything) 175s --duplicates=DUPLICATESTYLE 175s what to do with duplicate strings (identical source 175s text): merge, msgctxt (default: 'msgctxt') 175s ========= 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) 176s ========= 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 176s ========= SMOKE TEST: /usr/bin/oo2po =========== 176s Usage: oo2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 176s 176s Convert an OpenOffice.org (SDF) localization file to Gettext PO localization 176s files. See: http://docs.translatehouse.org/projects/translate- 176s toolkit/en/latest/commands/oo2po.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 oo, sdf formats 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 -l LANG, --language=LANG 176s set target language to extract from oo file (e.g. af- 176s ZA) 176s --source-language=LANG 176s set source language code (default en-US) 176s --nonrecursiveinput don't treat the input oo as a recursive store 176s --duplicates=DUPLICATESTYLE 176s what to do with duplicate strings (identical source 176s text): merge, msgctxt (default: 'msgctxt') 176s --multifile=MULTIFILESTYLE 176s how to split po/pot files (single, toplevel or 176s onefile) 176s ========= SMOKE TEST: /usr/bin/oo2xliff =========== 176s Usage: oo2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 176s 176s Convert an OpenOffice.org (SDF) localization file to XLIFF localization 176s files. See: http://docs.translatehouse.org/projects/translate- 176s toolkit/en/latest/commands/oo2po.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 oo, sdf 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 176s -l LANG, --language=LANG 176s set target language to extract from oo file (e.g. af- 176s ZA) 176s --source-language=LANG 176s set source language code (default en-US) 176s --nonrecursiveinput don't treat the input oo as a recursive store 176s --duplicates=DUPLICATESTYLE 176s what to do with duplicate strings (identical source 176s text): merge, msgctxt (default: 'msgctxt') 176s --multifile=MULTIFILESTYLE 176s how to split po/pot files (single, toplevel or 176s onefile) 176s ========= 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') 177s ========= SMOKE TEST: /usr/bin/phppo2pypo =========== 177s Usage: phppo2pypo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 177s 177s Convert PHP format .po files to Python format .po files. 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 po, pot 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 ========= SMOKE TEST: /usr/bin/po2csv =========== 177s Usage: po2csv [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 177s 177s Convert Gettext PO localization files to Comma-Separated Value (.csv) files. 177s See: http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/csv2po.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 po, pot formats 177s -x EXCLUDE, --exclude=EXCLUDE 177s exclude names matching EXCLUDE from input paths 177s -o OUTPUT, --output=OUTPUT 177s write to OUTPUT in csv format 177s -S, --timestamp skip conversion if the output file has newer timestamp 177s --columnorder=COLUMNORDER 177s specify the order and position of columns 177s (location,source,target) 177s ========= SMOKE TEST: /usr/bin/po2dtd =========== 177s Usage: po2dtd [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 177s 177s Converts a Gettext PO file to a UTF-8 encoded Mozilla .dtd file. .. note: 177s Conversion is either done using a template plus PO file or just using the 177s .po file. 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 po, pot formats 177s -x EXCLUDE, --exclude=EXCLUDE 177s exclude names matching EXCLUDE from input paths 177s -o OUTPUT, --output=OUTPUT 177s write to OUTPUT in dtd format 177s -t TEMPLATE, --template=TEMPLATE 177s read from TEMPLATE in dtd format 177s -S, --timestamp skip conversion if the output file has newer timestamp 177s --threshold=PERCENT only convert files where the translation completion is 177s above PERCENT 177s --fuzzy use translations marked fuzzy 177s --nofuzzy don't use translations marked fuzzy (default) 177s --removeuntranslated remove untranslated strings from output 177s ========= SMOKE TEST: /usr/bin/po2flatxml =========== 177s Usage: po2flatxml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 177s 177s Convert Gettext PO localization files to flat XML files. See: 177s http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/flatxml2po.html for examples and usage 177s 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 po, pot formats 177s -x EXCLUDE, --exclude=EXCLUDE 177s exclude names matching EXCLUDE from input paths 177s -o OUTPUT, --output=OUTPUT 177s write to OUTPUT in xml format 177s -t TEMPLATE, --template=TEMPLATE 177s read from TEMPLATE in xml format 177s -S, --timestamp skip conversion if the output file has newer timestamp 177s -r ROOT, --root=ROOT name of the XML root element (default: "root") 177s -v VALUE, --value=VALUE 177s name of the XML value element (default: "str") 177s -k KEY, --key=KEY name of the XML key attribute (default: "key") 177s -n NS, --namespace=NS 177s XML namespace uri (default: None) 177s -w INDENT, --indent=INDENT 177s indent width in spaces, 0 for no indent (default: 2) 177s ========= SMOKE TEST: /usr/bin/po2html =========== 177s Usage: po2html [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 177s 177s Translate HTML files using Gettext PO localization files. See: 177s http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/html2po.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 po, pot formats 177s -x EXCLUDE, --exclude=EXCLUDE 177s exclude names matching EXCLUDE from input paths 177s -o OUTPUT, --output=OUTPUT 177s write to OUTPUT in htm, html, xhtml formats 177s -t TEMPLATE, --template=TEMPLATE 177s read from TEMPLATE in htm, html, xhtml formats 177s -S, --timestamp skip conversion if the output file has newer timestamp 177s --threshold=PERCENT only convert files where the translation completion is 177s above PERCENT 177s --fuzzy use translations marked fuzzy 177s --nofuzzy don't use translations marked fuzzy (default) 177s ========= SMOKE TEST: /usr/bin/po2ical =========== 178s Usage: po2ical [--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 iCalendar files. See: 178s http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/ical2po.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 ics format 178s -t TEMPLATE, --template=TEMPLATE 178s read from TEMPLATE in ics 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 ========= SMOKE TEST: /usr/bin/po2idml =========== 178s Usage: po2idml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 178s 178s Takes an IDML template file and a PO file containing translations of strings 178s in the IDML template. It creates a new IDML file using the translations of 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 idml format 178s -t TEMPLATE, --template=TEMPLATE 178s read from TEMPLATE in idml format 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s ========= SMOKE TEST: /usr/bin/po2ini =========== 178s Usage: po2ini [--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 .ini files. See: 178s http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/ini2po.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 ini, isl formats 178s -t TEMPLATE, --template=TEMPLATE 178s read from TEMPLATE in ini, isl formats 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 ========= SMOKE TEST: /usr/bin/po2json =========== 178s Usage: po2json [--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 JSON files. See: 178s http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/json2po.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 json format 178s -t TEMPLATE, --template=TEMPLATE 178s read from TEMPLATE in json 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/po2md =========== 179s Usage: po2md [--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 Markdown files using Gettext PO localization files. See: 179s http://docs.translatehouse.org/projects/translate- 179s toolkit/en/latest/commands/md2po.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 markdown, md, text, txt formats 179s -t TEMPLATE, --template=TEMPLATE 179s read from TEMPLATE in markdown, md, text, txt formats 179s -S, --timestamp skip conversion if the output file has newer timestamp 179s -m MAXLENGTH, --maxlinelength=MAXLENGTH 179s reflow (word wrap) the output to the given maximum 179s line length. set to 0 to disable 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/po2moz =========== 179s Usage: po2moz [--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 Mozilla .dtd and .properties files. 179s See: http://docs.translatehouse.org/projects/translate- 179s toolkit/en/latest/commands/moz2po.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 *, dtd.po, dtd.pot, inc.po, 179s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 179s lang.pot, manifest, properties.po, properties.pot, rdf 179s formats 179s -x EXCLUDE, --exclude=EXCLUDE 179s exclude names matching EXCLUDE from input paths 179s -o OUTPUT, --output=OUTPUT 179s write to OUTPUT in *, dtd, inc, ini, it, js, lang, 179s manifest, properties, rdf formats 179s -t TEMPLATE, --template=TEMPLATE 179s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 179s manifest, properties, rdf formats 179s -S, --timestamp skip conversion if the output file has newer timestamp 179s -l LOCALE, --locale=LOCALE 179s set output locale (required as this sets the directory 179s names) 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 --removeuntranslated remove untranslated strings from output 179s ========= SMOKE TEST: /usr/bin/po2mozlang =========== 179s Usage: po2mozlang [--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 Mozilla .lang files. 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 lang format 179s -t TEMPLATE, --template=TEMPLATE 179s read from TEMPLATE in lang format 179s -S, --timestamp skip conversion if the output file has newer timestamp 179s --mark-active mark the file as active 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/po2oo =========== 179s Usage: po2oo [--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 an OpenOffice.org (SDF) localization 179s file. See: http://docs.translatehouse.org/projects/translate- 179s toolkit/en/latest/commands/oo2po.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, xlf, xliff formats 179s -x EXCLUDE, --exclude=EXCLUDE 179s exclude names matching EXCLUDE from input paths 179s -o OUTPUT, --output=OUTPUT 179s write to OUTPUT in oo, sdf formats 179s -t TEMPLATE, --template=TEMPLATE 179s read from TEMPLATE in oo, sdf formats 179s -S, --timestamp skip conversion if the output file has newer timestamp 179s -l LANG, --language=LANG 179s set target language code (e.g. af-ZA) [required] 179s --source-language=LANG 179s set source language code (default en-US) 179s -T, --keeptimestamp don't change the timestamps of the strings 179s --nonrecursiveoutput don't treat the output oo as a recursive store 179s --nonrecursivetemplate 179s don't treat the template oo as a recursive store 179s --skipsource don't output the source language, but fallback to it 179s where needed 179s --filteraction=ACTION 179s action on pofilter failure: none (default), warn, 179s exclude-serious, exclude-all 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 --multifile=MULTIFILESTYLE 179s how to split po/pot files (single, toplevel or 179s onefile) 180s ========= SMOKE TEST: /usr/bin/po2php =========== 180s Usage: po2php [--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 PHP localization files. See: 180s http://docs.translatehouse.org/projects/translate- 180s toolkit/en/latest/commands/php2po.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 html, php formats 180s -t TEMPLATE, --template=TEMPLATE 180s read from TEMPLATE in html, php 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/po2prop =========== 180s Usage: po2prop [--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 Java/Mozilla .properties files. 180s See: http://docs.translatehouse.org/projects/translate- 180s toolkit/en/latest/commands/prop2po.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 lang, properties, strings formats 180s -t TEMPLATE, --template=TEMPLATE 180s read from TEMPLATE in lang, properties, strings 180s formats 180s -S, --timestamp skip conversion if the output file has newer timestamp 180s --personality=TYPE override the input file format: java, java-utf8, java- 180s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 180s strings, strings-utf8, joomla (for .properties files, 180s default: java) 180s --encoding=ENCODING override the encoding set by the personality 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/po2rc =========== 180s Usage: po2rc [--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 back to Windows Resource (.rc) files. 180s See: http://docs.translatehouse.org/projects/translate- 180s toolkit/en/latest/commands/rc2po.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 rc format 180s -t TEMPLATE, --template=TEMPLATE 180s read from TEMPLATE in rc format 180s -S, --timestamp skip conversion if the output file has newer timestamp 180s --charset=CHARSET charset to use to decode the RC files (default: utf-8) 180s -l LANG, --lang=LANG LANG entry 180s --sublang=SUBLANG SUBLANG entry (default: SUBLANG_DEFAULT) 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/po2resx =========== 180s Usage: po2resx [--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 localisation files to .Net Resource (.resx) files. See: 180s http://docs.translatehouse.org/projects/translate- 180s toolkit/en/latest/commands/resx2po.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 resx format 180s -t TEMPLATE, --template=TEMPLATE 180s read from TEMPLATE in resx format 180s -S, --timestamp skip conversion if the output file has newer timestamp 180s --fuzzy use translations marked fuzzy 180s --nofuzzy don't use translations marked fuzzy (default) 180s ========= SMOKE TEST: /usr/bin/po2sub =========== 180s Usage: po2sub [--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 subtitle files. See: 180s http://docs.translatehouse.org/projects/translate- 180s toolkit/en/latest/commands/sub2po.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 ass, srt, ssa, sub formats 180s -t TEMPLATE, --template=TEMPLATE 180s read from TEMPLATE in ass, srt, ssa, sub 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/po2symb =========== 181s Usage: po2symb [--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 Symbian translation files. See: 181s http://docs.translatehouse.org/projects/translate- 181s toolkit/en/latest/commands/symb2po.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 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 r0 format 181s -t TEMPLATE, --template=TEMPLATE 181s read from TEMPLATE in 181s -S, --timestamp skip conversion if the output file has newer timestamp 181s --duplicates=DUPLICATESTYLE 181s what to do with duplicate strings (identical source 181s text): merge, msgctxt (default: 'msgctxt') 181s ========= SMOKE TEST: /usr/bin/po2tiki =========== 181s Usage: po2tiki [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 181s 181s Convert Gettext PO files to TikiWiki's language.php files. See: 181s http://docs.translatehouse.org/projects/translate- 181s toolkit/en/latest/commands/tiki2po.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 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 tiki format 181s -S, --timestamp skip conversion if the output file has newer timestamp 181s ========= SMOKE TEST: /usr/bin/po2tmx =========== 181s Usage: po2tmx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 181s 181s Convert Gettext PO localization files to a TMX (Translation Memory eXchange) 181s file. See: http://docs.translatehouse.org/projects/translate- 181s toolkit/en/latest/commands/po2tmx.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 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 tmx format 181s -S, --timestamp skip conversion if the output file has newer timestamp 181s -l LANG, --language=LANG 181s set target language code (e.g. af-ZA) [required] 181s --source-language=LANG 181s set source language code (default: en) 181s --comments=COMMENT set default comment import: none, source, type or 181s others (default: none) 181s ========= SMOKE TEST: /usr/bin/po2ts =========== 181s Usage: po2ts [--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 Qt Linguist (.ts) files. See: 181s http://docs.translatehouse.org/projects/translate- 181s toolkit/en/latest/commands/ts2po.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 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 ts format 181s -t TEMPLATE, --template=TEMPLATE 181s read from TEMPLATE in ts format 181s -S, --timestamp skip conversion if the output file has newer timestamp 181s -c CONTEXT, --context=CONTEXT 181s use supplied context instead of the one in the .po 181s file comment 181s ========= SMOKE TEST: /usr/bin/po2txt =========== 181s Usage: po2txt [--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 plain text (.txt) files. See: 181s http://docs.translatehouse.org/projects/translate- 181s toolkit/en/latest/commands/txt2po.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 po, pot, xlf, xliff formats 181s -x EXCLUDE, --exclude=EXCLUDE 181s exclude names matching EXCLUDE from input paths 181s -o OUTPUT, --output=OUTPUT 181s write to OUTPUT in txt format 181s -t TEMPLATE, --template=TEMPLATE 181s read from TEMPLATE in txt format 181s -S, --timestamp skip conversion if the output file has newer timestamp 181s --encoding=ENCODING The encoding of the template file (default: UTF-8) 181s -w WRAP, --wrap=WRAP set number of columns to wrap text at 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 ========= SMOKE TEST: /usr/bin/po2web2py =========== 181s Usage: po2web2py [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 181s 181s Convert GNU/gettext PO files to web2py translation dictionaries (.py). See: 181s http://docs.translatehouse.org/projects/translate- 181s toolkit/en/latest/commands/web2py2po.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 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 py format 181s -S, --timestamp skip conversion if the output file has newer timestamp 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 ========= SMOKE TEST: /usr/bin/po2wordfast =========== 181s Usage: po2wordfast [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 181s 181s Convert Gettext PO localization files to a Wordfast translation memory file. 181s See: http://docs.translatehouse.org/projects/translate- 181s toolkit/en/latest/commands/po2wordfast.html for examples and usage 181s 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 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 txt format 181s -S, --timestamp skip conversion if the output file has newer timestamp 181s -l LANG, --language=LANG 181s set target language code (e.g. af-ZA) [required] 181s --source-language=LANG 181s set source language code (default: en) 181s ========= SMOKE TEST: /usr/bin/po2xliff =========== 182s Usage: po2xliff [--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 XLIFF localization files. See: 182s http://docs.translatehouse.org/projects/translate- 182s toolkit/en/latest/commands/xliff2po.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 xlf, xliff formats 182s -t TEMPLATE, --template=TEMPLATE 182s read from TEMPLATE in xlf, xliff formats 182s -S, --timestamp skip conversion if the output file has newer timestamp 182s ========= SMOKE TEST: /usr/bin/po2yaml =========== 182s Usage: po2yaml [--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 YAML files. See: 182s http://docs.translatehouse.org/projects/translate- 182s toolkit/en/latest/commands/yaml2po.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 yaml, yml formats 182s -t TEMPLATE, --template=TEMPLATE 182s read from TEMPLATE in yaml, yml 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/poclean =========== 182s Usage: poclean [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 182s 182s Produces a clean file from an unclean file (Trados/Wordfast) by stripping out 182s the tw4win indicators. This does not convert an RTF file to PO/XLIFF, but 182s produces the target file with only the target text in from a text version of 182s the RTF. 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 po, pot, xlf, xliff formats 182s -S, --timestamp skip conversion if the output file has newer timestamp 182s ========= SMOKE TEST: /usr/bin/pocompendium =========== 182s Usage: pocompendium [options] output.po <-d directory(s)|file(s)> 182s The first parameter is the output file, standard output if the output file is '-'. 182s Any number of directories may be specified for input files. 182s Options: 182s --invert|v Creates an inverse compendium with msgid and msgstr swapped 182s --errors|e Only ouput msg bundles that have errors 182s --correct|c Only ouput msg bundles that are correctly translated 182s --ignore-case|i Drops all strings to lowercase 182s --strip-accel-tilde|-st Strip all tilde (~) accelerator characters 182s --strip-accel-amp|-sa Strip all ampersand (&) accelerator characters 182s --strip-accel-under|-su Strip all underscore (_) accelerator characters 182s ========= SMOKE TEST: /usr/bin/pocompile =========== 182s Usage: pocompile [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 182s 182s Compile XLIFF and Gettext PO localization files into Gettext MO (Machine 182s Object) files. See: http://docs.translatehouse.org/projects/translate- 182s toolkit/en/latest/commands/pocompile.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 mo format 182s -S, --timestamp skip conversion if the output file has newer timestamp 182s --fuzzy use translations marked fuzzy 182s --nofuzzy don't use translations marked fuzzy (default) 182s ========= SMOKE TEST: /usr/bin/poconflicts =========== 182s 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] 182s input directory is searched for PO files, PO files with name of conflicting string are output in output directory 182s 182s Conflict finder for Gettext PO localization files. See: 182s http://docs.translatehouse.org/projects/translate- 182s toolkit/en/latest/commands/poconflicts.html for examples and usage 182s 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 format 182s -x EXCLUDE, --exclude=EXCLUDE 182s exclude names matching EXCLUDE from input paths 182s -o OUTPUT, --output=OUTPUT 182s write to OUTPUT in po format 182s -I, --ignore-case ignore case distinctions 182s -v, --invert invert the conflicts thus extracting conflicting 182s destination words 182s --accelerator=ACCELERATORS 182s ignores the given accelerator characters when matching 182s ========= SMOKE TEST: /usr/bin/pocount =========== 182s usage: pocount [-h] [--incomplete] 182s [--full | --csv | --short | --short-strings | --short-words] 182s [--no-color] 182s files [files ...] 182s 182s positional arguments: 182s files 182s 182s options: 182s -h, --help show this help message and exit 182s --incomplete skip 100% translated files. 182s 182s Output format: 182s --full (default) statistics in full, verbose format 182s --csv statistics in CSV format 182s --short same as --short-strings 182s --short-strings statistics of strings in short format - one line per file 182s --short-words statistics of words in short format - one line per file 182s --no-color show output without color 182s ========= SMOKE TEST: /usr/bin/podebug =========== 182s Usage: podebug [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 182s 182s Insert debug messages into XLIFF and Gettext PO localization files. See: 182s http://docs.translatehouse.org/projects/translate- 182s toolkit/en/latest/commands/podebug.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, pot, tmx, xlf, xliff 182s formats 182s -x EXCLUDE, --exclude=EXCLUDE 182s exclude names matching EXCLUDE from input paths 182s -o OUTPUT, --output=OUTPUT 182s write to OUTPUT in po, pot, tmx, xlf, xliff formats 182s -S, --timestamp skip conversion if the output file has newer timestamp 182s -f FORMAT, --format=FORMAT 182s specify format string 182s --rewrite=STYLE the translation rewrite style: blank, bracket, chef, 182s classified, en, flipped, unicode, xxx 182s --ignore=APPLICATION apply tagging ignore rules for the given application: 182s gtk, kde, libreoffice, mozilla, openoffice 182s --preserveplaceholders 182s attempt to exclude characters that are part of 182s placeholders when performing character-level rewrites 182s so that consuming applications can still use the 182s placeholders to generate final output 182s ========= SMOKE TEST: /usr/bin/pofilter =========== 183s Usage: pofilter [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 183s 183s Perform quality checks on Gettext PO, XLIFF and TMX localization files. 183s Snippet files are created whenever a test fails. These can be examined, 183s corrected and merged back into the originals using pomerge. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/pofilter.html for examples and usage instructions 183s and http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/pofilter_tests.html for full descriptions of all 183s tests. 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, tmx, xlf, xliff formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in po, pot, tmx, xlf, xliff formats 183s -l, --listfilters list filters available 183s --review include units marked for review (default) 183s --noreview exclude units marked for review 183s --fuzzy include units marked fuzzy (default) 183s --nofuzzy exclude units marked fuzzy 183s --nonotes don't add notes about the errors 183s --autocorrect output automatic corrections where possible rather 183s than describing issues 183s --language=LANG set target language code (e.g. af-ZA) [required for 183s spell check and recommended in general] 183s --openoffice use the standard checks for OpenOffice translations 183s --libreoffice use the standard checks for LibreOffice translations 183s --mozilla use the standard checks for Mozilla translations 183s --drupal use the standard checks for Drupal translations 183s --gnome use the standard checks for Gnome translations 183s --kde use the standard checks for KDE translations 183s --wx use the standard checks for wxWidgets translations 183s --excludefilter=FILTER 183s don't use FILTER when filtering 183s -t FILTER, --test=FILTER 183s only use test FILTERs specified with this option when 183s filtering 183s --notranslatefile=FILE 183s read list of untranslatable words from FILE (must not 183s be translated) 183s --musttranslatefile=FILE 183s read list of translatable words from FILE (must be 183s translated) 183s --validcharsfile=FILE 183s read list of all valid characters from FILE (must be 183s in UTF-8) 183s ========= SMOKE TEST: /usr/bin/pogrep =========== 183s 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] 183s 183s Grep XLIFF, Gettext PO and TMX localization files. Matches are output to 183s snippet files of the same type which can then be reviewed and later merged 183s using :doc:`pomerge `. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/pogrep.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 gmo, mo, po, pot, tmx, xlf, xlff, 183s xliff formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in gmo, mo, po, pot, tmx, xlf, xlff, 183s xliff formats 183s --search=SEARCHPARTS searches the given parts (source, target, notes and 183s locations) 183s -I, --ignore-case ignore case distinctions 183s -e, --regexp use regular expression matching 183s -v, --invert-match select non-matching lines 183s --accelerator=ACCELERATOR 183s ignores the given accelerator when matching 183s -k, --keep-translations 183s always extract units with translations 183s ========= SMOKE TEST: /usr/bin/pomerge =========== 183s Usage: pomerge [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 183s 183s Merges XLIFF and Gettext PO localization files. Snippet file produced by 183s e.g. :doc:`pogrep ` and updated by a translator can be 183s merged back into the original files. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/pomerge.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, pot, xlf, xliff formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in po, pot, pot, xlf, xliff formats 183s -t TEMPLATE, --template=TEMPLATE 183s read from TEMPLATE in po, pot, pot, xlf, xliff formats 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s --mergeblanks=MERGEBLANKS 183s whether to overwrite existing translations with blank 183s translations (yes/no). Default is yes. 183s --mergefuzzy=MERGEFUZZY 183s whether to consider fuzzy translations from input 183s (yes/no). Default is yes. 183s --mergecomments=MERGECOMMENTS 183s whether to merge comments as well as translations 183s (yes/no). Default is yes. 183s ========= SMOKE TEST: /usr/bin/pomigrate2 =========== 183s Usage pomigrate2 [options] 183s 183s Options: 183s -F|--use-fuzzy-matching - use fuzzy algorithms when merging to attempt to match strings 183s -C|--use-compendium - create and use a compendium built from the migrating files 183s -C|--use-compendium=some-compendium.po 183s - use an external compendium during the migration 183s --no-wrap - do not wrap long lines 183s --locale=lang - set locale for newly born files 183s -q|--quiet - suppress most output 183s -p|--pot2po - use pot2po instead of msgmerge to migrate 183s ========= SMOKE TEST: /usr/bin/popuretext =========== 183s Usage: popuretext ( -P pot-dir | po-dir ) file.txt [accelerator] 183s ========= SMOKE TEST: /usr/bin/poreencode =========== 183s Usage: poreencode 183s eg: poreencode UTF-8 af/ 183s ========= SMOKE TEST: /usr/bin/porestructure =========== 183s Usage: porestructure [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 183s input directory is searched for PO files with (poconflicts) comments, all entries are written to files in a directory structure for pomerge 183s 183s Restructure Gettxt PO files produced by :doc:`poconflicts 183s ` into the original directory tree for merging using 183s :doc:`pomerge `. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/pomerge.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 format 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in po format 183s ========= SMOKE TEST: /usr/bin/posegment =========== 183s Usage: posegment [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 183s 183s Segment Gettext PO, XLIFF and TMX localization files at the sentence level. 183s See: http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/posegment.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, tmx, xlf, xliff formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in po, pot, tmx, xlf, xliff formats 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s -P, --pot output PO Templates (.pot) rather than PO files (.po) 183s -l LANG, --language=LANG 183s the target language code 183s --source-language=LANG 183s the source language code (default 'en') 183s --keepspaces Disable automatic stripping of whitespace 183s --only-aligned Removes units where sentence number does not 183s correspond 183s ========= SMOKE TEST: /usr/bin/poswap =========== 183s Usage: poswap [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 183s 183s Builds a new translation file with the target of the input language as source 183s language. .. note:: Ensure that the two po files correspond 100% to the same 183s pot file before using this. To translate Kurdish (ku) through French:: 183s poswap -i fr/ -t ku -o fr-ku To convert the fr-ku files back to en-ku:: 183s poswap --reverse -i fr/ -t fr-ku -o en-ku See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/poswap.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 po, pot formats 183s -t TEMPLATE, --template=TEMPLATE 183s read from TEMPLATE in po, pot, pot formats 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s --reverse reverse the process of intermediate language 183s conversion 183s ========= SMOKE TEST: /usr/bin/pot2po =========== 183s 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] 183s 183s Convert template files (like .pot or template .xlf files) to translation 183s files, preserving existing translations. See: 183s http://docs.translatehouse.org/projects/translate- 183s toolkit/en/latest/commands/pot2po.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 catkeys, lang, pot, ts, xlf, xliff 183s formats 183s -x EXCLUDE, --exclude=EXCLUDE 183s exclude names matching EXCLUDE from input paths 183s -o OUTPUT, --output=OUTPUT 183s write to OUTPUT in catkeys, lang, po, pot, ts, xlf, 183s xliff formats 183s -t TEMPLATE, --template=TEMPLATE 183s read from TEMPLATE in catkeys, lang, po, pot, ts, xlf, 183s xliff formats 183s -S, --timestamp skip conversion if the output file has newer timestamp 183s -P, --pot output PO Templates (.pot) rather than PO files (.po) 183s --tm=TM The file to use as translation memory when fuzzy 183s matching 183s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 183s The minimum similarity for inclusion (default: 75%) 183s --nofuzzymatching Disable fuzzy matching 183s ========= SMOKE TEST: /usr/bin/poterminology =========== 184s 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] 184s input directory is searched for PO files, terminology PO file is output file 184s 184s Create a terminology file by reading a set of .po or .pot files to produce a 184s pootle-terminology.pot. See: 184s http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/poterminology.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 po, pot formats 184s -u UPDATEFILE, --update=UPDATEFILE 184s update terminology in UPDATEFILE 184s -S STOPFILE, --stopword-list=STOPFILE 184s read stopword (term exclusion) list from STOPFILE 184s (default /usr/share/pyshared/translate/share/stoplist- 184s en) 184s -F, --fold-titlecase fold "Title Case" to lowercase (default) 184s -C, --preserve-case preserve all uppercase/lowercase 184s -I, --ignore-case make all terms lowercase 184s --accelerator=ACCELERATORS 184s ignore the given accelerator characters when matching 184s -t LENGTH, --term-words=LENGTH 184s generate terms of up to LENGTH words (default 3) 184s --nonstop-needed=MIN omit terms with less than MIN nonstop words (default 184s 1) 184s --inputs-needed=MIN omit terms appearing in less than MIN input files 184s (default 2, or 1 if only one input file) 184s --fullmsg-needed=MIN omit full message terms appearing in less than MIN 184s different messages (default 1) 184s --substr-needed=MIN omit substring-only terms appearing in less than MIN 184s different messages (default 2) 184s --locs-needed=MIN omit terms appearing in less than MIN different 184s original source files (default 2) 184s --sort=ORDER output sort order(s): frequency, dictionary, length 184s (may repeat option, default is all in above order) 184s --source-language=LANG 184s the source language code (default 'en') 184s -v, --invert invert the source and target languages for terminology 184s ========= SMOKE TEST: /usr/bin/pretranslate =========== 184s Usage: pretranslate [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 184s 184s Fill localization files with suggested translations based on translation 184s memory and existing translations. See: 184s http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/pretranslate.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, 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 -t TEMPLATE, --template=TEMPLATE 184s read from TEMPLATE in po, pot, xlf, xliff formats 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s --tm=TM The file to use as translation memory when fuzzy 184s matching 184s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 184s The minimum similarity for inclusion (default: 75%) 184s --nofuzzymatching Disable fuzzy matching 184s ========= SMOKE TEST: /usr/bin/prop2po =========== 184s 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] 184s 184s Convert Java/Mozilla .properties files to Gettext PO localization files. 184s See: http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/prop2po.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 lang, properties, strings 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 formats 184s -t TEMPLATE, --template=TEMPLATE 184s read from TEMPLATE in lang, properties, strings 184s formats 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s -P, --pot output PO Templates (.pot) rather than PO files (.po) 184s --personality=TYPE override the input file format: java, java-utf8, java- 184s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 184s strings, strings-utf8, joomla (for .properties files, 184s default: java) 184s --encoding=ENCODING override the encoding set by the personality 184s --duplicates=DUPLICATESTYLE 184s what to do with duplicate strings (identical source 184s text): merge, msgctxt (default: 'msgctxt') 184s ========= SMOKE TEST: /usr/bin/pydiff =========== 184s usage: pydiff [-h] [-i] [-U NUM] [-r] [-N] [--unidirectional-new-file] [-s] 184s [-x PAT] [--fromcontains TEXT] [--tocontains TEXT] 184s [--contains TEXT] [-I] [--accelerator ACCELERATORS] 184s fromfile tofile 184s 184s positional arguments: 184s fromfile 184s tofile 184s 184s options: 184s -h, --help show this help message and exit 184s -i, --ignore-case Ignore case differences in file contents. 184s -U NUM, --unified NUM 184s Output NUM (default 3) lines of unified context 184s -r, --recursive Recursively compare any subdirectories found. 184s -N, --new-file Treat absent files as empty. 184s --unidirectional-new-file 184s Treat absent first files as empty. 184s -s, --report-identical-files 184s Report when two files are the same. 184s -x PAT, --exclude PAT 184s Exclude files that match PAT. 184s --fromcontains TEXT Only show changes where fromfile contains TEXT 184s --tocontains TEXT Only show changes where tofile contains TEXT 184s --contains TEXT Only show changes where fromfile or tofile contains 184s TEXT 184s -I, --ignore-case-contains 184s Ignore case differences when matching any of the 184s changes 184s --accelerator ACCELERATORS 184s ignores the given accelerator characters when matching 184s ========= SMOKE TEST: /usr/bin/pypo2phppo =========== 184s Usage: pypo2phppo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 184s 184s Convert Python format .po files to PHP format .po files. 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 po, pot formats 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s ========= SMOKE TEST: /usr/bin/rc2po =========== 184s 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] 184s 184s Convert Windows RC files to Gettext PO localization files. See: 184s http://docs.translatehouse.org/projects/translate- 184s toolkit/en/latest/commands/rc2po.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 nls, rc 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 formats 184s -t TEMPLATE, --template=TEMPLATE 184s read from TEMPLATE in nls, rc formats 184s -S, --timestamp skip conversion if the output file has newer timestamp 184s -P, --pot output PO Templates (.pot) rather than PO files (.po) 184s --charset=CHARSET charset to use to decode the RC files (autodetection 184s is used by default) 184s -l LANG, --lang=LANG LANG entry (default: None) 184s --sublang=SUBLANG SUBLANG entry (default: None) 184s --duplicates=DUPLICATESTYLE 184s what to do with duplicate strings (identical source 184s text): merge, msgctxt (default: 'msgctxt') 184s ========= SMOKE TEST: /usr/bin/resx2po =========== 185s 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] 185s 185s Convert .Net Resource (.resx) to Gettext PO localisation files. See: 185s http://docs.translatehouse.org/projects/translate- 185s toolkit/en/latest/commands/resx2po.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 resx 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, pot formats 185s -t TEMPLATE, --template=TEMPLATE 185s read from TEMPLATE in resx format 185s -S, --timestamp skip conversion if the output file has newer timestamp 185s -P, --pot output PO Templates (.pot) rather than PO files (.po) 185s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 185s everything) 185s --duplicates=DUPLICATESTYLE 185s what to do with duplicate strings (identical source 185s text): merge, msgctxt (default: 'msgctxt') 185s ========= SMOKE TEST: /usr/bin/sub2po =========== 185s 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] 185s 185s Convert subtitle files to Gettext PO localization files. See: 185s http://docs.translatehouse.org/projects/translate- 185s toolkit/en/latest/commands/sub2po.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 ass, srt, ssa, sub 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 formats 185s -t TEMPLATE, --template=TEMPLATE 185s read from TEMPLATE in ass, srt, ssa, sub formats 185s -S, --timestamp skip conversion if the output file has newer timestamp 185s -P, --pot output PO Templates (.pot) rather than PO files (.po) 185s --duplicates=DUPLICATESTYLE 185s what to do with duplicate strings (identical source 185s text): merge, msgctxt (default: 'msgctxt') 185s ========= SMOKE TEST: /usr/bin/symb2po =========== 185s 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] 185s 185s Convert Symbian localisation files to Gettext PO localization files. See: 185s http://docs.translatehouse.org/projects/translate- 185s toolkit/en/latest/commands/symb2po.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 r01 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, pot formats 185s -t TEMPLATE, --template=TEMPLATE 185s read from TEMPLATE in 185s -S, --timestamp skip conversion if the output file has newer timestamp 185s -P, --pot output PO Templates (.pot) rather than PO files (.po) 185s --duplicates=DUPLICATESTYLE 185s what to do with duplicate strings (identical source 185s text): merge, msgctxt (default: 'msgctxt') 185s ========= SMOKE TEST: /usr/bin/tbx2po =========== 185s Usage: tbx2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 185s 185s Convert TermBase eXchange (.tbx) glossary file into a Gettext PO file. See: 185s http://docs.translatehouse.org/projects/translate- 185s toolkit/en/latest/commands/tbx2po.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 tbx 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, pot formats 185s -S, --timestamp skip conversion if the output file has newer timestamp 185s ========= SMOKE TEST: /usr/bin/tiki2po =========== 185s Usage: tiki2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 185s 185s Convert TikiWiki's language.php files to Gettext PO localization files. See: 185s http://docs.translatehouse.org/projects/translate- 185s toolkit/en/latest/commands/tiki2po.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 php 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, pot formats 185s -S, --timestamp skip conversion if the output file has newer timestamp 185s --include-unused Include strings in the unused section 185s ========= SMOKE TEST: /usr/bin/tmserver =========== 185s usage: tmserver [-h] [-d TMDBFILE] [-f TMFILES] [-t TARGET_LANG] 185s [-s SOURCE_LANG] [-b BIND] [-p PORT] 185s [--max-candidates MAX_CANDIDATES] 185s [--min-similarity MIN_SIMILARITY] [--max-length MAX_LENGTH] 185s [--debug] 185s 185s options: 185s -h, --help show this help message and exit 185s -d TMDBFILE, --tmdb TMDBFILE 185s translation memory database file 185s -f TMFILES, --import-translation-file TMFILES 185s translation file to import into the database 185s -t TARGET_LANG, --import-target-lang TARGET_LANG 185s target language of translation files 185s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 185s source language of translation files 185s -b BIND, --bind BIND address to bind server to (default: localhost) 185s -p PORT, --port PORT port to listen on (default: 8888) 185s --max-candidates MAX_CANDIDATES 185s Maximum number of candidates 185s --min-similarity MIN_SIMILARITY 185s minimum similarity 185s --max-length MAX_LENGTH 185s Maxmimum string length 185s --debug enable debugging features 185s ========= SMOKE TEST: /usr/bin/ts2po =========== 186s Usage: ts2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 186s 186s Convert Qt Linguist (.ts) files to Gettext PO localization files. See: 186s http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/ts2po.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 ts 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, pot 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 --duplicates=DUPLICATESTYLE 186s what to do with duplicate strings (identical source 186s text): merge, msgctxt (default: 'msgctxt') 186s ========= SMOKE TEST: /usr/bin/txt2po =========== 186s Usage: txt2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 186s 186s Convert plain text (.txt) files to Gettext PO localization files. See: 186s http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/txt2po.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 *, txt 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 -S, --timestamp skip conversion if the output file has newer timestamp 186s -P, --pot output PO Templates (.pot) rather than PO files (.po) 186s --encoding=ENCODING The encoding of the input file (default: UTF-8) 186s --flavour=FLAVOUR The flavour of text file: plain (default), dokuwiki, 186s mediawiki 186s --no-segmentation Don't segment the file, treat it like a single message 186s --duplicates=DUPLICATESTYLE 186s what to do with duplicate strings (identical source 186s text): merge, msgctxt (default: 'msgctxt') 186s ========= SMOKE TEST: /usr/bin/web2py2po =========== 186s Usage: web2py2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 186s 186s Convert web2py translation dictionaries (.py) to GNU/gettext PO files. See: 186s http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/web2py2po.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 py 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, pot 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 --duplicates=DUPLICATESTYLE 186s what to do with duplicate strings (identical source 186s text): merge, msgctxt (default: 'msgctxt') 186s ========= SMOKE TEST: /usr/bin/xliff2odf =========== 186s Usage: xliff2odf [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 186s 186s Convert XLIFF translation files to OpenDocument (ODF) files. See: 186s http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/odf2xliff.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 xlf format 186s -x EXCLUDE, --exclude=EXCLUDE 186s exclude names matching EXCLUDE from input paths 186s -o OUTPUT, --output=OUTPUT 186s write to OUTPUT in odc, odf, odg, odi, odm, odp, ods, 186s odt, otc, otf, otg, oth, oti, otp, ots, ott formats 186s -t TEMPLATE, --template=TEMPLATE 186s read from TEMPLATE in odc, odf, odg, odi, odm, odp, 186s ods, odt, otc, otf, otg, oth, oti, otp, ots, ott 186s formats 186s -S, --timestamp skip conversion if the output file has newer timestamp 186s ========= SMOKE TEST: /usr/bin/xliff2oo =========== 186s Usage: xliff2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 186s 186s Convert XLIFF localization files to an OpenOffice.org (SDF) localization 186s file. See: http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/oo2po.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, 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 oo, sdf formats 186s -t TEMPLATE, --template=TEMPLATE 186s read from TEMPLATE in oo, sdf formats 186s -S, --timestamp skip conversion if the output file has newer timestamp 186s -l LANG, --language=LANG 186s set target language code (e.g. af-ZA) [required] 186s --source-language=LANG 186s set source language code (default en-US) 186s -T, --keeptimestamp don't change the timestamps of the strings 186s --nonrecursiveoutput don't treat the output oo as a recursive store 186s --nonrecursivetemplate 186s don't treat the template oo as a recursive store 186s --skipsource don't output the source language, but fallback to it 186s where needed 186s --filteraction=ACTION 186s action on pofilter failure: none (default), warn, 186s exclude-serious, exclude-all 186s --fuzzy use translations marked fuzzy 186s --nofuzzy don't use translations marked fuzzy (default) 186s --multifile=MULTIFILESTYLE 186s how to split po/pot files (single, toplevel or 186s onefile) 186s ========= SMOKE TEST: /usr/bin/xliff2po =========== 186s Usage: xliff2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 186s 186s Convert XLIFF localization files to Gettext PO localization files. See: 186s http://docs.translatehouse.org/projects/translate- 186s toolkit/en/latest/commands/xliff2po.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 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 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 --duplicates=DUPLICATESTYLE 186s what to do with duplicate strings (identical source 186s text): merge, msgctxt (default: 'msgctxt') 186s ========= SMOKE TEST: /usr/bin/yaml2po =========== 187s 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] 187s 187s Convert YAML files to Gettext PO localization files. See: 187s http://docs.translatehouse.org/projects/translate- 187s toolkit/en/latest/commands/yaml2po.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 yaml, yml 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 -t TEMPLATE, --template=TEMPLATE 187s read from TEMPLATE in yaml, yml 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 --duplicates=DUPLICATESTYLE 187s what to do with duplicate strings (identical source 187s text): merge, msgctxt (default: 'msgctxt') 187s autopkgtest [02:00:23]: test translate-toolkit: -----------------------] 188s autopkgtest [02:00:24]: test translate-toolkit: - - - - - - - - - - results - - - - - - - - - - 188s translate-toolkit PASS 188s autopkgtest [02:00:24]: test python3-translate: preparing testbed 359s autopkgtest [02:03:15]: testbed dpkg architecture: ppc64el 360s autopkgtest [02:03:16]: testbed apt version: 2.9.3 360s autopkgtest [02:03:16]: @@@@@@@@@@@@@@@@@@@@ test bed setup 360s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 361s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [336 kB] 361s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 361s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 361s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2864 B] 361s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main ppc64el Packages [54.3 kB] 361s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/restricted ppc64el Packages [1860 B] 361s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/universe ppc64el Packages [300 kB] 361s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse ppc64el Packages [1768 B] 361s Fetched 858 kB in 1s (1229 kB/s) 361s Reading package lists... 363s Reading package lists... 364s Building dependency tree... 364s Reading state information... 364s Calculating upgrade... 364s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 364s Reading package lists... 364s Building dependency tree... 364s Reading state information... 365s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 365s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 365s Get:2 http://ftpmaster.internal/ubuntu oracular InRelease [110 kB] 365s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 365s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 365s Get:5 http://ftpmaster.internal/ubuntu oracular/universe Sources [20.2 MB] 367s Get:6 http://ftpmaster.internal/ubuntu oracular/restricted Sources [18.3 kB] 367s Get:7 http://ftpmaster.internal/ubuntu oracular/multiverse Sources [300 kB] 367s Get:8 http://ftpmaster.internal/ubuntu oracular/main Sources [1377 kB] 367s Get:9 http://ftpmaster.internal/ubuntu oracular/main ppc64el Packages [1348 kB] 367s Get:10 http://ftpmaster.internal/ubuntu oracular/restricted ppc64el Packages [3140 B] 367s Get:11 http://ftpmaster.internal/ubuntu oracular/universe ppc64el Packages [15.0 MB] 367s Get:12 http://ftpmaster.internal/ubuntu oracular/multiverse ppc64el Packages [186 kB] 372s Fetched 38.5 MB in 7s (5159 kB/s) 373s Reading package lists... 373s Reading package lists... 373s Building dependency tree... 373s Reading state information... 374s Calculating upgrade... 374s The following packages will be upgraded: 374s debianutils libheif-plugin-aomdec libheif-plugin-aomenc 374s libheif-plugin-libde265 libheif1 libnetplan1 liburcu8t64 netplan-generator 374s netplan.io python3-netplan 374s 10 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 374s Need to get 804 kB of archives. 374s After this operation, 5120 B of additional disk space will be used. 374s Get:1 http://ftpmaster.internal/ubuntu oracular/main ppc64el debianutils ppc64el 5.18 [90.5 kB] 374s Get:2 http://ftpmaster.internal/ubuntu oracular/main ppc64el netplan-generator ppc64el 1.0-3ubuntu1 [59.3 kB] 374s Get:3 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-netplan ppc64el 1.0-3ubuntu1 [21.8 kB] 374s Get:4 http://ftpmaster.internal/ubuntu oracular/main ppc64el netplan.io ppc64el 1.0-3ubuntu1 [66.6 kB] 374s Get:5 http://ftpmaster.internal/ubuntu oracular/main ppc64el libnetplan1 ppc64el 1.0-3ubuntu1 [138 kB] 374s Get:6 http://ftpmaster.internal/ubuntu oracular/main ppc64el libheif-plugin-aomdec ppc64el 1.17.6-3 [10.2 kB] 374s Get:7 http://ftpmaster.internal/ubuntu oracular/main ppc64el libheif-plugin-aomenc ppc64el 1.17.6-3 [16.6 kB] 374s Get:8 http://ftpmaster.internal/ubuntu oracular/main ppc64el libheif1 ppc64el 1.17.6-3 [320 kB] 374s Get:9 http://ftpmaster.internal/ubuntu oracular/main ppc64el libheif-plugin-libde265 ppc64el 1.17.6-3 [8484 B] 374s Get:10 http://ftpmaster.internal/ubuntu oracular/main ppc64el liburcu8t64 ppc64el 0.14.0-4 [72.9 kB] 375s Fetched 804 kB in 1s (1456 kB/s) 375s (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 ... 72612 files and directories currently installed.) 375s Preparing to unpack .../debianutils_5.18_ppc64el.deb ... 375s Unpacking debianutils (5.18) over (5.17build1) ... 375s Setting up debianutils (5.18) ... 375s (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 ... 72612 files and directories currently installed.) 375s Preparing to unpack .../0-netplan-generator_1.0-3ubuntu1_ppc64el.deb ... 375s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 375s Unpacking netplan-generator (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 375s Preparing to unpack .../1-python3-netplan_1.0-3ubuntu1_ppc64el.deb ... 375s Unpacking python3-netplan (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 375s Preparing to unpack .../2-netplan.io_1.0-3ubuntu1_ppc64el.deb ... 375s Unpacking netplan.io (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 375s Preparing to unpack .../3-libnetplan1_1.0-3ubuntu1_ppc64el.deb ... 375s Unpacking libnetplan1:ppc64el (1.0-3ubuntu1) over (1.0-2ubuntu1) ... 375s Preparing to unpack .../4-libheif-plugin-aomdec_1.17.6-3_ppc64el.deb ... 375s Unpacking libheif-plugin-aomdec:ppc64el (1.17.6-3) over (1.17.6-1ubuntu4) ... 375s Preparing to unpack .../5-libheif-plugin-aomenc_1.17.6-3_ppc64el.deb ... 375s Unpacking libheif-plugin-aomenc:ppc64el (1.17.6-3) over (1.17.6-1ubuntu4) ... 375s Preparing to unpack .../6-libheif1_1.17.6-3_ppc64el.deb ... 375s Unpacking libheif1:ppc64el (1.17.6-3) over (1.17.6-1ubuntu4) ... 375s Preparing to unpack .../7-libheif-plugin-libde265_1.17.6-3_ppc64el.deb ... 375s Unpacking libheif-plugin-libde265:ppc64el (1.17.6-3) over (1.17.6-1ubuntu4) ... 375s Preparing to unpack .../8-liburcu8t64_0.14.0-4_ppc64el.deb ... 375s Unpacking liburcu8t64:ppc64el (0.14.0-4) over (0.14.0-3.1build1) ... 375s Setting up liburcu8t64:ppc64el (0.14.0-4) ... 375s Setting up libnetplan1:ppc64el (1.0-3ubuntu1) ... 375s Setting up python3-netplan (1.0-3ubuntu1) ... 375s Setting up netplan-generator (1.0-3ubuntu1) ... 375s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 375s Setting up netplan.io (1.0-3ubuntu1) ... 375s Setting up libheif-plugin-aomdec:ppc64el (1.17.6-3) ... 375s Setting up libheif-plugin-libde265:ppc64el (1.17.6-3) ... 375s Setting up libheif1:ppc64el (1.17.6-3) ... 375s Setting up libheif-plugin-aomenc:ppc64el (1.17.6-3) ... 375s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 375s Processing triggers for man-db (2.12.1-1) ... 376s Processing triggers for dbus (1.14.10-4ubuntu4) ... 376s Reading package lists... 376s Building dependency tree... 377s Reading state information... 377s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 380s Reading package lists... 380s Building dependency tree... 380s Reading state information... 381s Starting pkgProblemResolver with broken count: 0 381s Starting 2 pkgProblemResolver with broken count: 0 381s Done 381s The following additional packages will be installed: 381s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 381s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 381s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 381s python3-aeidon python3-all python3-bs4 python3-cheroot python3-dateutil 381s python3-diff-match-patch python3-enchant python3-iniconfig python3-iniparse 381s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 381s python3-more-itertools python3-packaging python3-phply python3-pluggy 381s python3-ply python3-pycountry python3-pytest python3-rapidfuzz 381s python3-ruamel.yaml python3-ruamel.yaml.clib python3-simplejson 381s python3-soupsieve python3-syrupy python3-translate python3-vobject 381s python3-xapian subversion 381s Suggested packages: 381s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 381s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 381s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 381s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 381s db5.3-util libapache2-mod-svn subversion-tools 381s Recommended packages: 381s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 381s python3-cssselect python3-html5lib 381s The following NEW packages will be installed: 381s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 381s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 381s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 381s libxslt1.1 python3-aeidon python3-all python3-bs4 python3-cheroot 381s python3-dateutil python3-diff-match-patch python3-enchant python3-iniconfig 381s python3-iniparse python3-jaraco.functools python3-levenshtein python3-lxml 381s python3-mistletoe python3-more-itertools python3-packaging python3-phply 381s python3-pluggy python3-ply python3-pycountry python3-pytest 381s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 381s python3-simplejson python3-soupsieve python3-syrupy python3-translate 381s python3-vobject python3-xapian subversion 381s 0 upgraded, 47 newly installed, 0 to remove and 0 not upgraded. 381s Need to get 11.2 MB/11.2 MB of archives. 381s After this operation, 54.3 MB of additional disk space will be used. 381s Get:1 /tmp/autopkgtest.wV9Ur8/2-autopkgtest-satdep.deb autopkgtest-satdep ppc64el 0 [880 B] 381s Get:2 http://ftpmaster.internal/ubuntu oracular/main ppc64el emacsen-common all 3.0.5 [12.1 kB] 381s Get:3 http://ftpmaster.internal/ubuntu oracular/main ppc64el dictionaries-common all 1.29.7 [188 kB] 381s Get:4 http://ftpmaster.internal/ubuntu oracular/main ppc64el libgomp1 ppc64el 14.1.0-1ubuntu1 [161 kB] 381s Get:5 http://ftpmaster.internal/ubuntu oracular/main ppc64el gettext ppc64el 0.21-14ubuntu2 [985 kB] 381s Get:6 http://ftpmaster.internal/ubuntu oracular/main ppc64el hunspell-en-us all 1:2020.12.07-2 [280 kB] 382s Get:7 http://ftpmaster.internal/ubuntu oracular/main ppc64el libapr1t64 ppc64el 1.7.2-3.2 [133 kB] 382s Get:8 http://ftpmaster.internal/ubuntu oracular/main ppc64el libaprutil1t64 ppc64el 1.6.3-1.1ubuntu7 [113 kB] 382s Get:9 http://ftpmaster.internal/ubuntu oracular/main ppc64el libaspell15 ppc64el 0.60.8.1-1build1 [383 kB] 382s Get:10 http://ftpmaster.internal/ubuntu oracular/main ppc64el libhunspell-1.7-0 ppc64el 1.7.2+really1.7.2-10build3 [313 kB] 382s Get:11 http://ftpmaster.internal/ubuntu oracular/main ppc64el libenchant-2-2 ppc64el 2.3.3-2build2 [59.8 kB] 382s Get:12 http://ftpmaster.internal/ubuntu oracular/main ppc64el libexttextcat-data all 3.4.7-1build1 [193 kB] 382s Get:13 http://ftpmaster.internal/ubuntu oracular/universe ppc64el libserf-1-1 ppc64el 1.3.10-2 [56.5 kB] 382s Get:14 http://ftpmaster.internal/ubuntu oracular/universe ppc64el libutf8proc3 ppc64el 2.9.0-1build1 [72.5 kB] 382s Get:15 http://ftpmaster.internal/ubuntu oracular/universe ppc64el libsvn1 ppc64el 1.14.3-1build4 [1640 kB] 382s Get:16 http://ftpmaster.internal/ubuntu oracular/universe ppc64el libxapian30 ppc64el 1.4.22-1build1 [808 kB] 382s Get:17 http://ftpmaster.internal/ubuntu oracular/main ppc64el libxslt1.1 ppc64el 1.1.39-0exp1build1 [192 kB] 382s Get:18 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-aeidon all 1.11-2 [221 kB] 382s Get:19 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-all ppc64el 3.12.3-0ubuntu1 [888 B] 382s Get:20 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-soupsieve all 2.5-1 [33.0 kB] 382s Get:21 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-bs4 all 4.12.3-1 [109 kB] 382s Get:22 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-more-itertools all 10.2.0-1 [52.9 kB] 382s Get:23 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-jaraco.functools all 4.0.0-1 [10.7 kB] 382s Get:24 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 382s Get:25 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-dateutil all 2.9.0-2 [80.3 kB] 382s Get:26 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-diff-match-patch all 20230430-1 [33.1 kB] 382s Get:27 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-enchant all 3.2.2-1 [34.0 kB] 382s Get:28 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-iniconfig all 1.1.1-2 [6024 B] 382s Get:29 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-rapidfuzz ppc64el 3.6.2+ds-3 [1091 kB] 382s Get:30 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-levenshtein ppc64el 0.25.1-3 [134 kB] 382s Get:31 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-lxml ppc64el 5.2.1-1 [1250 kB] 382s Get:32 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-mistletoe all 1.3.0-1 [38.0 kB] 382s Get:33 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-packaging all 24.0-1 [41.1 kB] 382s Get:34 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-ply all 3.11-6 [46.5 kB] 382s Get:35 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-phply all 1.2.6-1 [50.5 kB] 382s Get:36 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-pluggy all 1.5.0-1 [21.0 kB] 382s Get:37 http://ftpmaster.internal/ubuntu oracular-proposed/universe ppc64el python3-pytest all 8.2.2-1ubuntu1 [250 kB] 382s Get:38 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-ruamel.yaml.clib ppc64el 0.2.8-1build1 [159 kB] 382s Get:39 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 382s Get:40 http://ftpmaster.internal/ubuntu oracular/main ppc64el python3-simplejson ppc64el 3.19.2-1build2 [60.6 kB] 382s Get:41 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-syrupy all 4.6.1-1 [42.8 kB] 382s Get:42 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-translate all 3.12.2-1ubuntu1 [318 kB] 382s Get:43 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-vobject all 0.9.6.1-2 [40.6 kB] 382s Get:44 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-xapian ppc64el 1.4.22-1build5 [359 kB] 382s Get:45 http://ftpmaster.internal/ubuntu oracular/universe ppc64el subversion ppc64el 1.14.3-1build4 [945 kB] 382s Get:46 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-iniparse all 0.5-2 [20.0 kB] 382s Get:47 http://ftpmaster.internal/ubuntu oracular/universe ppc64el python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 382s Preconfiguring packages ... 382s Fetched 11.2 MB in 1s (8831 kB/s) 382s Selecting previously unselected package emacsen-common. 382s (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 ... 72612 files and directories currently installed.) 382s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 382s Unpacking emacsen-common (3.0.5) ... 382s Selecting previously unselected package dictionaries-common. 382s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 382s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 382s Unpacking dictionaries-common (1.29.7) ... 382s Selecting previously unselected package libgomp1:ppc64el. 382s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_ppc64el.deb ... 382s Unpacking libgomp1:ppc64el (14.1.0-1ubuntu1) ... 383s Selecting previously unselected package gettext. 383s Preparing to unpack .../03-gettext_0.21-14ubuntu2_ppc64el.deb ... 383s Unpacking gettext (0.21-14ubuntu2) ... 383s Selecting previously unselected package hunspell-en-us. 383s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 383s Unpacking hunspell-en-us (1:2020.12.07-2) ... 383s Selecting previously unselected package libapr1t64:ppc64el. 383s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_ppc64el.deb ... 383s Unpacking libapr1t64:ppc64el (1.7.2-3.2) ... 383s Selecting previously unselected package libaprutil1t64:ppc64el. 383s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_ppc64el.deb ... 383s Unpacking libaprutil1t64:ppc64el (1.6.3-1.1ubuntu7) ... 383s Selecting previously unselected package libaspell15:ppc64el. 383s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_ppc64el.deb ... 383s Unpacking libaspell15:ppc64el (0.60.8.1-1build1) ... 383s Selecting previously unselected package libhunspell-1.7-0:ppc64el. 383s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_ppc64el.deb ... 383s Unpacking libhunspell-1.7-0:ppc64el (1.7.2+really1.7.2-10build3) ... 383s Selecting previously unselected package libenchant-2-2:ppc64el. 383s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_ppc64el.deb ... 383s Unpacking libenchant-2-2:ppc64el (2.3.3-2build2) ... 383s Selecting previously unselected package libexttextcat-data. 383s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 383s Unpacking libexttextcat-data (3.4.7-1build1) ... 383s Selecting previously unselected package libserf-1-1:ppc64el. 383s Preparing to unpack .../11-libserf-1-1_1.3.10-2_ppc64el.deb ... 383s Unpacking libserf-1-1:ppc64el (1.3.10-2) ... 383s Selecting previously unselected package libutf8proc3:ppc64el. 383s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_ppc64el.deb ... 383s Unpacking libutf8proc3:ppc64el (2.9.0-1build1) ... 383s Selecting previously unselected package libsvn1:ppc64el. 383s Preparing to unpack .../13-libsvn1_1.14.3-1build4_ppc64el.deb ... 383s Unpacking libsvn1:ppc64el (1.14.3-1build4) ... 383s Selecting previously unselected package libxapian30:ppc64el. 383s Preparing to unpack .../14-libxapian30_1.4.22-1build1_ppc64el.deb ... 383s Unpacking libxapian30:ppc64el (1.4.22-1build1) ... 383s Selecting previously unselected package libxslt1.1:ppc64el. 383s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_ppc64el.deb ... 383s Unpacking libxslt1.1:ppc64el (1.1.39-0exp1build1) ... 383s Selecting previously unselected package python3-aeidon. 383s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 383s Unpacking python3-aeidon (1.11-2) ... 383s Selecting previously unselected package python3-all. 383s Preparing to unpack .../17-python3-all_3.12.3-0ubuntu1_ppc64el.deb ... 383s Unpacking python3-all (3.12.3-0ubuntu1) ... 383s Selecting previously unselected package python3-soupsieve. 383s Preparing to unpack .../18-python3-soupsieve_2.5-1_all.deb ... 383s Unpacking python3-soupsieve (2.5-1) ... 383s Selecting previously unselected package python3-bs4. 383s Preparing to unpack .../19-python3-bs4_4.12.3-1_all.deb ... 383s Unpacking python3-bs4 (4.12.3-1) ... 383s Selecting previously unselected package python3-more-itertools. 383s Preparing to unpack .../20-python3-more-itertools_10.2.0-1_all.deb ... 383s Unpacking python3-more-itertools (10.2.0-1) ... 383s Selecting previously unselected package python3-jaraco.functools. 383s Preparing to unpack .../21-python3-jaraco.functools_4.0.0-1_all.deb ... 383s Unpacking python3-jaraco.functools (4.0.0-1) ... 383s Selecting previously unselected package python3-cheroot. 383s Preparing to unpack .../22-python3-cheroot_10.0.0+ds1-2_all.deb ... 383s Unpacking python3-cheroot (10.0.0+ds1-2) ... 383s Selecting previously unselected package python3-dateutil. 383s Preparing to unpack .../23-python3-dateutil_2.9.0-2_all.deb ... 383s Unpacking python3-dateutil (2.9.0-2) ... 383s Selecting previously unselected package python3-diff-match-patch. 383s Preparing to unpack .../24-python3-diff-match-patch_20230430-1_all.deb ... 383s Unpacking python3-diff-match-patch (20230430-1) ... 383s Selecting previously unselected package python3-enchant. 383s Preparing to unpack .../25-python3-enchant_3.2.2-1_all.deb ... 383s Unpacking python3-enchant (3.2.2-1) ... 383s Selecting previously unselected package python3-iniconfig. 383s Preparing to unpack .../26-python3-iniconfig_1.1.1-2_all.deb ... 383s Unpacking python3-iniconfig (1.1.1-2) ... 383s Selecting previously unselected package python3-rapidfuzz. 383s Preparing to unpack .../27-python3-rapidfuzz_3.6.2+ds-3_ppc64el.deb ... 383s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 383s Selecting previously unselected package python3-levenshtein. 383s Preparing to unpack .../28-python3-levenshtein_0.25.1-3_ppc64el.deb ... 383s Unpacking python3-levenshtein (0.25.1-3) ... 383s Selecting previously unselected package python3-lxml:ppc64el. 383s Preparing to unpack .../29-python3-lxml_5.2.1-1_ppc64el.deb ... 383s Unpacking python3-lxml:ppc64el (5.2.1-1) ... 383s Selecting previously unselected package python3-mistletoe. 383s Preparing to unpack .../30-python3-mistletoe_1.3.0-1_all.deb ... 383s Unpacking python3-mistletoe (1.3.0-1) ... 383s Selecting previously unselected package python3-packaging. 383s Preparing to unpack .../31-python3-packaging_24.0-1_all.deb ... 383s Unpacking python3-packaging (24.0-1) ... 383s Selecting previously unselected package python3-ply. 383s Preparing to unpack .../32-python3-ply_3.11-6_all.deb ... 383s Unpacking python3-ply (3.11-6) ... 383s Selecting previously unselected package python3-phply. 383s Preparing to unpack .../33-python3-phply_1.2.6-1_all.deb ... 383s Unpacking python3-phply (1.2.6-1) ... 383s Selecting previously unselected package python3-pluggy. 383s Preparing to unpack .../34-python3-pluggy_1.5.0-1_all.deb ... 383s Unpacking python3-pluggy (1.5.0-1) ... 383s Selecting previously unselected package python3-pytest. 383s Preparing to unpack .../35-python3-pytest_8.2.2-1ubuntu1_all.deb ... 383s Unpacking python3-pytest (8.2.2-1ubuntu1) ... 383s Selecting previously unselected package python3-ruamel.yaml.clib:ppc64el. 383s Preparing to unpack .../36-python3-ruamel.yaml.clib_0.2.8-1build1_ppc64el.deb ... 383s Unpacking python3-ruamel.yaml.clib:ppc64el (0.2.8-1build1) ... 383s Selecting previously unselected package python3-ruamel.yaml. 383s Preparing to unpack .../37-python3-ruamel.yaml_0.17.21-1_all.deb ... 383s Unpacking python3-ruamel.yaml (0.17.21-1) ... 383s Selecting previously unselected package python3-simplejson. 383s Preparing to unpack .../38-python3-simplejson_3.19.2-1build2_ppc64el.deb ... 383s Unpacking python3-simplejson (3.19.2-1build2) ... 383s Selecting previously unselected package python3-syrupy. 383s Preparing to unpack .../39-python3-syrupy_4.6.1-1_all.deb ... 383s Unpacking python3-syrupy (4.6.1-1) ... 383s Selecting previously unselected package python3-translate. 383s Preparing to unpack .../40-python3-translate_3.12.2-1ubuntu1_all.deb ... 383s Unpacking python3-translate (3.12.2-1ubuntu1) ... 383s Selecting previously unselected package python3-vobject. 383s Preparing to unpack .../41-python3-vobject_0.9.6.1-2_all.deb ... 383s Unpacking python3-vobject (0.9.6.1-2) ... 384s Selecting previously unselected package python3-xapian. 384s Preparing to unpack .../42-python3-xapian_1.4.22-1build5_ppc64el.deb ... 384s Unpacking python3-xapian (1.4.22-1build5) ... 384s Selecting previously unselected package subversion. 384s Preparing to unpack .../43-subversion_1.14.3-1build4_ppc64el.deb ... 384s Unpacking subversion (1.14.3-1build4) ... 384s Selecting previously unselected package python3-iniparse. 384s Preparing to unpack .../44-python3-iniparse_0.5-2_all.deb ... 384s Unpacking python3-iniparse (0.5-2) ... 384s Selecting previously unselected package python3-pycountry. 384s Preparing to unpack .../45-python3-pycountry_23.12.11+ds1-2_all.deb ... 384s Unpacking python3-pycountry (23.12.11+ds1-2) ... 384s Selecting previously unselected package autopkgtest-satdep. 384s Preparing to unpack .../46-2-autopkgtest-satdep.deb ... 384s Unpacking autopkgtest-satdep (0) ... 384s Setting up python3-more-itertools (10.2.0-1) ... 384s Setting up python3-iniconfig (1.1.1-2) ... 384s Setting up libxapian30:ppc64el (1.4.22-1build1) ... 384s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 384s Setting up python3-diff-match-patch (20230430-1) ... 384s Setting up python3-jaraco.functools (4.0.0-1) ... 385s Setting up python3-aeidon (1.11-2) ... 385s Setting up libutf8proc3:ppc64el (2.9.0-1build1) ... 385s Setting up libaspell15:ppc64el (0.60.8.1-1build1) ... 385s Setting up python3-ply (3.11-6) ... 385s Setting up python3-ruamel.yaml.clib:ppc64el (0.2.8-1build1) ... 385s Setting up python3-all (3.12.3-0ubuntu1) ... 385s Setting up libgomp1:ppc64el (14.1.0-1ubuntu1) ... 385s Setting up python3-simplejson (3.19.2-1build2) ... 385s Setting up python3-packaging (24.0-1) ... 385s Setting up emacsen-common (3.0.5) ... 385s Setting up python3-cheroot (10.0.0+ds1-2) ... 386s Setting up python3-pycountry (23.12.11+ds1-2) ... 386s Setting up python3-xapian (1.4.22-1build5) ... 386s Setting up python3-pluggy (1.5.0-1) ... 386s Setting up python3-ruamel.yaml (0.17.21-1) ... 386s Setting up python3-mistletoe (1.3.0-1) ... 387s Setting up libexttextcat-data (3.4.7-1build1) ... 387s Setting up libapr1t64:ppc64el (1.7.2-3.2) ... 387s Setting up libxslt1.1:ppc64el (1.1.39-0exp1build1) ... 387s Setting up python3-dateutil (2.9.0-2) ... 387s Setting up python3-levenshtein (0.25.1-3) ... 387s Setting up libhunspell-1.7-0:ppc64el (1.7.2+really1.7.2-10build3) ... 387s Setting up python3-soupsieve (2.5-1) ... 387s Setting up python3-iniparse (0.5-2) ... 387s Setting up libaprutil1t64:ppc64el (1.6.3-1.1ubuntu7) ... 387s Setting up python3-vobject (0.9.6.1-2) ... 387s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 387s patterns['name'] = '[a-zA-Z0-9\-_]+' 387s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 387s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 387s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 387s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 387s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 387s """ 387s Setting up gettext (0.21-14ubuntu2) ... 387s Setting up python3-phply (1.2.6-1) ... 388s Setting up dictionaries-common (1.29.7) ... 388s Setting up python3-pytest (8.2.2-1ubuntu1) ... 388s Setting up python3-syrupy (4.6.1-1) ... 388s Setting up libserf-1-1:ppc64el (1.3.10-2) ... 388s Setting up python3-bs4 (4.12.3-1) ... 389s Setting up python3-lxml:ppc64el (5.2.1-1) ... 389s Setting up hunspell-en-us (1:2020.12.07-2) ... 389s Setting up libsvn1:ppc64el (1.14.3-1build4) ... 389s Setting up libenchant-2-2:ppc64el (2.3.3-2build2) ... 389s Setting up subversion (1.14.3-1build4) ... 389s Setting up python3-enchant (3.2.2-1) ... 389s Setting up python3-translate (3.12.2-1ubuntu1) ... 390s Setting up autopkgtest-satdep (0) ... 390s Processing triggers for man-db (2.12.1-1) ... 390s Processing triggers for install-info (7.1-3build2) ... 390s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 390s Processing triggers for dictionaries-common (1.29.7) ... 393s (Reading database ... 76066 files and directories currently installed.) 393s Removing autopkgtest-satdep (0) ... 396s autopkgtest [02:03:52]: test python3-translate: [----------------------- 397s ============================= test session starts ============================== 397s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 397s cachedir: .pytest_cache 397s rootdir: /tmp/autopkgtest.wV9Ur8/autopkgtest_tmp 397s plugins: syrupy-4.6.1 403s collecting ... collected 3313 items / 2 skipped 403s 403s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 403s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 403s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 403s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 403s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 403s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 403s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 403s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 403s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 403s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 403s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 403s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 403s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 403s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 403s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 403s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 403s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 403s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 403s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 403s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 403s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 403s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 403s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 404s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 404s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 404s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 404s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 404s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 404s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 404s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 404s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 404s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 404s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 404s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 404s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 404s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 404s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 404s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 404s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 404s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 404s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 404s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 404s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 404s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 404s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 404s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 404s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 404s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 404s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 404s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 404s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 404s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 404s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 404s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 404s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 405s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 405s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 405s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 405s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 405s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 405s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 405s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 405s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 405s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 405s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 405s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 405s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 405s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 405s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 405s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 405s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 405s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 405s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 405s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 405s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 405s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 405s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 405s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 405s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 405s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 405s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 405s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 405s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 405s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 405s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 405s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 405s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 405s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 405s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 405s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 405s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 405s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 405s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 405s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 405s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 406s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 406s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 406s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 406s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 406s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 406s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 406s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 406s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 406s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 406s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 406s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 406s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 406s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 406s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 406s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 406s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 406s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 406s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 406s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 406s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 406s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 406s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 406s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 406s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 406s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 406s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 406s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 406s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 406s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 406s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 406s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 406s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 406s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 406s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 407s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 407s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 407s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 407s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 407s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 407s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 407s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 407s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 407s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 407s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 407s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 407s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 407s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 407s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 407s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 407s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 407s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 407s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 407s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 407s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 407s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 407s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 407s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 407s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 407s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 407s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 407s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 407s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 407s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 407s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 407s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 407s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 407s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 407s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 407s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 407s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 407s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 407s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 407s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 407s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 407s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 407s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 407s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 407s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 407s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 407s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 407s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 407s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 407s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 407s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 407s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 407s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 407s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 407s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 407s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 407s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 408s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 408s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 408s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 408s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 408s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 408s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 408s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 408s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 408s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 408s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 408s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 408s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 408s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 408s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 408s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 408s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 408s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 408s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 408s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 408s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 408s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 408s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 408s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 408s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 408s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 408s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 408s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 408s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 408s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 408s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 408s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 408s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 408s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 408s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 408s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 408s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 408s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 408s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 408s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 408s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 408s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 408s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 408s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 408s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 408s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 408s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 408s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 408s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 408s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 408s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 408s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 408s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 408s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 408s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 408s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 408s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 408s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 408s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 408s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 408s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 408s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 408s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 408s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 408s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 408s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 408s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 408s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 408s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 408s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 408s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 408s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 408s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 408s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 408s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 408s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 408s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 408s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 408s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 408s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 408s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 408s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 408s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 408s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 408s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 408s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 408s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 408s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 408s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 408s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 408s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 408s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 408s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 408s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 408s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 408s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 408s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 408s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 408s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 408s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 408s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 408s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 409s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 409s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 409s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 409s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 409s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 409s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 409s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 409s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 409s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 409s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 409s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 409s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 409s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 409s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 409s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 409s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 409s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 409s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 409s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 409s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 409s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 409s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 409s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 409s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 409s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 409s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 409s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 409s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 409s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 409s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 409s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 409s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 409s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 409s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 409s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 409s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 409s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 409s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 409s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 409s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 409s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 409s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 409s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 409s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 409s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 409s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 409s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 409s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 409s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 410s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 410s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 410s tests/translate/storage/test_mo.py::TestMOFile::test_output SKIPPED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 410s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 410s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 410s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 410s 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%] 410s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 410s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 410s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 410s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 410s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 410s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 410s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 410s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 410s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 410s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 410s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 410s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 410s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 410s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 410s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 410s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 410s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 410s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 410s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 410s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 410s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 410s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 410s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 410s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 410s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 410s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 410s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 410s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 410s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 410s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 410s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 411s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 412s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 412s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 412s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 412s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 412s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 412s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 412s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 412s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 412s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 412s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 412s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 412s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 412s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 412s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 412s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 412s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 412s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 412s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 412s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 412s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 412s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 412s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 412s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 412s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 412s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 412s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 412s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 412s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 412s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 413s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 413s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 413s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 413s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 413s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 413s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 413s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 413s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 413s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 413s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 413s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 413s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 413s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 413s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 413s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 413s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 413s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 413s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 413s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 413s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 413s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 413s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 413s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 413s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 413s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 413s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 413s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 413s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 413s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 413s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 413s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 413s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 413s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 413s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 413s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 414s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 414s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 414s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 415s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 415s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 415s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 415s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 415s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 415s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 415s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 415s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 415s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 415s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 415s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 415s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 415s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 415s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 415s tests/translate/tools/test_help.py::test_help[build_tmdb] SKIPPED (S...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[phppo2pypo] SKIPPED (S...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[poclean] SKIPPED (Skip...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[pocompile] SKIPPED (Sk...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[poconflicts] SKIPPED (...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[pocount] SKIPPED (Skip...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[podebug] SKIPPED (Skip...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[pogrep] SKIPPED (Skip ...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[pomerge] SKIPPED (Skip...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[porestructure] SKIPPED [ 94%] 415s tests/translate/tools/test_help.py::test_help[posegment] SKIPPED (Sk...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[poswap] SKIPPED (Skip ...) [ 94%] 415s tests/translate/tools/test_help.py::test_help[poterminology] SKIPPED [ 95%] 415s tests/translate/tools/test_help.py::test_help[pretranslate] SKIPPED [ 95%] 415s tests/translate/tools/test_help.py::test_help[pydiff] SKIPPED (Skip ...) [ 95%] 415s tests/translate/tools/test_help.py::test_help[pypo2phppo] SKIPPED (S...) [ 95%] 415s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 415s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 415s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 415s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 415s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 415s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 415s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 415s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 415s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 416s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 416s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 416s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 416s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 416s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 416s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 416s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 416s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 416s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 416s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 416s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 416s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 416s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 416s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 416s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff SKIPPED [ 99%] 416s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff SKIPPED [100%] 416s 416s ================================== XFAILURES =================================== 416s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 416s 416s self = 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_accelerator_keys_not_in_sentence(self): 416s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 416s dtdtemplate = """ 416s """ 416s dtdlanguage = """ 416s """ 416s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 416s print(pofile) 416s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 416s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 416s 416s tests/translate/convert/test_dtd2po.py:348: AttributeError 416s ----------------------------- Captured stdout call ----------------------------- 416s 416s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 416s 416s self = 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_accelerator_keys_not_in_sentence(self): 416s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 416s dtdtemplate = """ 416s """ 416s dtdlanguage = """ 416s """ 416s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 416s print(pofile) 416s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 416s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 416s 416s tests/translate/convert/test_dtd2po.py:348: AttributeError 416s ----------------------------- Captured stdout call ----------------------------- 416s 416s ________________ TestPO2Php.test_merging_propertyless_template _________________ 416s 416s self = 416s 416s @mark.xfail(reason="Need to review if we want this behaviour") 416s def test_merging_propertyless_template(self): 416s """Check that when merging with a template with no property values that we copy the template.""" 416s posource = "" 416s proptemplate = "# A comment\n" 416s propexpected = proptemplate 416s > propfile = self.merge2prop(proptemplate, posource) 416s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 416s 416s tests/translate/convert/test_po2php.py:386: AttributeError 416s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 416s 416s self = 416s 416s @mark.xfail(reason="Need to review if we want this behaviour") 416s def test_merging_propertyless_template(self): 416s """Check that when merging with a template with no property values that we copy the template.""" 416s posource = "" 416s proptemplate = "# A comment\n" 416s propexpected = proptemplate 416s > propfile = self.merge2prop(proptemplate, posource) 416s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 416s 416s tests/translate/convert/test_po2php.py:386: AttributeError 416s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 416s 416s self = 416s 416s @mark.xfail(reason="Not implemented - review if this is even correct") 416s def test_merging_msgid_change(self): 416s """Tests that if the msgid changes but the location stays the same that we merge.""" 416s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 416s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 416s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 416s newpo = self.convertpot(potsource, posource) 416s print(newpo) 416s > assert str(self.singleunit(newpo)) == poexpected 416s 416s tests/translate/convert/test_pot2po.py:121: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s pofile = 416s 416s @staticmethod 416s def singleunit(pofile): 416s """Checks that the pofile contains a single non-header unit, and returns it.""" 416s > assert len(pofile.units) == 2 416s E assert 3 == 2 416s E + where 3 = len([, , ]) 416s E + where [, , ] = .units 416s 416s tests/translate/convert/test_pot2po.py:25: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s 416s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 416s 416s self = 416s 416s @mark.xfail(reason="Not Implemented - needs review") 416s def test_merging_accelerator_changes(self): 416s """Test that a change in the accelerator localtion still allows merging.""" 416s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 416s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 416s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 416s newpo = self.convertpot(potsource, posource) 416s print(newpo) 416s > assert str(self.singleunit(newpo)) == poexpected 416s 416s tests/translate/convert/test_pot2po.py:190: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s pofile = 416s 416s @staticmethod 416s def singleunit(pofile): 416s """Checks that the pofile contains a single non-header unit, and returns it.""" 416s > assert len(pofile.units) == 2 416s E assert 3 == 2 416s E + where 3 = len([, , ]) 416s E + where [, , ] = .units 416s 416s tests/translate/convert/test_pot2po.py:25: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s 416s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 416s 416s self = 416s 416s @mark.xfail(reason="Not Implemented - review if this is even correct") 416s def test_lines_cut_differently(self): 416s """Checks that the correct formatting is preserved when pot an po lines differ.""" 416s potsource = ( 416s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 416s ) 416s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 416s newpo = self.convertpot(potsource, posource) 416s newpounit = self.singleunit(newpo) 416s > assert str(newpounit) == posource 416s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 416s E 416s E #: simple.label 416s E - msgid "Line" 416s E + msgid "Line split " 416s E ? +++++++ 416s E - " split differently" 416s E ? ------- 416s E + "differently" 416s E msgstr "Lyne verskillend gesny" 416s 416s tests/translate/convert/test_pot2po.py:201: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s #: simple.label 416s msgid "Line split " 416s "differently" 416s msgstr "Lyne verskillend gesny" 416s 416s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 416s 416s self = 416s 416s @mark.xfail(reason="Not implemented - review if this is even correct") 416s def test_merging_msgid_change(self): 416s """Tests that if the msgid changes but the location stays the same that we merge.""" 416s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 416s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 416s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 416s newpo = self.convertpot(potsource, posource) 416s print(newpo) 416s > assert str(self.singleunit(newpo)) == poexpected 416s 416s tests/translate/convert/test_pot2po.py:121: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s pofile = 416s 416s @staticmethod 416s def singleunit(pofile): 416s """Checks that the pofile contains a single non-header unit, and returns it.""" 416s > assert len(pofile.units) == 2 416s E assert 3 == 2 416s E + where 3 = len([, , ]) 416s E + where [, , ] = .units 416s 416s tests/translate/convert/test_pot2po.py:25: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s 416s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 416s 416s self = 416s 416s @mark.xfail(reason="Not Implemented - needs review") 416s def test_merging_accelerator_changes(self): 416s """Test that a change in the accelerator localtion still allows merging.""" 416s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 416s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 416s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 416s newpo = self.convertpot(potsource, posource) 416s print(newpo) 416s > assert str(self.singleunit(newpo)) == poexpected 416s 416s tests/translate/convert/test_pot2po.py:190: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s pofile = 416s 416s @staticmethod 416s def singleunit(pofile): 416s """Checks that the pofile contains a single non-header unit, and returns it.""" 416s > assert len(pofile.units) == 2 416s E assert 3 == 2 416s E + where 3 = len([, , ]) 416s E + where [, , ] = .units 416s 416s tests/translate/convert/test_pot2po.py:25: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s 416s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 416s 416s self = 416s 416s @mark.xfail(reason="Not Implemented - review if this is even correct") 416s def test_lines_cut_differently(self): 416s """Checks that the correct formatting is preserved when pot an po lines differ.""" 416s potsource = ( 416s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 416s ) 416s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 416s newpo = self.convertpot(potsource, posource) 416s newpounit = self.singleunit(newpo) 416s > assert str(newpounit) == posource 416s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 416s E 416s E #: simple.label 416s E - msgid "Line" 416s E + msgid "Line split " 416s E ? +++++++ 416s E - " split differently" 416s E ? ------- 416s E + "differently" 416s E msgstr "Lyne verskillend gesny" 416s 416s tests/translate/convert/test_pot2po.py:201: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s #: simple.label 416s msgid "Line split " 416s "differently" 416s msgstr "Lyne verskillend gesny" 416s 416s ________________________ TestYAML2PO.test_no_duplicates ________________________ 416s 416s self = 416s input = '\nfoo: bar\nfoo: baz\n' 416s 416s def parse(self, input): 416s """Parse the given file or file source string.""" 416s if hasattr(input, "name"): 416s self.filename = input.name 416s elif not getattr(self, "filename", ""): 416s self.filename = "" 416s if hasattr(input, "read"): 416s src = input.read() 416s input.close() 416s input = src 416s if isinstance(input, bytes): 416s input = input.decode("utf-8") 416s try: 416s > self._original = self.yaml.load(input) 416s 416s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 416s return constructor.get_single_data() 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 416s return self.construct_document(node) 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 416s for _dummy in generator: 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 416s self.construct_mapping(node, data, deep=True) 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 416s if self.check_mapping_key(node, key_node, maptyp, key, value): 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s self = 416s 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'))]) 416s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 416s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 416s 416s def check_mapping_key(self, node, key_node, mapping, key, value): 416s # type: (Any, Any, Any, Any, Any) -> bool 416s """return True if key is unique""" 416s if key in mapping: 416s if not self.allow_duplicate_keys: 416s mk = mapping.get(key) 416s args = [ 416s 'while constructing a mapping', 416s node.start_mark, 416s 'found duplicate key "{}" with value "{}" ' 416s '(original value: "{}")'.format(key, value, mk), 416s key_node.start_mark, 416s """ 416s To suppress this check see: 416s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 416s """, 416s """\ 416s Duplicate keys will become an error in future releases, and are errors 416s by default when using the new API. 416s """, 416s ] 416s if self.allow_duplicate_keys is None: 416s warnings.warn(DuplicateKeyFutureWarning(*args)) 416s else: 416s > raise DuplicateKeyError(*args) 416s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 416s E in "", line 2, column 1: 416s E foo: bar 416s E ^ (line: 2) 416s E found duplicate key "foo" with value "baz" (original value: "bar") 416s E in "", line 3, column 1: 416s E foo: baz 416s E ^ (line: 3) 416s E 416s E To suppress this check see: 416s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 416s 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 416s 416s During handling of the above exception, another exception occurred: 416s 416s self = 416s 416s @pytest.mark.xfail(reason="This is invalid YAML document") 416s def test_no_duplicates(self): 416s """Check converting drops duplicates.""" 416s input_string = """ 416s foo: bar 416s foo: baz 416s """ 416s > target_store = self._convert_to_store(input_string) 416s 416s tests/translate/convert/test_yaml2po.py:112: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 416s return self._convert(*args, **kwargs)[0] 416s tests/translate/convert/test_yaml2po.py:28: in _convert 416s converter = self.ConverterClass( 416s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 416s self.source_store = self.SourceStoreClass(input_file) 416s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 416s self.parse(inputfile) 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s self = 416s input = '\nfoo: bar\nfoo: baz\n' 416s 416s def parse(self, input): 416s """Parse the given file or file source string.""" 416s if hasattr(input, "name"): 416s self.filename = input.name 416s elif not getattr(self, "filename", ""): 416s self.filename = "" 416s if hasattr(input, "read"): 416s src = input.read() 416s input.close() 416s input = src 416s if isinstance(input, bytes): 416s input = input.decode("utf-8") 416s try: 416s self._original = self.yaml.load(input) 416s except YAMLError as e: 416s message = getattr(e, "problem", getattr(e, "message", str(e))) 416s if hasattr(e, "problem_mark"): 416s message += f" {e.problem_mark}" 416s > raise base.ParseError(message) 416s 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)' 416s 416s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 416s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 416s 416s self = 416s input = '\nfoo: bar\nfoo: baz\n' 416s 416s def parse(self, input): 416s """Parse the given file or file source string.""" 416s if hasattr(input, "name"): 416s self.filename = input.name 416s elif not getattr(self, "filename", ""): 416s self.filename = "" 416s if hasattr(input, "read"): 416s src = input.read() 416s input.close() 416s input = src 416s if isinstance(input, bytes): 416s input = input.decode("utf-8") 416s try: 416s > self._original = self.yaml.load(input) 416s 416s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 416s return constructor.get_single_data() 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 416s return self.construct_document(node) 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 416s for _dummy in generator: 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 416s self.construct_mapping(node, data, deep=True) 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 416s if self.check_mapping_key(node, key_node, maptyp, key, value): 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s self = 416s 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'))]) 416s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 416s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 416s 416s def check_mapping_key(self, node, key_node, mapping, key, value): 416s # type: (Any, Any, Any, Any, Any) -> bool 416s """return True if key is unique""" 416s if key in mapping: 416s if not self.allow_duplicate_keys: 416s mk = mapping.get(key) 416s args = [ 416s 'while constructing a mapping', 416s node.start_mark, 416s 'found duplicate key "{}" with value "{}" ' 416s '(original value: "{}")'.format(key, value, mk), 416s key_node.start_mark, 416s """ 416s To suppress this check see: 416s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 416s """, 416s """\ 416s Duplicate keys will become an error in future releases, and are errors 416s by default when using the new API. 416s """, 416s ] 416s if self.allow_duplicate_keys is None: 416s warnings.warn(DuplicateKeyFutureWarning(*args)) 416s else: 416s > raise DuplicateKeyError(*args) 416s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 416s E in "", line 2, column 1: 416s E foo: bar 416s E ^ (line: 2) 416s E found duplicate key "foo" with value "baz" (original value: "bar") 416s E in "", line 3, column 1: 416s E foo: baz 416s E ^ (line: 3) 416s E 416s E To suppress this check see: 416s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 416s 416s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 416s 416s During handling of the above exception, another exception occurred: 416s 416s self = 416s 416s @pytest.mark.xfail(reason="This is invalid YAML document") 416s def test_no_duplicates(self): 416s """Check converting drops duplicates.""" 416s input_string = """ 416s foo: bar 416s foo: baz 416s """ 416s > target_store = self._convert_to_store(input_string) 416s 416s tests/translate/convert/test_yaml2po.py:112: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 416s return self._convert(*args, **kwargs)[0] 416s tests/translate/convert/test_yaml2po.py:28: in _convert 416s converter = self.ConverterClass( 416s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 416s self.source_store = self.SourceStoreClass(input_file) 416s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 416s self.parse(inputfile) 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s self = 416s input = '\nfoo: bar\nfoo: baz\n' 416s 416s def parse(self, input): 416s """Parse the given file or file source string.""" 416s if hasattr(input, "name"): 416s self.filename = input.name 416s elif not getattr(self, "filename", ""): 416s self.filename = "" 416s if hasattr(input, "read"): 416s src = input.read() 416s input.close() 416s input = src 416s if isinstance(input, bytes): 416s input = input.decode("utf-8") 416s try: 416s self._original = self.yaml.load(input) 416s except YAMLError as e: 416s message = getattr(e, "problem", getattr(e, "message", str(e))) 416s if hasattr(e, "problem_mark"): 416s message += f" {e.problem_mark}" 416s > raise base.ParseError(message) 416s 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)' 416s 416s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 416s __________________________ test_acceleratedvariables ___________________________ 416s 416s @mark.xfail(reason="Accelerated variables needs a better implementation") 416s def test_acceleratedvariables(): 416s """Test for accelerated variables.""" 416s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 416s mozillachecker = checks.MozillaChecker() 416s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 416s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 416s 416s tests/translate/filters/test_checks.py:206: AttributeError 416s ___________________________ test_musttranslatewords ____________________________ 416s 416s @mark.xfail(reason="FIXME: All fails() tests are not working") 416s def test_musttranslatewords(): 416s """Tests stopwords.""" 416s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 416s assert passes( 416s stdchecker.musttranslatewords, 416s "This uses Mozilla of course", 416s "hierdie gebruik le mozille natuurlik", 416s ) 416s stdchecker = checks.StandardChecker( 416s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 416s ) 416s assert passes( 416s stdchecker.musttranslatewords, 416s "This uses Mozilla of course", 416s "hierdie gebruik le mozille natuurlik", 416s ) 416s > assert fails( 416s stdchecker.musttranslatewords, 416s "This uses Mozilla of course", 416s "hierdie gebruik Mozilla natuurlik", 416s ) 416s E AssertionError: assert False 416s E + where False = fails(>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 416s E + where > = .musttranslatewords 416s 416s tests/translate/filters/test_checks.py:612: AssertionError 416s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 416s 416s @mark.xfail(reason="Bug #3408") 416s def test_persian_single_and_double_quote_fail_at_the_same_time(): 416s """Test Persian single and double quote failures in string with single quotes.""" 416s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 416s 416s # With single quote check. 416s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 416s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 416s E assert False 416s E + where False = fails(>, "Path: '%S'", 'مسیر: "%S"\u200e') 416s E + where > = .singlequoting 416s 416s tests/translate/filters/test_checks.py:1271: AssertionError 416s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 416s 416s @mark.xfail(reason="Bug #3506") 416s def test_bengali_mozilla_inverted_xmltags(): 416s """Test Bengali Mozilla XML tags.""" 416s bn_mozilla_checker = checks.MozillaChecker( 416s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 416s ) 416s str_en = """We co-founded the WHAT-WG to.""" 416s str_bn = """এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।""" 416s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 416s E assert False 416s E + where False = passes(>, 'We co-founded the WHAT-WG to.', 'এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।') 416s E + where > = .xmltags 416s 416s tests/translate/filters/test_checks.py:2065: AssertionError 416s _______________________________ test_word_khmer ________________________________ 416s 416s @mark.xfail( 416s reason="ZWS is not considered a space in Python 2.6+. Khmer " 416s "should extend words() to include \\u200b in addition to " 416s "other word breakers." 416s ) 416s def test_word_khmer(): 416s language = common.Common 416s # Let's test Khmer with zero width space (\u200b) 416s words = language.words("ផ្ដល់\u200bយោបល់") 416s print("ផ្ដល់\u200bយោបល់") 416s print(language.words("ផ្ដល់<200b>យោបល់")) 416s print(["ផ្ដល់", "យោបល់"]) 416s > assert words == ["ផ្ដល់", "យោបល់"] 416s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 416s E 416s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 416s E Right contains one more item: 'យោបល់' 416s E 416s E Full diff: 416s E [ 416s E + 'ផ្ដល់\u200bយោបល់',... 416s E 416s E ...Full output truncated (3 lines hidden), use '-vv' to show 416s 416s tests/translate/lang/test_common.py:47: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s ផ្ដល់​យោបល់ 416s ['ផ្ដល់<200b>យោបល់'] 416s ['ផ្ដល់', 'យោបល់'] 416s __________________ TestConverters.test_to_general_placeables ___________________ 416s 416s self = 416s 416s @mark.xfail(reason="Test needs fixing, disabled for now") 416s def test_to_general_placeables(self): 416s basetree = base.to_base_placeables(self.elem) 416s gentree = general.to_general_placeables(basetree) 416s > assert gentree == self.elem 416s E assert '])>])> == '])>])> 416s E 416s E Full diff: 416s E - , '])>, , '])>])> 416s E ? ^^^ 416s E + , '])>, , '])>])> 416s E ? ^^^^^^ 416s 416s tests/translate/storage/placeables/test_base.py:210: AssertionError 416s ___________________ TestConverters.test_to_xliff_placeables ____________________ 416s 416s self = 416s 416s @mark.xfail(reason="Test needs fixing, disabled for now") 416s def test_to_xliff_placeables(self): 416s basetree = base.to_base_placeables(self.elem) 416s xliff_from_base = xliff.to_xliff_placeables(basetree) 416s > assert str(xliff_from_base) != str(self.elem) 416s E assert 'Ģët &brandLong;' != 'Ģët &brandLong;' 416s E + where 'Ģët &brandLong;' = str(, '])>, , '])>])>) 416s E + and 'Ģët &brandLong;' = str(, '])>, , '])>])>) 416s E + where , '])>, , '])>])> = .elem 416s 416s tests/translate/storage/placeables/test_base.py:216: AssertionError 416s _____________________ test_quotefordtd_unimplemented_cases _____________________ 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_quotefordtd_unimplemented_cases(): 416s """Test unimplemented quoting DTD cases.""" 416s > assert dtd.quotefordtd("Between

and

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

and

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

and

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

and

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

and

' 416s E 416s E -

and

416s E + <p> and </p> 416s 416s tests/translate/storage/test_dtd.py:103: AssertionError 416s ________________________ TestDTD.test_comment_following ________________________ 416s 416s self = 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_comment_following(self): 416s """Check that comments that appear after and entity are not pushed onto another line.""" 416s dtdsource = ' ' 416s dtdregen = self.dtdregen(dtdsource) 416s > assert dtdsource == dtdregen 416s E assert '' == ' 416s E - 416s E - 416s 416s tests/translate/storage/test_dtd.py:344: AssertionError 416s _________________________ TestDTD.test_invalid_quoting _________________________ 416s 416s self = 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_invalid_quoting(self): 416s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 416s # TODO: we should rather raise an error 416s dtdsource = '\n' 416s assert ( 416s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 416s ) 416s dtdfile = self.dtdparse(dtdsource) 416s assert len(dtdfile.units) == 1 416s dtdunit = dtdfile.units[0] 416s assert dtdunit.definition == '"bananas for sale"' 416s > assert bytes(dtdfile) == b'\n' 416s E assert b'' == b'\n' 416s E 416s E Full diff: 416s E - (b'\n') 416s E + b'' 416s 416s tests/translate/storage/test_dtd.py:364: AssertionError 416s __________________________ TestOtFile.test_extensions __________________________ 416s 416s self = 416s 416s @mark.xfail( 416s reason="This doesn't work, due to two store classes handling different " 416s "extensions, but factory listing it as one supported file type" 416s ) 416s def test_extensions(self): 416s > super().test_extensions() 416s 416s tests/translate/storage/test_omegat.py:20: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s self = 416s 416s def test_extensions(self): 416s """Test that the factory knows the extensions for this class.""" 416s supported = factory.supported_files() 416s supported_dict = { 416s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 416s } 416s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 416s return 416s detail = supported_dict[ 416s self.StoreClass.Name 416s ] # will start to get problematic once translated 416s print("Factory:", detail[0]) 416s print("StoreClass:", self.StoreClass.Extensions) 416s for ext in detail[0]: 416s > assert ext in self.StoreClass.Extensions 416s E AssertionError: assert 'tab' in ['utf8'] 416s E + where ['utf8'] = .Extensions 416s E + where = .StoreClass 416s 416s tests/translate/storage/test_base.py:386: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s Factory: ['utf8', 'tab'] 416s StoreClass: ['utf8'] 416s _________________________ TestPOFile.test_kde_plurals __________________________ 416s 416s self = 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_kde_plurals(self): 416s """Tests kde-style plurals. (Bug: 191).""" 416s posource = r"""msgid "_n Singular\n" 416s "Plural" 416s msgstr "Een\n" 416s "Twee\n" 416s "Drie" 416s """ 416s pofile = self.poparse(posource) 416s assert len(pofile.units) == 1 416s unit = pofile.units[0] 416s > assert unit.hasplural() 416s E assert False 416s E + where False = >() 416s E + where > = .hasplural 416s 416s tests/translate/storage/test_po.py:374: AssertionError 416s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 416s 416s self = 416s 416s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 416s def test_makeobsolete_untranslated(self): 416s """Tests making an untranslated unit obsolete.""" 416s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 416s pofile = self.poparse(posource) 416s unit = pofile.units[0] 416s print(bytes(pofile)) 416s assert not unit.isobsolete() 416s unit.makeobsolete() 416s > assert str(unit) == "" 416s E assert '#~ msgid "te...~ msgstr ""\n' == '' 416s E 416s E + #~ msgid "test" 416s E + #~ msgstr "" 416s 416s tests/translate/storage/test_po.py:449: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 416s ________________________ TestXWikiFullPage.test_remove _________________________ 416s 416s self = 416s 416s @mark.xfail(reason="removal not working in full page") 416s def test_remove(self): 416s > super().test_remove() 416s 416s tests/translate/storage/test_properties.py:1614: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s self = 416s 416s def test_remove(self): 416s """Tests removing a unit with a source string.""" 416s store = self.StoreClass() 416s unit = store.addsourceunit("Test String") 416s # Some storages (MO, OmegaT) serialize only translated units 416s unit.target = "Test target" 416s assert headerless_len(store.units) == 1 416s withunit = bytes(store) 416s print(withunit) 416s store.removeunit(unit) 416s assert headerless_len(store.units) == 0 416s withoutunit = bytes(store) 416s print(withoutunit) 416s > assert withoutunit != withunit 416s 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' 416s 416s tests/translate/storage/test_base.py:278: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s 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' 416s 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' 416s ________________________ TestPYPOFile.test_kde_plurals _________________________ 416s 416s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x6e6c535ffcb0> 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_kde_plurals(self): 416s """Tests kde-style plurals. (Bug: 191).""" 416s posource = r"""msgid "_n Singular\n" 416s "Plural" 416s msgstr "Een\n" 416s "Twee\n" 416s "Drie" 416s """ 416s pofile = self.poparse(posource) 416s assert len(pofile.units) == 1 416s unit = pofile.units[0] 416s > assert unit.hasplural() 416s E assert False 416s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x6e6c4b928aa0>>() 416s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x6e6c4b928aa0>> = <translate.storage.pypo.pounit object at 0x6e6c4b928aa0>.hasplural 416s 416s tests/translate/storage/test_po.py:374: AssertionError 416s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 416s 416s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x6e6c535ff3e0> 416s 416s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 416s def test_makeobsolete_untranslated(self): 416s """Tests making an untranslated unit obsolete.""" 416s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 416s pofile = self.poparse(posource) 416s unit = pofile.units[0] 416s print(bytes(pofile)) 416s assert not unit.isobsolete() 416s unit.makeobsolete() 416s > assert str(unit) == "" 416s E assert '#~ msgid "te...~ msgstr ""\n' == '' 416s E 416s E + #~ msgid "test" 416s E + #~ msgstr "" 416s 416s tests/translate/storage/test_po.py:449: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 416s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 416s 416s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x6e6c535c6cc0> 416s 416s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 416s def test_mixed_newlines_typecomment(self): 416s """Checks that mixed newlines in typecomments are properly parsed.""" 416s # This was generated by translate-tookit prior to 416s # issue that test_dos_newlines_write is covering was fixed. 416s posource = b"""#, fuzzy 416s msgid "test me"\r 416s msgstr ""\r 416s """ 416s > pofile = self.poparse(posource) 416s 416s tests/translate/storage/test_pypo.py:620: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s tests/translate/storage/test_po.py:214: in poparse 416s return self.StoreClass(dummyfile) 416s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 416s super().__init__(inputfile, **kwargs) 416s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 416s self.parse(inputfile) 416s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 416s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s parse_state = <translate.storage.poparser.ParseState object at 0x6e6c535210d0> 416s store = <translate.storage.pypo.pofile object at 0x6e6c4bc5b2f0> 416s 416s def parse_units(parse_state, store): 416s unit = parse_header(parse_state, store) 416s while unit: 416s unit.infer_state() 416s store.addunit(unit) 416s unit = parse_unit(parse_state) 416s if not parse_state.eof: 416s > raise PoParseError(parse_state) 416s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 416s 416s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 416s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 416s 416s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x6e6c53a08920> 416s 416s @pytest.mark.xfail(reason="Not Implemented") 416s def test_note_sanity(self): 416s > super().test_note_sanity() 416s 416s tests/translate/storage/test_subtitles.py:13: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x6e6c53a08920> 416s 416s def test_note_sanity(self): 416s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 416s unit = self.unit 416s 416s unit.addnote("Test note 1", origin="translator") 416s unit.addnote("Test note 2", origin="translator") 416s unit.addnote("Test note 3", origin="translator") 416s expected_notes = "Test note 1\nTest note 2\nTest note 3" 416s actual_notes = unit.getnotes(origin="translator") 416s > assert actual_notes == expected_notes 416s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 416s E 416s E - Test note 1 416s E - Test note 2 416s E - Test note 3 416s 416s tests/translate/storage/test_base.py:180: AssertionError 416s __________________________ TestCount.test_plurals_kde __________________________ 416s 416s self = <tests.translate.tools.test_pocount.TestCount object at 0x6e6c5325c9e0> 416s 416s @mark.xfail(reason="Support commented out pending removal") 416s def test_plurals_kde(self): 416s """Test that we correcly count old style KDE plurals.""" 416s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 416s 416s tests/translate/tools/test_pocount.py:91: 416s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 416s 416s source = '_n: Singular\\n\nPlural', expectedsource = 2 416s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 416s 416s @staticmethod 416s def count(source, expectedsource, target=None, expectedtarget=None): 416s """Simple helper to check the respective word counts.""" 416s poelement = po.pounit(source) 416s if target is not None: 416s poelement.target = target 416s wordssource, wordstarget = pocount.wordsinunit(poelement) 416s print( 416s 'Source (expected=%d; actual=%d): "%s"' 416s % (expectedsource, wordssource, source) 416s ) 416s > assert wordssource == expectedsource 416s E assert 3 == 2 416s 416s tests/translate/tools/test_pocount.py:33: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s Source (expected=2; actual=3): "_n: Singular\n 416s Plural" 416s _________________________ TestPOMerge.test_escape_tabs _________________________ 416s 416s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x6e6c532dd850> 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_escape_tabs(self): 416s """Ensure that input tabs are escaped in the output, like gettext does.""" 416s # The strings below contains the tab character, not spaces. 416s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 416s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 416s expectedpo = r"""msgid "First\tSecond" 416s msgstr "Eerste\tTweede" 416s """ 416s pofile = self.mergestore(templatepo, mergepo) 416s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 416s > assert bytes(pofile).decode("utf-8") == expectedpo 416s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 416s E 416s E - msgid "First\tSecond" 416s E ? ^^ 416s E + msgid "First Second" 416s E ? ^ 416s E msgstr "Eerste\tTweede" 416s 416s tests/translate/tools/test_pomerge.py:349: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s Expected: 416s msgid "First\tSecond" 416s msgstr "Eerste\tTweede" 416s 416s 416s Merged: 416s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 416s __________________ TestPretranslate.test_merging_msgid_change __________________ 416s 416s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x6e6c536fc1a0> 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_merging_msgid_change(self): 416s """ 416s tests that if the msgid changes but the location stays the same that 416s we merge. 416s """ 416s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 416s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 416s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 416s newpo = self.pretranslatepo(input_source, template_source) 416s print(bytes(newpo)) 416s > assert bytes(newpo).decode("utf-8") == poexpected 416s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 416s E 416s E #: simple.label 416s E #: simple.accesskey 416s E - #, fuzzy 416s E msgid "Its &hard coding a newline.\n" 416s E - msgstr "&Hart gekoeerde nuwe lyne\n" 416s E + msgstr "" 416s 416s tests/translate/tools/test_pretranslate.py:130: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 416s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 416s 416s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x6e6c536fc8f0> 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_merging_accelerator_changes(self): 416s """ 416s test that a change in the accelerator localtion still allows 416s merging. 416s """ 416s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 416s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 416s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 416s newpo = self.pretranslatepo(input_source, template_source) 416s print(bytes(newpo)) 416s > assert bytes(newpo).decode("utf-8") == poexpected 416s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 416s E 416s E #: someline.c 416s E msgid "A&bout" 416s E - msgstr "&Info" 416s E ? ----- 416s E + msgstr "" 416s 416s tests/translate/tools/test_pretranslate.py:185: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 416s _________________ TestPretranslate.test_lines_cut_differently __________________ 416s 416s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x6e6c536fcbf0> 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_lines_cut_differently(self): 416s """ 416s Checks that the correct formatting is preserved when pot an po lines 416s differ. 416s """ 416s input_source = ( 416s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 416s ) 416s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 416s newpo = self.pretranslatepo(input_source, template_source) 416s newpounit = self.singleunit(newpo) 416s > assert str(newpounit) == template_source 416s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 416s E 416s E #: simple.label 416s E - msgid "Line" 416s E + msgid "Line split " 416s E ? +++++++ 416s E - " split differently" 416s E ? ------- 416s E + "differently" 416s E msgstr "Lyne verskillend gesny" 416s 416s tests/translate/tools/test_pretranslate.py:199: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s #: simple.label 416s msgid "Line split " 416s "differently" 416s msgstr "Lyne verskillend gesny" 416s 416s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 416s 416s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x6e6c536fd3d0> 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_merging_msgid_change(self): 416s """ 416s tests that if the msgid changes but the location stays the same that 416s we merge. 416s """ 416s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 416s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 416s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 416s newpo = self.pretranslatepo(input_source, template_source) 416s print(bytes(newpo)) 416s > assert bytes(newpo).decode("utf-8") == poexpected 416s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 416s E 416s E #: simple.label 416s E #: simple.accesskey 416s E - #, fuzzy 416s E msgid "Its &hard coding a newline.\n" 416s E - msgstr "&Hart gekoeerde nuwe lyne\n" 416s E + msgstr "" 416s 416s tests/translate/tools/test_pretranslate.py:130: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 416s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 416s 416s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x6e6c536fc380> 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_merging_accelerator_changes(self): 416s """ 416s test that a change in the accelerator localtion still allows 416s merging. 416s """ 416s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 416s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 416s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 416s newpo = self.pretranslatepo(input_source, template_source) 416s print(bytes(newpo)) 416s > assert bytes(newpo).decode("utf-8") == poexpected 416s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 416s E 416s E #: someline.c 416s E msgid "A&bout" 416s E - msgstr "&Info" 416s E ? ----- 416s E + msgstr "" 416s 416s tests/translate/tools/test_pretranslate.py:185: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 416s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 416s 416s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x6e6c536ff0e0> 416s 416s @mark.xfail(reason="Not Implemented") 416s def test_lines_cut_differently(self): 416s """ 416s Checks that the correct formatting is preserved when pot an po lines 416s differ. 416s """ 416s input_source = ( 416s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 416s ) 416s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 416s newpo = self.pretranslatepo(input_source, template_source) 416s newpounit = self.singleunit(newpo) 416s > assert str(newpounit) == template_source 416s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 416s E 416s E #: simple.label 416s E - msgid "Line" 416s E + msgid "Line split " 416s E ? +++++++ 416s E - " split differently" 416s E ? ------- 416s E + "differently" 416s E msgstr "Lyne verskillend gesny" 416s 416s tests/translate/tools/test_pretranslate.py:199: AssertionError 416s ----------------------------- Captured stdout call ----------------------------- 416s #: simple.label 416s msgid "Line split " 416s "differently" 416s msgstr "Lyne verskillend gesny" 416s 416s =============================== warnings summary =============================== 416s tests/translate/storage/test_cpo.py:15 416s Warning: 416s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 416s ImportError('gettext PO library not found') 416s In pytest 9.1 this warning will become an error by default. 416s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 416s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 416s 416s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 416s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.wV9Ur8/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 416s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 416s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 416s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 416s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 416s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 416s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 416s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 416s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 416s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 416s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 416s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 416s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 416s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 416s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 416s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 416s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 416s Warning: Could not find accesskey for key.accesskey 416s 416s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 416s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 416s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 416s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 416s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 416s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.wV9Ur8/autopkgtest_tmp/tests/translate/convert/test.idml'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 416s Warning: unclosed file <_io.BufferedReader name='translation.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 416s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 416s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 416s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 416s Warning: Could not find accesskey for prop.accesskey 416s 416s tests/translate/convert/test_po2tmx.py: 26 warnings 416s tests/translate/filters/test_pofilter.py: 13 warnings 416s tests/translate/storage/test_tbx.py: 17 warnings 416s tests/translate/storage/test_tmx.py: 24 warnings 416s 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' 416s 416s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 416s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 416s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 416s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 416s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 416s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 416s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 416s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 416s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 416s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 416s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 416s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 416s Enable tracemalloc to get traceback where the object was allocated. 416s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 416s 417s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 417s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 417s Enable tracemalloc to get traceback where the object was allocated. 417s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 417s 417s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 417s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.wV9Ur8/autopkgtest_tmp/tests/translate/convert/test.odt'> 417s Enable tracemalloc to get traceback where the object was allocated. 417s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 417s 417s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 417s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 417s Enable tracemalloc to get traceback where the object was allocated. 417s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 417s 417s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 417s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 417s Enable tracemalloc to get traceback where the object was allocated. 417s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 417s 417s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 417s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 417s Enable tracemalloc to get traceback where the object was allocated. 417s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 417s 417s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 417s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 417s Enable tracemalloc to get traceback where the object was allocated. 417s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 417s 417s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 417s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 417s 417s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 417s Warning: DTD file '' does not validate 417s 417s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 417s --------------------------- snapshot report summary ---------------------------- 417s 23 snapshots passed. 417s =========================== short test summary info ============================ 417s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 417s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 417s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 417s SKIPPED [1] tests/translate/storage/test_mo.py:498: Skip testing command line tools 417s SKIPPED [16] tests/translate/tools/test_help.py:16: Skip testing command line tools 417s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:49: Skip testing command line tools 417s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:58: Skip testing command line tools 417s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 417s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 417s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 417s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 417s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 417s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 417s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 417s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 417s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 417s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 417s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 417s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 417s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 417s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 417s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 417s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 417s 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. 417s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 417s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 417s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 417s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 417s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 417s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 417s 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 417s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 417s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 417s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 417s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 417s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 417s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 417s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 417s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 417s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 417s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 417s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 417s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 417s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 417s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 417s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 417s ========= 3254 passed, 22 skipped, 39 xfailed, 127 warnings in 20.34s ========== 417s autopkgtest [02:04:13]: test python3-translate: -----------------------] 418s python3-translate PASS 418s autopkgtest [02:04:14]: test python3-translate: - - - - - - - - - - results - - - - - - - - - - 418s autopkgtest [02:04:14]: test python3-translate-commands: preparing testbed 420s Reading package lists... 420s Building dependency tree... 420s Reading state information... 420s Starting pkgProblemResolver with broken count: 0 420s Starting 2 pkgProblemResolver with broken count: 0 420s Done 420s The following additional packages will be installed: 420s translate-toolkit 420s Recommended packages: 420s translate-toolkit-doc 420s The following NEW packages will be installed: 420s autopkgtest-satdep translate-toolkit 420s 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. 420s Need to get 88.2 kB/89.1 kB of archives. 420s After this operation, 253 kB of additional disk space will be used. 420s Get:1 /tmp/autopkgtest.wV9Ur8/3-autopkgtest-satdep.deb autopkgtest-satdep ppc64el 0 [892 B] 420s Get:2 http://ftpmaster.internal/ubuntu oracular/universe ppc64el translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 421s Fetched 88.2 kB in 0s (313 kB/s) 421s Selecting previously unselected package translate-toolkit. 421s (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 ... 76066 files and directories currently installed.) 421s Preparing to unpack .../translate-toolkit_3.12.2-1ubuntu1_all.deb ... 421s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 421s Selecting previously unselected package autopkgtest-satdep. 421s Preparing to unpack .../3-autopkgtest-satdep.deb ... 421s Unpacking autopkgtest-satdep (0) ... 421s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 421s Setting up autopkgtest-satdep (0) ... 421s Processing triggers for man-db (2.12.1-1) ... 423s (Reading database ... 76239 files and directories currently installed.) 423s Removing autopkgtest-satdep (0) ... 424s autopkgtest [02:04:20]: test python3-translate-commands: [----------------------- 424s ============================= test session starts ============================== 424s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 424s cachedir: .pytest_cache 424s rootdir: /tmp/autopkgtest.wV9Ur8/autopkgtest_tmp 424s plugins: syrupy-4.6.1 431s collecting ... collected 3313 items / 2 skipped 431s 431s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 431s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 431s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 431s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 431s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 431s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 431s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 431s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 431s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 431s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 431s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 431s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 431s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 431s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 431s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 431s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 431s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 431s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 431s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 431s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 431s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 431s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 431s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 431s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 431s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 431s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 431s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 431s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 431s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 431s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 431s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 431s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 431s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 431s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 431s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 431s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 431s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 431s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 431s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 431s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 431s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 431s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 431s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 431s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 431s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 431s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 431s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 431s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 431s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 431s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 432s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 432s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 432s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 432s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 432s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 432s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 432s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 432s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 432s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 432s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 432s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 432s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 432s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 432s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 432s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 432s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 432s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 432s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 432s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 432s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 432s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 432s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 432s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 432s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 432s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 432s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 432s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 432s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 432s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 432s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 432s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 432s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 432s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 432s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 432s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 432s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 432s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 432s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 432s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 432s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 432s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 432s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 432s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 432s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 433s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 433s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 433s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 433s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 433s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 433s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 433s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 433s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 433s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 433s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 433s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 433s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 433s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 433s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 433s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 433s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 433s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 433s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 433s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 433s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 433s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 433s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 433s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 434s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 434s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 434s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 434s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 434s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 434s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 434s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 434s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 434s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 434s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 434s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 434s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 434s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 434s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 434s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 434s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 434s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 434s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 434s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 434s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 434s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 434s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 434s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 434s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 434s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 434s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 434s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 434s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 434s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 434s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 434s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 434s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 434s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 434s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 434s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 434s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 434s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 434s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 434s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 434s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 434s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 434s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 434s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 434s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 434s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 434s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 434s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 434s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 434s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 434s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 434s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 434s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 434s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 434s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 434s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 434s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 434s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 434s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 434s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 434s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 434s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 434s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 434s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 434s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 434s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 434s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 434s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 435s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 435s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 435s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 435s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 435s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 435s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 435s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 435s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 435s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 435s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 435s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 435s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 435s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 435s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 435s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 435s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 435s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 435s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 435s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 435s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 435s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 435s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 435s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 435s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 435s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 436s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 436s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 436s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 436s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 436s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 436s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 436s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 436s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 436s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 436s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 436s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 436s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 436s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 436s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 436s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 436s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 436s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 436s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 436s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 436s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 436s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 436s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 436s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 436s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 436s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 436s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 436s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 436s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 436s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 436s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 436s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 436s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 436s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 436s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 436s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 436s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 436s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 436s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 436s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 436s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 436s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 436s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 436s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 436s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 436s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 436s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 436s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 436s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 436s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 436s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 436s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 436s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 436s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 436s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 436s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 436s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 436s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 436s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 436s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 436s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 436s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 436s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 436s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 436s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 436s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 436s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 436s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 436s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 436s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 436s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 436s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 436s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 436s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 436s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 436s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 436s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 436s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 436s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 436s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 436s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 436s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 436s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 436s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 436s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 436s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 436s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 436s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 436s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 436s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 436s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 436s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 436s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 436s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 436s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 436s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 436s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 436s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 436s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 437s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 437s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 437s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 437s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 437s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 437s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 437s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 437s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 437s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 437s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 437s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 437s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 437s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 437s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 437s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 437s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 437s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 437s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 437s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 437s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 437s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 437s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 437s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 437s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 437s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 437s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 437s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 437s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 437s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 437s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 437s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 437s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 437s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 437s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 437s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 437s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 437s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 437s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 437s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 437s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 437s tests/translate/storage/test_mo.py::TestMOFile::test_output PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 437s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 437s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 437s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 437s 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%] 437s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 437s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 437s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 437s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 437s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 437s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 437s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 437s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 437s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 437s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 437s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 437s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 437s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 437s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 438s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 438s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 438s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 438s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 438s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 438s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 438s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 438s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 438s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 438s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 438s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 438s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 438s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 438s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 438s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 438s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 438s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 438s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 439s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 439s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 439s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 439s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 439s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 439s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 439s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 439s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 439s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 439s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 439s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 439s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 439s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 439s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 439s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 439s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 439s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 440s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 440s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 440s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 440s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 440s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 440s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 440s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 440s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 440s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 440s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 440s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 440s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 440s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 440s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 440s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 440s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 440s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 441s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 441s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 441s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 441s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 441s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 441s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 441s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 441s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 441s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 441s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 441s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 441s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 441s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 441s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 441s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 441s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 441s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 441s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 441s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 441s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 441s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 441s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 441s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 441s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 441s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 441s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 441s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 441s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 442s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 442s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 442s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 443s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 443s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 443s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 443s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 443s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 443s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 443s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 443s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 443s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 443s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 443s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 443s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[build_tmdb] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[phppo2pypo] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[poclean] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[pocompile] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[poconflicts] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[pocount] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[podebug] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[pogrep] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[pomerge] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[porestructure] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[posegment] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[poswap] PASSED [ 94%] 443s tests/translate/tools/test_help.py::test_help[poterminology] PASSED [ 95%] 444s tests/translate/tools/test_help.py::test_help[pretranslate] PASSED [ 95%] 444s tests/translate/tools/test_help.py::test_help[pydiff] PASSED [ 95%] 444s tests/translate/tools/test_help.py::test_help[pypo2phppo] PASSED [ 95%] 444s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 444s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 444s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 444s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 444s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 444s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 444s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 444s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 444s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 444s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 444s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 444s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 444s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 444s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 444s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 444s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 444s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 445s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 445s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 445s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 445s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 445s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 445s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 445s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff PASSED [ 99%] 445s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff PASSED [100%] 445s 445s ================================== XFAILURES =================================== 445s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 445s 445s self = <tests.translate.convert.test_dtd2po.TestDTD2PO object at 0x7fdafe4a6a50> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_accelerator_keys_not_in_sentence(self): 445s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 445s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 445s <!ENTITY useAutoScroll.accesskey "a">""" 445s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 445s <!ENTITY useAutoScroll.accesskey "a">""" 445s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 445s print(pofile) 445s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 445s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 445s 445s tests/translate/convert/test_dtd2po.py:348: AttributeError 445s ----------------------------- Captured stdout call ----------------------------- 445s <translate.storage.pypo.pofile object at 0x7fdafb843860> 445s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 445s 445s self = <tests.translate.convert.test_dtd2po.TestDTD2POCommand object at 0x7fdafe4af470> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_accelerator_keys_not_in_sentence(self): 445s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 445s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 445s <!ENTITY useAutoScroll.accesskey "a">""" 445s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 445s <!ENTITY useAutoScroll.accesskey "a">""" 445s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 445s print(pofile) 445s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 445s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 445s 445s tests/translate/convert/test_dtd2po.py:348: AttributeError 445s ----------------------------- Captured stdout call ----------------------------- 445s <translate.storage.pypo.pofile object at 0x7fdafb8420f0> 445s ________________ TestPO2Php.test_merging_propertyless_template _________________ 445s 445s self = <tests.translate.convert.test_po2php.TestPO2Php object at 0x7fdafd9f3aa0> 445s 445s @mark.xfail(reason="Need to review if we want this behaviour") 445s def test_merging_propertyless_template(self): 445s """Check that when merging with a template with no property values that we copy the template.""" 445s posource = "" 445s proptemplate = "# A comment\n" 445s propexpected = proptemplate 445s > propfile = self.merge2prop(proptemplate, posource) 445s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 445s 445s tests/translate/convert/test_po2php.py:386: AttributeError 445s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 445s 445s self = <tests.translate.convert.test_po2php.TestPO2PhpCommand object at 0x7fdafda39100> 445s 445s @mark.xfail(reason="Need to review if we want this behaviour") 445s def test_merging_propertyless_template(self): 445s """Check that when merging with a template with no property values that we copy the template.""" 445s posource = "" 445s proptemplate = "# A comment\n" 445s propexpected = proptemplate 445s > propfile = self.merge2prop(proptemplate, posource) 445s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 445s 445s tests/translate/convert/test_po2php.py:386: AttributeError 445s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 445s 445s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7fdafd3b2480> 445s 445s @mark.xfail(reason="Not implemented - review if this is even correct") 445s def test_merging_msgid_change(self): 445s """Tests that if the msgid changes but the location stays the same that we merge.""" 445s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 445s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 445s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 445s newpo = self.convertpot(potsource, posource) 445s print(newpo) 445s > assert str(self.singleunit(newpo)) == poexpected 445s 445s tests/translate/convert/test_pot2po.py:121: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s pofile = <translate.storage.pypo.pofile object at 0x7fdafd29b5f0> 445s 445s @staticmethod 445s def singleunit(pofile): 445s """Checks that the pofile contains a single non-header unit, and returns it.""" 445s > assert len(pofile.units) == 2 445s E assert 3 == 2 445s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7fdafc67ffb0>, <translate.storage.pypo.pounit object at 0x7fdafc67f650>, <translate.storage.pypo.pounit object at 0x7fdafc67f050>]) 445s E + where [<translate.storage.pypo.pounit object at 0x7fdafc67ffb0>, <translate.storage.pypo.pounit object at 0x7fdafc67f650>, <translate.storage.pypo.pounit object at 0x7fdafc67f050>] = <translate.storage.pypo.pofile object at 0x7fdafd29b5f0>.units 445s 445s tests/translate/convert/test_pot2po.py:25: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s <translate.storage.pypo.pofile object at 0x7fdafd29b5f0> 445s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 445s 445s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7fdafd3b2750> 445s 445s @mark.xfail(reason="Not Implemented - needs review") 445s def test_merging_accelerator_changes(self): 445s """Test that a change in the accelerator localtion still allows merging.""" 445s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 445s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 445s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 445s newpo = self.convertpot(potsource, posource) 445s print(newpo) 445s > assert str(self.singleunit(newpo)) == poexpected 445s 445s tests/translate/convert/test_pot2po.py:190: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s pofile = <translate.storage.pypo.pofile object at 0x7fdafbef9a90> 445s 445s @staticmethod 445s def singleunit(pofile): 445s """Checks that the pofile contains a single non-header unit, and returns it.""" 445s > assert len(pofile.units) == 2 445s E assert 3 == 2 445s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7fdafbefaed0>, <translate.storage.pypo.pounit object at 0x7fdafbefb860>, <translate.storage.pypo.pounit object at 0x7fdafbefb800>]) 445s E + where [<translate.storage.pypo.pounit object at 0x7fdafbefaed0>, <translate.storage.pypo.pounit object at 0x7fdafbefb860>, <translate.storage.pypo.pounit object at 0x7fdafbefb800>] = <translate.storage.pypo.pofile object at 0x7fdafbef9a90>.units 445s 445s tests/translate/convert/test_pot2po.py:25: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s <translate.storage.pypo.pofile object at 0x7fdafbef9a90> 445s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 445s 445s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7fdafd3b28d0> 445s 445s @mark.xfail(reason="Not Implemented - review if this is even correct") 445s def test_lines_cut_differently(self): 445s """Checks that the correct formatting is preserved when pot an po lines differ.""" 445s potsource = ( 445s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 445s ) 445s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 445s newpo = self.convertpot(potsource, posource) 445s newpounit = self.singleunit(newpo) 445s > assert str(newpounit) == posource 445s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 445s E 445s E #: simple.label 445s E - msgid "Line" 445s E + msgid "Line split " 445s E ? +++++++ 445s E - " split differently" 445s E ? ------- 445s E + "differently" 445s E msgstr "Lyne verskillend gesny" 445s 445s tests/translate/convert/test_pot2po.py:201: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s #: simple.label 445s msgid "Line split " 445s "differently" 445s msgstr "Lyne verskillend gesny" 445s 445s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 445s 445s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7fdafcfd8ce0> 445s 445s @mark.xfail(reason="Not implemented - review if this is even correct") 445s def test_merging_msgid_change(self): 445s """Tests that if the msgid changes but the location stays the same that we merge.""" 445s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 445s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 445s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 445s newpo = self.convertpot(potsource, posource) 445s print(newpo) 445s > assert str(self.singleunit(newpo)) == poexpected 445s 445s tests/translate/convert/test_pot2po.py:121: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s pofile = <translate.storage.pypo.pofile object at 0x7fdafd3a13d0> 445s 445s @staticmethod 445s def singleunit(pofile): 445s """Checks that the pofile contains a single non-header unit, and returns it.""" 445s > assert len(pofile.units) == 2 445s E assert 3 == 2 445s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7fdafc684710>, <translate.storage.pypo.pounit object at 0x7fdafc6864b0>, <translate.storage.pypo.pounit object at 0x7fdafc67ffb0>]) 445s E + where [<translate.storage.pypo.pounit object at 0x7fdafc684710>, <translate.storage.pypo.pounit object at 0x7fdafc6864b0>, <translate.storage.pypo.pounit object at 0x7fdafc67ffb0>] = <translate.storage.pypo.pofile object at 0x7fdafd3a13d0>.units 445s 445s tests/translate/convert/test_pot2po.py:25: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s <translate.storage.pypo.pofile object at 0x7fdafd3a13d0> 445s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 445s 445s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7fdafcfd93a0> 445s 445s @mark.xfail(reason="Not Implemented - needs review") 445s def test_merging_accelerator_changes(self): 445s """Test that a change in the accelerator localtion still allows merging.""" 445s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 445s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 445s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 445s newpo = self.convertpot(potsource, posource) 445s print(newpo) 445s > assert str(self.singleunit(newpo)) == poexpected 445s 445s tests/translate/convert/test_pot2po.py:190: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s pofile = <translate.storage.pypo.pofile object at 0x7fdafd3b2810> 445s 445s @staticmethod 445s def singleunit(pofile): 445s """Checks that the pofile contains a single non-header unit, and returns it.""" 445s > assert len(pofile.units) == 2 445s E assert 3 == 2 445s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7fdafbef9d30>, <translate.storage.pypo.pounit object at 0x7fdafbef8b60>, <translate.storage.pypo.pounit object at 0x7fdafbef8d10>]) 445s E + where [<translate.storage.pypo.pounit object at 0x7fdafbef9d30>, <translate.storage.pypo.pounit object at 0x7fdafbef8b60>, <translate.storage.pypo.pounit object at 0x7fdafbef8d10>] = <translate.storage.pypo.pofile object at 0x7fdafd3b2810>.units 445s 445s tests/translate/convert/test_pot2po.py:25: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s <translate.storage.pypo.pofile object at 0x7fdafd3b2810> 445s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 445s 445s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7fdafcfd9550> 445s 445s @mark.xfail(reason="Not Implemented - review if this is even correct") 445s def test_lines_cut_differently(self): 445s """Checks that the correct formatting is preserved when pot an po lines differ.""" 445s potsource = ( 445s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 445s ) 445s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 445s newpo = self.convertpot(potsource, posource) 445s newpounit = self.singleunit(newpo) 445s > assert str(newpounit) == posource 445s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 445s E 445s E #: simple.label 445s E - msgid "Line" 445s E + msgid "Line split " 445s E ? +++++++ 445s E - " split differently" 445s E ? ------- 445s E + "differently" 445s E msgstr "Lyne verskillend gesny" 445s 445s tests/translate/convert/test_pot2po.py:201: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s #: simple.label 445s msgid "Line split " 445s "differently" 445s msgstr "Lyne verskillend gesny" 445s 445s ________________________ TestYAML2PO.test_no_duplicates ________________________ 445s 445s self = <translate.storage.yaml.YAMLFile object at 0x7fdafbdd0260> 445s input = '\nfoo: bar\nfoo: baz\n' 445s 445s def parse(self, input): 445s """Parse the given file or file source string.""" 445s if hasattr(input, "name"): 445s self.filename = input.name 445s elif not getattr(self, "filename", ""): 445s self.filename = "" 445s if hasattr(input, "read"): 445s src = input.read() 445s input.close() 445s input = src 445s if isinstance(input, bytes): 445s input = input.decode("utf-8") 445s try: 445s > self._original = self.yaml.load(input) 445s 445s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 445s return constructor.get_single_data() 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 445s return self.construct_document(node) 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 445s for _dummy in generator: 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 445s self.construct_mapping(node, data, deep=True) 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 445s if self.check_mapping_key(node, key_node, maptyp, key, value): 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x7fdafbdd0080> 445s 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'))]) 445s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 445s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 445s 445s def check_mapping_key(self, node, key_node, mapping, key, value): 445s # type: (Any, Any, Any, Any, Any) -> bool 445s """return True if key is unique""" 445s if key in mapping: 445s if not self.allow_duplicate_keys: 445s mk = mapping.get(key) 445s args = [ 445s 'while constructing a mapping', 445s node.start_mark, 445s 'found duplicate key "{}" with value "{}" ' 445s '(original value: "{}")'.format(key, value, mk), 445s key_node.start_mark, 445s """ 445s To suppress this check see: 445s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 445s """, 445s """\ 445s Duplicate keys will become an error in future releases, and are errors 445s by default when using the new API. 445s """, 445s ] 445s if self.allow_duplicate_keys is None: 445s warnings.warn(DuplicateKeyFutureWarning(*args)) 445s else: 445s > raise DuplicateKeyError(*args) 445s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 445s E in "<unicode string>", line 2, column 1: 445s E foo: bar 445s E ^ (line: 2) 445s E found duplicate key "foo" with value "baz" (original value: "bar") 445s E in "<unicode string>", line 3, column 1: 445s E foo: baz 445s E ^ (line: 3) 445s E 445s E To suppress this check see: 445s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 445s 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 445s 445s During handling of the above exception, another exception occurred: 445s 445s self = <tests.translate.convert.test_yaml2po.TestYAML2PO object at 0x7fdafd49ca40> 445s 445s @pytest.mark.xfail(reason="This is invalid YAML document") 445s def test_no_duplicates(self): 445s """Check converting drops duplicates.""" 445s input_string = """ 445s foo: bar 445s foo: baz 445s """ 445s > target_store = self._convert_to_store(input_string) 445s 445s tests/translate/convert/test_yaml2po.py:112: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 445s return self._convert(*args, **kwargs)[0] 445s tests/translate/convert/test_yaml2po.py:28: in _convert 445s converter = self.ConverterClass( 445s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 445s self.source_store = self.SourceStoreClass(input_file) 445s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 445s self.parse(inputfile) 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s self = <translate.storage.yaml.YAMLFile object at 0x7fdafbdd0260> 445s input = '\nfoo: bar\nfoo: baz\n' 445s 445s def parse(self, input): 445s """Parse the given file or file source string.""" 445s if hasattr(input, "name"): 445s self.filename = input.name 445s elif not getattr(self, "filename", ""): 445s self.filename = "" 445s if hasattr(input, "read"): 445s src = input.read() 445s input.close() 445s input = src 445s if isinstance(input, bytes): 445s input = input.decode("utf-8") 445s try: 445s self._original = self.yaml.load(input) 445s except YAMLError as e: 445s message = getattr(e, "problem", getattr(e, "message", str(e))) 445s if hasattr(e, "problem_mark"): 445s message += f" {e.problem_mark}" 445s > raise base.ParseError(message) 445s 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)' 445s 445s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 445s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 445s 445s self = <translate.storage.yaml.YAMLFile object at 0x7fdafc655100> 445s input = '\nfoo: bar\nfoo: baz\n' 445s 445s def parse(self, input): 445s """Parse the given file or file source string.""" 445s if hasattr(input, "name"): 445s self.filename = input.name 445s elif not getattr(self, "filename", ""): 445s self.filename = "" 445s if hasattr(input, "read"): 445s src = input.read() 445s input.close() 445s input = src 445s if isinstance(input, bytes): 445s input = input.decode("utf-8") 445s try: 445s > self._original = self.yaml.load(input) 445s 445s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 445s return constructor.get_single_data() 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 445s return self.construct_document(node) 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 445s for _dummy in generator: 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 445s self.construct_mapping(node, data, deep=True) 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 445s if self.check_mapping_key(node, key_node, maptyp, key, value): 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x7fdafc654800> 445s 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'))]) 445s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 445s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 445s 445s def check_mapping_key(self, node, key_node, mapping, key, value): 445s # type: (Any, Any, Any, Any, Any) -> bool 445s """return True if key is unique""" 445s if key in mapping: 445s if not self.allow_duplicate_keys: 445s mk = mapping.get(key) 445s args = [ 445s 'while constructing a mapping', 445s node.start_mark, 445s 'found duplicate key "{}" with value "{}" ' 445s '(original value: "{}")'.format(key, value, mk), 445s key_node.start_mark, 445s """ 445s To suppress this check see: 445s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 445s """, 445s """\ 445s Duplicate keys will become an error in future releases, and are errors 445s by default when using the new API. 445s """, 445s ] 445s if self.allow_duplicate_keys is None: 445s warnings.warn(DuplicateKeyFutureWarning(*args)) 445s else: 445s > raise DuplicateKeyError(*args) 445s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 445s E in "<unicode string>", line 2, column 1: 445s E foo: bar 445s E ^ (line: 2) 445s E found duplicate key "foo" with value "baz" (original value: "bar") 445s E in "<unicode string>", line 3, column 1: 445s E foo: baz 445s E ^ (line: 3) 445s E 445s E To suppress this check see: 445s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 445s 445s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 445s 445s During handling of the above exception, another exception occurred: 445s 445s self = <tests.translate.convert.test_yaml2po.TestYAML2POCommand object at 0x7fdafd49e4b0> 445s 445s @pytest.mark.xfail(reason="This is invalid YAML document") 445s def test_no_duplicates(self): 445s """Check converting drops duplicates.""" 445s input_string = """ 445s foo: bar 445s foo: baz 445s """ 445s > target_store = self._convert_to_store(input_string) 445s 445s tests/translate/convert/test_yaml2po.py:112: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 445s return self._convert(*args, **kwargs)[0] 445s tests/translate/convert/test_yaml2po.py:28: in _convert 445s converter = self.ConverterClass( 445s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 445s self.source_store = self.SourceStoreClass(input_file) 445s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 445s self.parse(inputfile) 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s self = <translate.storage.yaml.YAMLFile object at 0x7fdafc655100> 445s input = '\nfoo: bar\nfoo: baz\n' 445s 445s def parse(self, input): 445s """Parse the given file or file source string.""" 445s if hasattr(input, "name"): 445s self.filename = input.name 445s elif not getattr(self, "filename", ""): 445s self.filename = "" 445s if hasattr(input, "read"): 445s src = input.read() 445s input.close() 445s input = src 445s if isinstance(input, bytes): 445s input = input.decode("utf-8") 445s try: 445s self._original = self.yaml.load(input) 445s except YAMLError as e: 445s message = getattr(e, "problem", getattr(e, "message", str(e))) 445s if hasattr(e, "problem_mark"): 445s message += f" {e.problem_mark}" 445s > raise base.ParseError(message) 445s 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)' 445s 445s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 445s __________________________ test_acceleratedvariables ___________________________ 445s 445s @mark.xfail(reason="Accelerated variables needs a better implementation") 445s def test_acceleratedvariables(): 445s """Test for accelerated variables.""" 445s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 445s mozillachecker = checks.MozillaChecker() 445s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 445s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 445s 445s tests/translate/filters/test_checks.py:206: AttributeError 445s ___________________________ test_musttranslatewords ____________________________ 445s 445s @mark.xfail(reason="FIXME: All fails() tests are not working") 445s def test_musttranslatewords(): 445s """Tests stopwords.""" 445s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 445s assert passes( 445s stdchecker.musttranslatewords, 445s "This uses Mozilla of course", 445s "hierdie gebruik le mozille natuurlik", 445s ) 445s stdchecker = checks.StandardChecker( 445s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 445s ) 445s assert passes( 445s stdchecker.musttranslatewords, 445s "This uses Mozilla of course", 445s "hierdie gebruik le mozille natuurlik", 445s ) 445s > assert fails( 445s stdchecker.musttranslatewords, 445s "This uses Mozilla of course", 445s "hierdie gebruik Mozilla natuurlik", 445s ) 445s E AssertionError: assert False 445s E + where False = fails(<bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x7fdafbfefc80>>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 445s E + where <bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x7fdafbfefc80>> = <translate.filters.checks.StandardChecker object at 0x7fdafbfefc80>.musttranslatewords 445s 445s tests/translate/filters/test_checks.py:612: AssertionError 445s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 445s 445s @mark.xfail(reason="Bug #3408") 445s def test_persian_single_and_double_quote_fail_at_the_same_time(): 445s """Test Persian single and double quote failures in string with single quotes.""" 445s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 445s 445s # With single quote check. 445s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 445s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 445s E assert False 445s E + where False = fails(<bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x7fdafc62e240>>, "Path: '%S'", 'مسیر: "%S"\u200e') 445s E + where <bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x7fdafc62e240>> = <translate.filters.checks.StandardChecker object at 0x7fdafc62e240>.singlequoting 445s 445s tests/translate/filters/test_checks.py:1271: AssertionError 445s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 445s 445s @mark.xfail(reason="Bug #3506") 445s def test_bengali_mozilla_inverted_xmltags(): 445s """Test Bengali Mozilla XML tags.""" 445s bn_mozilla_checker = checks.MozillaChecker( 445s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 445s ) 445s 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.""" 445s str_bn = """এর প্রচলন ঘটাতে আমরা <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> প্রতিষ্ঠায় <a href="%(cofound_url)s" rel="external">সহযোগী</a> ছিলাম।ন।""" 445s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 445s E assert False 445s E + where False = passes(<bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x7fdafbf8bef0>>, '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> ছিলাম।ন।') 445s E + where <bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x7fdafbf8bef0>> = <translate.filters.checks.MozillaChecker object at 0x7fdafbf8bef0>.xmltags 445s 445s tests/translate/filters/test_checks.py:2065: AssertionError 445s _______________________________ test_word_khmer ________________________________ 445s 445s @mark.xfail( 445s reason="ZWS is not considered a space in Python 2.6+. Khmer " 445s "should extend words() to include \\u200b in addition to " 445s "other word breakers." 445s ) 445s def test_word_khmer(): 445s language = common.Common 445s # Let's test Khmer with zero width space (\u200b) 445s words = language.words("ផ្ដល់\u200bយោបល់") 445s print("ផ្ដល់\u200bយោបល់") 445s print(language.words("ផ្ដល់<200b>យោបល់")) 445s print(["ផ្ដល់", "យោបល់"]) 445s > assert words == ["ផ្ដល់", "យោបល់"] 445s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 445s E 445s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 445s E Right contains one more item: 'យោបល់' 445s E 445s E Full diff: 445s E [ 445s E + 'ផ្ដល់\u200bយោបល់',... 445s E 445s E ...Full output truncated (3 lines hidden), use '-vv' to show 445s 445s tests/translate/lang/test_common.py:47: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s ផ្ដល់​យោបល់ 445s ['ផ្ដល់<200b>យោបល់'] 445s ['ផ្ដល់', 'យោបល់'] 445s __________________ TestConverters.test_to_general_placeables ___________________ 445s 445s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x7fdafb106030> 445s 445s @mark.xfail(reason="Test needs fixing, disabled for now") 445s def test_to_general_placeables(self): 445s basetree = base.to_base_placeables(self.elem) 445s gentree = general.to_general_placeables(basetree) 445s > assert gentree == self.elem 445s E assert <StringElem([...(['</a>'])>])> == <StringElem([...(['</a>'])>])> 445s E 445s E Full diff: 445s E - <StringElem([<StringElem(['Ģët '])>, <XMLTagPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 445s E ? ^^^ 445s E + <StringElem([<StringElem(['Ģët '])>, <XMLEntityPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 445s E ? ^^^^^^ 445s 445s tests/translate/storage/placeables/test_base.py:210: AssertionError 445s ___________________ TestConverters.test_to_xliff_placeables ____________________ 445s 445s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x7fdafb1063f0> 445s 445s @mark.xfail(reason="Test needs fixing, disabled for now") 445s def test_to_xliff_placeables(self): 445s basetree = base.to_base_placeables(self.elem) 445s xliff_from_base = xliff.to_xliff_placeables(basetree) 445s > assert str(xliff_from_base) != str(self.elem) 445s 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>' 445s 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>'])>])>) 445s 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>'])>])>) 445s 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 0x7fdafb1063f0>.elem 445s 445s tests/translate/storage/placeables/test_base.py:216: AssertionError 445s _____________________ test_quotefordtd_unimplemented_cases _____________________ 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_quotefordtd_unimplemented_cases(): 445s """Test unimplemented quoting DTD cases.""" 445s > assert dtd.quotefordtd("Between <p> and </p>") == ( 445s '"Between <p> and </p>"' 445s ) 445s E assert '"Between <p> and </p>"' == '"Between <...d </p>"' 445s E 445s E - "Between <p> and </p>" 445s E + "Between <p> and </p>" 445s 445s tests/translate/storage/test_dtd.py:72: AssertionError 445s ___________________ test_unquotefromdtd_unimplemented_cases ____________________ 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_unquotefromdtd_unimplemented_cases(): 445s """Test unimplemented unquoting DTD cases.""" 445s > assert dtd.unquotefromdtd('"<p> and </p>"') == "<p> and </p>" 445s E AssertionError: assert '<p> and </p>' == '<p> and </p>' 445s E 445s E - <p> and </p> 445s E + <p> and </p> 445s 445s tests/translate/storage/test_dtd.py:103: AssertionError 445s ________________________ TestDTD.test_comment_following ________________________ 445s 445s self = <tests.translate.storage.test_dtd.TestDTD object at 0x7fdafc5b5790> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_comment_following(self): 445s """Check that comments that appear after and entity are not pushed onto another line.""" 445s dtdsource = '<!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards -->' 445s dtdregen = self.dtdregen(dtdsource) 445s > assert dtdsource == dtdregen 445s E assert '<!ENTITY tex...keyboards -->' == '<!-- + is ab...dkey2 "="> \n' 445s E 445s E + <!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards --> 445s E - <!-- + is above this key on many keyboards --> 445s E - <!ENTITY textZoomEnlargeCmd.commandkey2 "="> 445s 445s tests/translate/storage/test_dtd.py:344: AssertionError 445s _________________________ TestDTD.test_invalid_quoting _________________________ 445s 445s self = <tests.translate.storage.test_dtd.TestDTD object at 0x7fdafc5b5e20> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_invalid_quoting(self): 445s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 445s # TODO: we should rather raise an error 445s dtdsource = '<!ENTITY test.me "bananas for sale""room">\n' 445s assert ( 445s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 445s ) 445s dtdfile = self.dtdparse(dtdsource) 445s assert len(dtdfile.units) == 1 445s dtdunit = dtdfile.units[0] 445s assert dtdunit.definition == '"bananas for sale"' 445s > assert bytes(dtdfile) == b'<!ENTITY test.me "bananas for sale">\n' 445s E assert b'' == b'<!ENTITY te... for sale">\n' 445s E 445s E Full diff: 445s E - (b'<!ENTITY test.me "bananas for sale">\n') 445s E + b'' 445s 445s tests/translate/storage/test_dtd.py:364: AssertionError 445s __________________________ TestOtFile.test_extensions __________________________ 445s 445s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x7fdafb5c8410> 445s 445s @mark.xfail( 445s reason="This doesn't work, due to two store classes handling different " 445s "extensions, but factory listing it as one supported file type" 445s ) 445s def test_extensions(self): 445s > super().test_extensions() 445s 445s tests/translate/storage/test_omegat.py:20: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x7fdafb5c8410> 445s 445s def test_extensions(self): 445s """Test that the factory knows the extensions for this class.""" 445s supported = factory.supported_files() 445s supported_dict = { 445s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 445s } 445s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 445s return 445s detail = supported_dict[ 445s self.StoreClass.Name 445s ] # will start to get problematic once translated 445s print("Factory:", detail[0]) 445s print("StoreClass:", self.StoreClass.Extensions) 445s for ext in detail[0]: 445s > assert ext in self.StoreClass.Extensions 445s E AssertionError: assert 'tab' in ['utf8'] 445s E + where ['utf8'] = <class 'translate.storage.omegat.OmegaTFile'>.Extensions 445s E + where <class 'translate.storage.omegat.OmegaTFile'> = <tests.translate.storage.test_omegat.TestOtFile object at 0x7fdafb5c8410>.StoreClass 445s 445s tests/translate/storage/test_base.py:386: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s Factory: ['utf8', 'tab'] 445s StoreClass: ['utf8'] 445s _________________________ TestPOFile.test_kde_plurals __________________________ 445s 445s self = <tests.translate.storage.test_po.TestPOFile object at 0x7fdafb59d4c0> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_kde_plurals(self): 445s """Tests kde-style plurals. (Bug: 191).""" 445s posource = r"""msgid "_n Singular\n" 445s "Plural" 445s msgstr "Een\n" 445s "Twee\n" 445s "Drie" 445s """ 445s pofile = self.poparse(posource) 445s assert len(pofile.units) == 1 445s unit = pofile.units[0] 445s > assert unit.hasplural() 445s E assert False 445s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7fdafbe09280>>() 445s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7fdafbe09280>> = <translate.storage.pypo.pounit object at 0x7fdafbe09280>.hasplural 445s 445s tests/translate/storage/test_po.py:374: AssertionError 445s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 445s 445s self = <tests.translate.storage.test_po.TestPOFile object at 0x7fdafb59db20> 445s 445s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 445s def test_makeobsolete_untranslated(self): 445s """Tests making an untranslated unit obsolete.""" 445s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 445s pofile = self.poparse(posource) 445s unit = pofile.units[0] 445s print(bytes(pofile)) 445s assert not unit.isobsolete() 445s unit.makeobsolete() 445s > assert str(unit) == "" 445s E assert '#~ msgid "te...~ msgstr ""\n' == '' 445s E 445s E + #~ msgid "test" 445s E + #~ msgstr "" 445s 445s tests/translate/storage/test_po.py:449: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 445s ________________________ TestXWikiFullPage.test_remove _________________________ 445s 445s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x7fdafb3f94f0> 445s 445s @mark.xfail(reason="removal not working in full page") 445s def test_remove(self): 445s > super().test_remove() 445s 445s tests/translate/storage/test_properties.py:1614: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x7fdafb3f94f0> 445s 445s def test_remove(self): 445s """Tests removing a unit with a source string.""" 445s store = self.StoreClass() 445s unit = store.addsourceunit("Test String") 445s # Some storages (MO, OmegaT) serialize only translated units 445s unit.target = "Test target" 445s assert headerless_len(store.units) == 1 445s withunit = bytes(store) 445s print(withunit) 445s store.removeunit(unit) 445s assert headerless_len(store.units) == 0 445s withoutunit = bytes(store) 445s print(withoutunit) 445s > assert withoutunit != withunit 445s 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' 445s 445s tests/translate/storage/test_base.py:278: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s 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' 445s 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' 445s ________________________ TestPYPOFile.test_kde_plurals _________________________ 445s 445s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7fdafb3faae0> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_kde_plurals(self): 445s """Tests kde-style plurals. (Bug: 191).""" 445s posource = r"""msgid "_n Singular\n" 445s "Plural" 445s msgstr "Een\n" 445s "Twee\n" 445s "Drie" 445s """ 445s pofile = self.poparse(posource) 445s assert len(pofile.units) == 1 445s unit = pofile.units[0] 445s > assert unit.hasplural() 445s E assert False 445s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7fdaf8730d10>>() 445s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7fdaf8730d10>> = <translate.storage.pypo.pounit object at 0x7fdaf8730d10>.hasplural 445s 445s tests/translate/storage/test_po.py:374: AssertionError 445s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 445s 445s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7fdafb3fb5c0> 445s 445s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 445s def test_makeobsolete_untranslated(self): 445s """Tests making an untranslated unit obsolete.""" 445s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 445s pofile = self.poparse(posource) 445s unit = pofile.units[0] 445s print(bytes(pofile)) 445s assert not unit.isobsolete() 445s unit.makeobsolete() 445s > assert str(unit) == "" 445s E assert '#~ msgid "te...~ msgstr ""\n' == '' 445s E 445s E + #~ msgid "test" 445s E + #~ msgstr "" 445s 445s tests/translate/storage/test_po.py:449: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 445s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 445s 445s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7fdafb5ba150> 445s 445s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 445s def test_mixed_newlines_typecomment(self): 445s """Checks that mixed newlines in typecomments are properly parsed.""" 445s # This was generated by translate-tookit prior to 445s # issue that test_dos_newlines_write is covering was fixed. 445s posource = b"""#, fuzzy 445s msgid "test me"\r 445s msgstr ""\r 445s """ 445s > pofile = self.poparse(posource) 445s 445s tests/translate/storage/test_pypo.py:620: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s tests/translate/storage/test_po.py:214: in poparse 445s return self.StoreClass(dummyfile) 445s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 445s super().__init__(inputfile, **kwargs) 445s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 445s self.parse(inputfile) 445s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 445s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s parse_state = <translate.storage.poparser.ParseState object at 0x7fdafa7a0fb0> 445s store = <translate.storage.pypo.pofile object at 0x7fdafa7a01a0> 445s 445s def parse_units(parse_state, store): 445s unit = parse_header(parse_state, store) 445s while unit: 445s unit.infer_state() 445s store.addunit(unit) 445s unit = parse_unit(parse_state) 445s if not parse_state.eof: 445s > raise PoParseError(parse_state) 445s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 445s 445s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 445s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 445s 445s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7fdafb34c830> 445s 445s @pytest.mark.xfail(reason="Not Implemented") 445s def test_note_sanity(self): 445s > super().test_note_sanity() 445s 445s tests/translate/storage/test_subtitles.py:13: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7fdafb34c830> 445s 445s def test_note_sanity(self): 445s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 445s unit = self.unit 445s 445s unit.addnote("Test note 1", origin="translator") 445s unit.addnote("Test note 2", origin="translator") 445s unit.addnote("Test note 3", origin="translator") 445s expected_notes = "Test note 1\nTest note 2\nTest note 3" 445s actual_notes = unit.getnotes(origin="translator") 445s > assert actual_notes == expected_notes 445s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 445s E 445s E - Test note 1 445s E - Test note 2 445s E - Test note 3 445s 445s tests/translate/storage/test_base.py:180: AssertionError 445s __________________________ TestCount.test_plurals_kde __________________________ 445s 445s self = <tests.translate.tools.test_pocount.TestCount object at 0x7fdafc0b8e30> 445s 445s @mark.xfail(reason="Support commented out pending removal") 445s def test_plurals_kde(self): 445s """Test that we correcly count old style KDE plurals.""" 445s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 445s 445s tests/translate/tools/test_pocount.py:91: 445s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 445s 445s source = '_n: Singular\\n\nPlural', expectedsource = 2 445s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 445s 445s @staticmethod 445s def count(source, expectedsource, target=None, expectedtarget=None): 445s """Simple helper to check the respective word counts.""" 445s poelement = po.pounit(source) 445s if target is not None: 445s poelement.target = target 445s wordssource, wordstarget = pocount.wordsinunit(poelement) 445s print( 445s 'Source (expected=%d; actual=%d): "%s"' 445s % (expectedsource, wordssource, source) 445s ) 445s > assert wordssource == expectedsource 445s E assert 3 == 2 445s 445s tests/translate/tools/test_pocount.py:33: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s Source (expected=2; actual=3): "_n: Singular\n 445s Plural" 445s _________________________ TestPOMerge.test_escape_tabs _________________________ 445s 445s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x7fdafc06a4e0> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_escape_tabs(self): 445s """Ensure that input tabs are escaped in the output, like gettext does.""" 445s # The strings below contains the tab character, not spaces. 445s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 445s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 445s expectedpo = r"""msgid "First\tSecond" 445s msgstr "Eerste\tTweede" 445s """ 445s pofile = self.mergestore(templatepo, mergepo) 445s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 445s > assert bytes(pofile).decode("utf-8") == expectedpo 445s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 445s E 445s E - msgid "First\tSecond" 445s E ? ^^ 445s E + msgid "First Second" 445s E ? ^ 445s E msgstr "Eerste\tTweede" 445s 445s tests/translate/tools/test_pomerge.py:349: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s Expected: 445s msgid "First\tSecond" 445s msgstr "Eerste\tTweede" 445s 445s 445s Merged: 445s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 445s __________________ TestPretranslate.test_merging_msgid_change __________________ 445s 445s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7fdafc068470> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_merging_msgid_change(self): 445s """ 445s tests that if the msgid changes but the location stays the same that 445s we merge. 445s """ 445s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 445s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 445s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 445s newpo = self.pretranslatepo(input_source, template_source) 445s print(bytes(newpo)) 445s > assert bytes(newpo).decode("utf-8") == poexpected 445s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 445s E 445s E #: simple.label 445s E #: simple.accesskey 445s E - #, fuzzy 445s E msgid "Its &hard coding a newline.\n" 445s E - msgstr "&Hart gekoeerde nuwe lyne\n" 445s E + msgstr "" 445s 445s tests/translate/tools/test_pretranslate.py:130: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 445s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 445s 445s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7fdafc0689e0> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_merging_accelerator_changes(self): 445s """ 445s test that a change in the accelerator localtion still allows 445s merging. 445s """ 445s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 445s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 445s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 445s newpo = self.pretranslatepo(input_source, template_source) 445s print(bytes(newpo)) 445s > assert bytes(newpo).decode("utf-8") == poexpected 445s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 445s E 445s E #: someline.c 445s E msgid "A&bout" 445s E - msgstr "&Info" 445s E ? ----- 445s E + msgstr "" 445s 445s tests/translate/tools/test_pretranslate.py:185: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 445s _________________ TestPretranslate.test_lines_cut_differently __________________ 445s 445s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7fdafc068aa0> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_lines_cut_differently(self): 445s """ 445s Checks that the correct formatting is preserved when pot an po lines 445s differ. 445s """ 445s input_source = ( 445s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 445s ) 445s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 445s newpo = self.pretranslatepo(input_source, template_source) 445s newpounit = self.singleunit(newpo) 445s > assert str(newpounit) == template_source 445s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 445s E 445s E #: simple.label 445s E - msgid "Line" 445s E + msgid "Line split " 445s E ? +++++++ 445s E - " split differently" 445s E ? ------- 445s E + "differently" 445s E msgstr "Lyne verskillend gesny" 445s 445s tests/translate/tools/test_pretranslate.py:199: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s #: simple.label 445s msgid "Line split " 445s "differently" 445s msgstr "Lyne verskillend gesny" 445s 445s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 445s 445s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7fdafc0690d0> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_merging_msgid_change(self): 445s """ 445s tests that if the msgid changes but the location stays the same that 445s we merge. 445s """ 445s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 445s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 445s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 445s newpo = self.pretranslatepo(input_source, template_source) 445s print(bytes(newpo)) 445s > assert bytes(newpo).decode("utf-8") == poexpected 445s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 445s E 445s E #: simple.label 445s E #: simple.accesskey 445s E - #, fuzzy 445s E msgid "Its &hard coding a newline.\n" 445s E - msgstr "&Hart gekoeerde nuwe lyne\n" 445s E + msgstr "" 445s 445s tests/translate/tools/test_pretranslate.py:130: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 445s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 445s 445s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7fdafc068080> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_merging_accelerator_changes(self): 445s """ 445s test that a change in the accelerator localtion still allows 445s merging. 445s """ 445s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 445s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 445s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 445s newpo = self.pretranslatepo(input_source, template_source) 445s print(bytes(newpo)) 445s > assert bytes(newpo).decode("utf-8") == poexpected 445s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 445s E 445s E #: someline.c 445s E msgid "A&bout" 445s E - msgstr "&Info" 445s E ? ----- 445s E + msgstr "" 445s 445s tests/translate/tools/test_pretranslate.py:185: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 445s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 445s 445s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7fdafb8e8080> 445s 445s @mark.xfail(reason="Not Implemented") 445s def test_lines_cut_differently(self): 445s """ 445s Checks that the correct formatting is preserved when pot an po lines 445s differ. 445s """ 445s input_source = ( 445s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 445s ) 445s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 445s newpo = self.pretranslatepo(input_source, template_source) 445s newpounit = self.singleunit(newpo) 445s > assert str(newpounit) == template_source 445s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 445s E 445s E #: simple.label 445s E - msgid "Line" 445s E + msgid "Line split " 445s E ? +++++++ 445s E - " split differently" 445s E ? ------- 445s E + "differently" 445s E msgstr "Lyne verskillend gesny" 445s 445s tests/translate/tools/test_pretranslate.py:199: AssertionError 445s ----------------------------- Captured stdout call ----------------------------- 445s #: simple.label 445s msgid "Line split " 445s "differently" 445s msgstr "Lyne verskillend gesny" 445s 445s =============================== warnings summary =============================== 445s tests/translate/storage/test_cpo.py:15 445s Warning: 445s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 445s ImportError('gettext PO library not found') 445s In pytest 9.1 this warning will become an error by default. 445s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 445s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 445s 445s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 445s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.wV9Ur8/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 445s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 445s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 445s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 445s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 445s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 445s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 445s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 445s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 445s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 445s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 445s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 445s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 445s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 445s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 445s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 445s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 445s Warning: Could not find accesskey for key.accesskey 445s 445s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 445s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 445s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 445s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 445s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 445s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.wV9Ur8/autopkgtest_tmp/tests/translate/convert/test.idml'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 445s Warning: unclosed file <_io.BufferedReader name='translation.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 445s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 445s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 445s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 445s Warning: Could not find accesskey for prop.accesskey 445s 445s tests/translate/convert/test_po2tmx.py: 26 warnings 445s tests/translate/filters/test_pofilter.py: 13 warnings 445s tests/translate/storage/test_tbx.py: 17 warnings 445s tests/translate/storage/test_tmx.py: 24 warnings 445s 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' 445s 445s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 445s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 445s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 445s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 445s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 445s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 445s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 445s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 445s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 445s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 445s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 445s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 445s Enable tracemalloc to get traceback where the object was allocated. 445s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 445s 446s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 446s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 446s Enable tracemalloc to get traceback where the object was allocated. 446s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 446s 446s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 446s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.wV9Ur8/autopkgtest_tmp/tests/translate/convert/test.odt'> 446s Enable tracemalloc to get traceback where the object was allocated. 446s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 446s 446s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 446s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 446s Enable tracemalloc to get traceback where the object was allocated. 446s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 446s 446s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 446s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 446s Enable tracemalloc to get traceback where the object was allocated. 446s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 446s 446s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 446s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 446s Enable tracemalloc to get traceback where the object was allocated. 446s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 446s 446s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 446s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 446s Enable tracemalloc to get traceback where the object was allocated. 446s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 446s 446s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 446s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 446s 446s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 446s Warning: DTD file '' does not validate 446s 446s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 446s --------------------------- snapshot report summary ---------------------------- 446s 23 snapshots passed. 446s =========================== short test summary info ============================ 446s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 446s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 446s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 446s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 446s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 446s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 446s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 446s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 446s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 446s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 446s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 446s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 446s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 446s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 446s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 446s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 446s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 446s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 446s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 446s 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. 446s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 446s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 446s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 446s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 446s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 446s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 446s 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 446s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 446s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 446s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 446s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 446s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 446s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 446s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 446s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 446s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 446s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 446s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 446s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 446s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 446s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 446s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 446s ========== 3273 passed, 3 skipped, 39 xfailed, 127 warnings in 21.43s ========== 446s autopkgtest [02:04:42]: test python3-translate-commands: -----------------------] 447s autopkgtest [02:04:43]: test python3-translate-commands: - - - - - - - - - - results - - - - - - - - - - 447s python3-translate-commands PASS 447s autopkgtest [02:04:43]: @@@@@@@@@@@@@@@@@@@@ summary 447s translate-toolkit PASS 447s python3-translate PASS 447s python3-translate-commands PASS 464s nova [W] Using flock in scalingstack-bos01-ppc64el 464s Creating nova instance adt-oracular-ppc64el-translate-toolkit-20240608-015716-juju-7f2275-prod-proposed-migration-environment-2-06faae69-d8bd-4df7-901f-12d749403989 from image adt/ubuntu-oracular-ppc64el-server-20240607.img (UUID 3fb9a257-7646-4253-9bcd-b14e4853c723)... 464s nova [W] Using flock in scalingstack-bos01-ppc64el 464s Creating nova instance adt-oracular-ppc64el-translate-toolkit-20240608-015716-juju-7f2275-prod-proposed-migration-environment-2-06faae69-d8bd-4df7-901f-12d749403989 from image adt/ubuntu-oracular-ppc64el-server-20240607.img (UUID 3fb9a257-7646-4253-9bcd-b14e4853c723)...