0s autopkgtest [12:26:05]: starting date and time: 2024-05-28 12:26:05+0000 0s autopkgtest [12:26:05]: git checkout: 930f72e5 setup-testbed: don't install 'Recommends' for 'linux-generic' 0s autopkgtest [12:26:05]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.6r4tyy9g/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:ruamel.yaml --apt-upgrade translate-toolkit --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=ruamel.yaml/0.18.6+ds-3 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@lcy02-44.secgroup --name adt-oracular-amd64-translate-toolkit-20240528-122604-juju-7f2275-prod-proposed-migration-environment-2-1da09d9a-c4fb-4403-9389-5e68e56197cc --image adt/ubuntu-oracular-amd64-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://ftpmaster.internal/ubuntu/ 140s autopkgtest [12:28:25]: testbed dpkg architecture: amd64 140s autopkgtest [12:28:25]: testbed apt version: 2.9.3 140s autopkgtest [12:28:25]: @@@@@@@@@@@@@@@@@@@@ test bed setup 141s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [73.9 kB] 141s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [547 kB] 141s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [61.3 kB] 141s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [1964 B] 141s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [3952 B] 141s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main i386 Packages [101 kB] 141s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/main amd64 Packages [137 kB] 141s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/restricted amd64 Packages [7700 B] 141s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/universe i386 Packages [261 kB] 141s Get:10 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 Packages [604 kB] 141s Get:11 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse amd64 Packages [2292 B] 141s Get:12 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse i386 Packages [1392 B] 141s Fetched 1802 kB in 0s (5423 kB/s) 141s Reading package lists... 142s Reading package lists... 143s Building dependency tree... 143s Reading state information... 143s Calculating upgrade... 144s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 144s Reading package lists... 144s Building dependency tree... 144s Reading state information... 145s 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... 148s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 149s autopkgtest [12:28:34]: testbed running kernel: Linux 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 149s autopkgtest [12:28:34]: @@@@@@@@@@@@@@@@@@@@ apt-source translate-toolkit 150s Get:1 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (dsc) [3172 B] 150s Get:2 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (tar) [1203 kB] 150s Get:3 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (diff) [24.4 kB] 150s gpgv: Signature made Wed Apr 10 14:04:46 2024 UTC 150s gpgv: using RSA key A62D2CFBD50B9B5BF360D54B159EB5C4EFC8774C 150s gpgv: Can't check signature: No public key 150s dpkg-source: warning: cannot verify inline signature for ./translate-toolkit_3.12.2-1ubuntu1.dsc: no acceptable signature found 151s autopkgtest [12:28:36]: testing package translate-toolkit version 3.12.2-1ubuntu1 151s autopkgtest [12:28:36]: build not needed 151s autopkgtest [12:28:36]: test translate-toolkit: preparing testbed 151s Reading package lists... 152s Building dependency tree... 152s Reading state information... 152s Starting pkgProblemResolver with broken count: 1 152s Starting 2 pkgProblemResolver with broken count: 1 152s Investigating (0) python3-ruamel.yaml:amd64 < none -> 0.18.6+ds-3 @un puN Ib > 152s Broken python3-ruamel.yaml:amd64 Depends on python3-ruamel.yaml.clib:amd64 < none | 0.2.8-1build1 @un uH > (>= 0.2.8-2) 152s Considering python3-ruamel.yaml.clib:amd64 0 as a solution to python3-ruamel.yaml:amd64 1 152s Re-Instated python3-ruamel.yaml.clib:amd64 152s Done 152s Some packages could not be installed. This may mean that you have 152s requested an impossible situation or if you are using the unstable 152s distribution that some required packages have not yet been created 152s or been moved out of Incoming. 152s The following information may help to resolve the situation: 152s 152s The following packages have unmet dependencies: 152s python3-ruamel.yaml : Depends: python3-ruamel.yaml.clib (>= 0.2.8-2) but 0.2.8-1build1 is to be installed 152s E: Unable to correct problems, you have held broken packages. 152s autopkgtest: WARNING: Test dependencies are unsatisfiable with using apt pinning. Retrying with using all packages from oracular-proposed 152s Reading package lists... 153s Building dependency tree... 153s Reading state information... 153s Starting pkgProblemResolver with broken count: 0 153s Starting 2 pkgProblemResolver with broken count: 0 153s Done 154s The following additional packages will be installed: 154s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 154s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 154s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 154s python3-aeidon python3-bs4 python3-cheroot python3-dateutil 154s python3-diff-match-patch python3-enchant python3-iniparse 154s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 154s python3-more-itertools python3-phply python3-ply python3-pycountry 154s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 154s python3-simplejson python3-soupsieve python3-translate python3-vobject 154s python3-xapian subversion translate-toolkit 154s Suggested packages: 154s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 154s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 154s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 154s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 154s db5.3-util libapache2-mod-svn subversion-tools 154s Recommended packages: 154s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 154s python3-cssselect python3-html5lib translate-toolkit-doc 154s The following NEW packages will be installed: 154s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 154s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 154s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 154s libxslt1.1 python3-aeidon python3-bs4 python3-cheroot python3-dateutil 154s python3-diff-match-patch python3-enchant python3-iniparse 154s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 154s python3-more-itertools python3-phply python3-ply python3-pycountry 154s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 154s python3-simplejson python3-soupsieve python3-translate python3-vobject 154s python3-xapian subversion translate-toolkit 154s 0 upgraded, 42 newly installed, 0 to remove and 39 not upgraded. 154s Need to get 11.2 MB/11.2 MB of archives. 154s After this operation, 51.5 MB of additional disk space will be used. 154s Get:1 /tmp/autopkgtest.uHbnTa/1-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [872 B] 154s Get:2 http://ftpmaster.internal/ubuntu oracular/main amd64 emacsen-common all 3.0.5 [12.1 kB] 154s Get:3 http://ftpmaster.internal/ubuntu oracular/main amd64 dictionaries-common all 1.29.7 [188 kB] 154s Get:4 http://ftpmaster.internal/ubuntu oracular/main amd64 libgomp1 amd64 14.1.0-1ubuntu1 [148 kB] 154s Get:5 http://ftpmaster.internal/ubuntu oracular/main amd64 gettext amd64 0.21-14ubuntu2 [864 kB] 154s Get:6 http://ftpmaster.internal/ubuntu oracular/main amd64 hunspell-en-us all 1:2020.12.07-2 [280 kB] 154s Get:7 http://ftpmaster.internal/ubuntu oracular/main amd64 libapr1t64 amd64 1.7.2-3.2 [106 kB] 154s Get:8 http://ftpmaster.internal/ubuntu oracular/main amd64 libaprutil1t64 amd64 1.6.3-1.1ubuntu7 [91.9 kB] 154s Get:9 http://ftpmaster.internal/ubuntu oracular/main amd64 libaspell15 amd64 0.60.8.1-1build1 [323 kB] 154s Get:10 http://ftpmaster.internal/ubuntu oracular/main amd64 libhunspell-1.7-0 amd64 1.7.2+really1.7.2-10build3 [294 kB] 154s Get:11 http://ftpmaster.internal/ubuntu oracular/main amd64 libenchant-2-2 amd64 2.3.3-2build2 [51.4 kB] 154s Get:12 http://ftpmaster.internal/ubuntu oracular/main amd64 libexttextcat-data all 3.4.7-1build1 [193 kB] 154s Get:13 http://ftpmaster.internal/ubuntu oracular/universe amd64 libserf-1-1 amd64 1.3.10-2 [48.0 kB] 154s Get:14 http://ftpmaster.internal/ubuntu oracular/universe amd64 libutf8proc3 amd64 2.9.0-1build1 [70.6 kB] 154s Get:15 http://ftpmaster.internal/ubuntu oracular/universe amd64 libsvn1 amd64 1.14.3-1build4 [1345 kB] 154s Get:16 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 libxapian30 amd64 1.4.25-1 [718 kB] 154s Get:17 http://ftpmaster.internal/ubuntu oracular/main amd64 libxslt1.1 amd64 1.1.39-0exp1build1 [167 kB] 154s Get:18 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-aeidon all 1.11-2 [221 kB] 154s Get:19 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-soupsieve all 2.5-1 [33.0 kB] 154s Get:20 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-bs4 all 4.12.3-1 [109 kB] 154s Get:21 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-more-itertools all 10.2.0-1 [52.9 kB] 154s Get:22 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-jaraco.functools all 4.0.0-1 [10.7 kB] 154s Get:23 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 154s Get:24 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-dateutil all 2.9.0-2 [80.3 kB] 154s Get:25 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-diff-match-patch all 20230430-1 [33.1 kB] 154s Get:26 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-enchant all 3.2.2-1 [34.0 kB] 154s Get:27 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-rapidfuzz amd64 3.6.2+ds-3 [2021 kB] 154s Get:28 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-levenshtein amd64 0.25.1-3 [120 kB] 154s Get:29 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-lxml amd64 5.2.1-1 [1243 kB] 154s Get:30 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-mistletoe all 1.3.0-1 [38.0 kB] 154s Get:31 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-ply all 3.11-6 [46.5 kB] 154s Get:32 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-phply all 1.2.6-1 [50.5 kB] 154s Get:33 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 python3-ruamel.yaml.clib amd64 0.2.8+ds-1 [133 kB] 154s Get:34 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 python3-ruamel.yaml all 0.18.6+ds-3 [126 kB] 154s Get:35 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-simplejson amd64 3.19.2-1build2 [54.5 kB] 154s Get:36 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-translate all 3.12.2-1ubuntu1 [318 kB] 154s Get:37 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-vobject all 0.9.6.1-2 [40.6 kB] 154s Get:38 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 python3-xapian amd64 1.4.25-1 [439 kB] 154s Get:39 http://ftpmaster.internal/ubuntu oracular/universe amd64 subversion amd64 1.14.3-1build4 [908 kB] 154s Get:40 http://ftpmaster.internal/ubuntu oracular/universe amd64 translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 154s Get:41 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-iniparse all 0.5-2 [20.0 kB] 154s Get:42 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 154s Preconfiguring packages ... 154s Fetched 11.2 MB in 0s (51.1 MB/s) 154s Selecting previously unselected package emacsen-common. 155s (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 ... 74360 files and directories currently installed.) 155s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 155s Unpacking emacsen-common (3.0.5) ... 155s Selecting previously unselected package dictionaries-common. 155s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 155s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 155s Unpacking dictionaries-common (1.29.7) ... 155s Selecting previously unselected package libgomp1:amd64. 155s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_amd64.deb ... 155s Unpacking libgomp1:amd64 (14.1.0-1ubuntu1) ... 155s Selecting previously unselected package gettext. 155s Preparing to unpack .../03-gettext_0.21-14ubuntu2_amd64.deb ... 155s Unpacking gettext (0.21-14ubuntu2) ... 155s Selecting previously unselected package hunspell-en-us. 155s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 155s Unpacking hunspell-en-us (1:2020.12.07-2) ... 155s Selecting previously unselected package libapr1t64:amd64. 155s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_amd64.deb ... 155s Unpacking libapr1t64:amd64 (1.7.2-3.2) ... 155s Selecting previously unselected package libaprutil1t64:amd64. 155s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_amd64.deb ... 155s Unpacking libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 155s Selecting previously unselected package libaspell15:amd64. 155s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_amd64.deb ... 155s Unpacking libaspell15:amd64 (0.60.8.1-1build1) ... 155s Selecting previously unselected package libhunspell-1.7-0:amd64. 155s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_amd64.deb ... 155s Unpacking libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 155s Selecting previously unselected package libenchant-2-2:amd64. 155s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_amd64.deb ... 155s Unpacking libenchant-2-2:amd64 (2.3.3-2build2) ... 155s Selecting previously unselected package libexttextcat-data. 155s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 155s Unpacking libexttextcat-data (3.4.7-1build1) ... 155s Selecting previously unselected package libserf-1-1:amd64. 155s Preparing to unpack .../11-libserf-1-1_1.3.10-2_amd64.deb ... 155s Unpacking libserf-1-1:amd64 (1.3.10-2) ... 155s Selecting previously unselected package libutf8proc3:amd64. 155s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_amd64.deb ... 155s Unpacking libutf8proc3:amd64 (2.9.0-1build1) ... 155s Selecting previously unselected package libsvn1:amd64. 155s Preparing to unpack .../13-libsvn1_1.14.3-1build4_amd64.deb ... 155s Unpacking libsvn1:amd64 (1.14.3-1build4) ... 155s Selecting previously unselected package libxapian30:amd64. 155s Preparing to unpack .../14-libxapian30_1.4.25-1_amd64.deb ... 155s Unpacking libxapian30:amd64 (1.4.25-1) ... 155s Selecting previously unselected package libxslt1.1:amd64. 155s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_amd64.deb ... 155s Unpacking libxslt1.1:amd64 (1.1.39-0exp1build1) ... 155s Selecting previously unselected package python3-aeidon. 155s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 155s Unpacking python3-aeidon (1.11-2) ... 155s Selecting previously unselected package python3-soupsieve. 155s Preparing to unpack .../17-python3-soupsieve_2.5-1_all.deb ... 155s Unpacking python3-soupsieve (2.5-1) ... 155s Selecting previously unselected package python3-bs4. 155s Preparing to unpack .../18-python3-bs4_4.12.3-1_all.deb ... 155s Unpacking python3-bs4 (4.12.3-1) ... 156s Selecting previously unselected package python3-more-itertools. 156s Preparing to unpack .../19-python3-more-itertools_10.2.0-1_all.deb ... 156s Unpacking python3-more-itertools (10.2.0-1) ... 156s Selecting previously unselected package python3-jaraco.functools. 156s Preparing to unpack .../20-python3-jaraco.functools_4.0.0-1_all.deb ... 156s Unpacking python3-jaraco.functools (4.0.0-1) ... 156s Selecting previously unselected package python3-cheroot. 156s Preparing to unpack .../21-python3-cheroot_10.0.0+ds1-2_all.deb ... 156s Unpacking python3-cheroot (10.0.0+ds1-2) ... 156s Selecting previously unselected package python3-dateutil. 156s Preparing to unpack .../22-python3-dateutil_2.9.0-2_all.deb ... 156s Unpacking python3-dateutil (2.9.0-2) ... 156s Selecting previously unselected package python3-diff-match-patch. 156s Preparing to unpack .../23-python3-diff-match-patch_20230430-1_all.deb ... 156s Unpacking python3-diff-match-patch (20230430-1) ... 156s Selecting previously unselected package python3-enchant. 156s Preparing to unpack .../24-python3-enchant_3.2.2-1_all.deb ... 156s Unpacking python3-enchant (3.2.2-1) ... 156s Selecting previously unselected package python3-rapidfuzz. 156s Preparing to unpack .../25-python3-rapidfuzz_3.6.2+ds-3_amd64.deb ... 156s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 156s Selecting previously unselected package python3-levenshtein. 156s Preparing to unpack .../26-python3-levenshtein_0.25.1-3_amd64.deb ... 156s Unpacking python3-levenshtein (0.25.1-3) ... 156s Selecting previously unselected package python3-lxml:amd64. 156s Preparing to unpack .../27-python3-lxml_5.2.1-1_amd64.deb ... 156s Unpacking python3-lxml:amd64 (5.2.1-1) ... 156s Selecting previously unselected package python3-mistletoe. 156s Preparing to unpack .../28-python3-mistletoe_1.3.0-1_all.deb ... 156s Unpacking python3-mistletoe (1.3.0-1) ... 156s Selecting previously unselected package python3-ply. 156s Preparing to unpack .../29-python3-ply_3.11-6_all.deb ... 156s Unpacking python3-ply (3.11-6) ... 156s Selecting previously unselected package python3-phply. 156s Preparing to unpack .../30-python3-phply_1.2.6-1_all.deb ... 156s Unpacking python3-phply (1.2.6-1) ... 156s Selecting previously unselected package python3-ruamel.yaml.clib:amd64. 156s Preparing to unpack .../31-python3-ruamel.yaml.clib_0.2.8+ds-1_amd64.deb ... 156s Unpacking python3-ruamel.yaml.clib:amd64 (0.2.8+ds-1) ... 156s Selecting previously unselected package python3-ruamel.yaml. 156s Preparing to unpack .../32-python3-ruamel.yaml_0.18.6+ds-3_all.deb ... 156s Unpacking python3-ruamel.yaml (0.18.6+ds-3) ... 156s Selecting previously unselected package python3-simplejson. 156s Preparing to unpack .../33-python3-simplejson_3.19.2-1build2_amd64.deb ... 156s Unpacking python3-simplejson (3.19.2-1build2) ... 156s Selecting previously unselected package python3-translate. 156s Preparing to unpack .../34-python3-translate_3.12.2-1ubuntu1_all.deb ... 156s Unpacking python3-translate (3.12.2-1ubuntu1) ... 156s Selecting previously unselected package python3-vobject. 156s Preparing to unpack .../35-python3-vobject_0.9.6.1-2_all.deb ... 156s Unpacking python3-vobject (0.9.6.1-2) ... 156s Selecting previously unselected package python3-xapian. 156s Preparing to unpack .../36-python3-xapian_1.4.25-1_amd64.deb ... 156s Unpacking python3-xapian (1.4.25-1) ... 156s Selecting previously unselected package subversion. 156s Preparing to unpack .../37-subversion_1.14.3-1build4_amd64.deb ... 156s Unpacking subversion (1.14.3-1build4) ... 156s Selecting previously unselected package translate-toolkit. 156s Preparing to unpack .../38-translate-toolkit_3.12.2-1ubuntu1_all.deb ... 156s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 156s Selecting previously unselected package python3-iniparse. 157s Preparing to unpack .../39-python3-iniparse_0.5-2_all.deb ... 157s Unpacking python3-iniparse (0.5-2) ... 157s Selecting previously unselected package python3-pycountry. 157s Preparing to unpack .../40-python3-pycountry_23.12.11+ds1-2_all.deb ... 157s Unpacking python3-pycountry (23.12.11+ds1-2) ... 157s Selecting previously unselected package autopkgtest-satdep. 157s Preparing to unpack .../41-1-autopkgtest-satdep.deb ... 157s Unpacking autopkgtest-satdep (0) ... 157s Setting up python3-more-itertools (10.2.0-1) ... 157s Setting up libxapian30:amd64 (1.4.25-1) ... 157s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 157s Setting up python3-diff-match-patch (20230430-1) ... 157s Setting up python3-jaraco.functools (4.0.0-1) ... 157s Setting up python3-aeidon (1.11-2) ... 158s Setting up libutf8proc3:amd64 (2.9.0-1build1) ... 158s Setting up libaspell15:amd64 (0.60.8.1-1build1) ... 158s Setting up python3-ply (3.11-6) ... 158s Setting up python3-ruamel.yaml.clib:amd64 (0.2.8+ds-1) ... 158s Setting up libgomp1:amd64 (14.1.0-1ubuntu1) ... 158s Setting up python3-simplejson (3.19.2-1build2) ... 158s Setting up emacsen-common (3.0.5) ... 158s Setting up python3-cheroot (10.0.0+ds1-2) ... 158s Setting up python3-pycountry (23.12.11+ds1-2) ... 158s Setting up python3-xapian (1.4.25-1) ... 158s Setting up python3-ruamel.yaml (0.18.6+ds-3) ... 159s Setting up python3-mistletoe (1.3.0-1) ... 159s Setting up libexttextcat-data (3.4.7-1build1) ... 159s Setting up libapr1t64:amd64 (1.7.2-3.2) ... 159s Setting up libxslt1.1:amd64 (1.1.39-0exp1build1) ... 159s Setting up python3-dateutil (2.9.0-2) ... 159s Setting up python3-levenshtein (0.25.1-3) ... 159s Setting up libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 159s Setting up python3-soupsieve (2.5-1) ... 159s Setting up python3-iniparse (0.5-2) ... 159s Setting up libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 159s Setting up python3-vobject (0.9.6.1-2) ... 160s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 160s patterns['name'] = '[a-zA-Z0-9\-_]+' 160s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 160s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 160s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 160s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 160s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 160s """ 160s Setting up gettext (0.21-14ubuntu2) ... 160s Setting up python3-phply (1.2.6-1) ... 160s Setting up dictionaries-common (1.29.7) ... 160s Setting up libserf-1-1:amd64 (1.3.10-2) ... 160s Setting up python3-bs4 (4.12.3-1) ... 160s Setting up python3-lxml:amd64 (5.2.1-1) ... 161s Setting up hunspell-en-us (1:2020.12.07-2) ... 161s Setting up libsvn1:amd64 (1.14.3-1build4) ... 161s Setting up libenchant-2-2:amd64 (2.3.3-2build2) ... 161s Setting up subversion (1.14.3-1build4) ... 161s Setting up python3-enchant (3.2.2-1) ... 161s Setting up python3-translate (3.12.2-1ubuntu1) ... 161s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 161s Setting up autopkgtest-satdep (0) ... 161s Processing triggers for man-db (2.12.1-1) ... 162s Processing triggers for install-info (7.1-3build2) ... 162s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 163s Processing triggers for dictionaries-common (1.29.7) ... 165s (Reading database ... 77814 files and directories currently installed.) 165s Removing autopkgtest-satdep (0) ... 166s autopkgtest [12:28:51]: test translate-toolkit: [----------------------- 166s ========= SMOKE TEST: /usr/bin/android2po =========== 166s Usage: android2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 166s 166s Convert Android string files to Gettext PO localization files. See: 166s http://docs.translatehouse.org/projects/translate- 166s toolkit/en/latest/commands/android2po.html for examples and usage 166s instructions. 166s 166s Options: 166s --version show program's version number and exit 166s -h, --help show this help message and exit 166s --manpage output a manpage based on the help 166s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 166s --errorlevel=ERRORLEVEL 166s show errorlevel as: none, message, exception, 166s traceback 166s -i INPUT, --input=INPUT 166s read from INPUT in xml format 166s -x EXCLUDE, --exclude=EXCLUDE 166s exclude names matching EXCLUDE from input paths 166s -o OUTPUT, --output=OUTPUT 166s write to OUTPUT in po, pot formats 166s -t TEMPLATE, --template=TEMPLATE 166s read from TEMPLATE in xml format 166s -S, --timestamp skip conversion if the output file has newer timestamp 166s --duplicates=DUPLICATESTYLE 166s what to do with duplicate strings (identical source 166s text): merge, msgctxt (default: 'msgctxt') 166s ========= SMOKE TEST: /usr/bin/build_tmdb =========== 166s usage: build_tmdb [-h] [-d TMDB_FILE] [-s SOURCE_LANG] -t TARGET_LANG 166s input files [input files ...] 166s 166s positional arguments: 166s input files 166s 166s options: 166s -h, --help show this help message and exit 166s -d TMDB_FILE, --tmdb TMDB_FILE 166s translation memory database file (default: tm.db) 166s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 166s source language of translation files (default: en) 166s -t TARGET_LANG, --import-target-lang TARGET_LANG 166s target language of translation files 166s ========= SMOKE TEST: /usr/bin/buildxpi =========== 166s usage: Usage: buildxpi.py [] [ ...] 166s 166s positional arguments: 166s langs 166s 166s options: 166s -h, --help show this help message and exit 166s -L L10NBASE, --l10n-base L10NBASE 166s The directory containing the subdirectory. 166s -o OUTPUTDIR, --output-dir OUTPUTDIR 166s The directory to copy the built XPI to (default: 166s current directory). 166s -p MOZPRODUCT, --mozproduct MOZPRODUCT 166s The Mozilla product name (default: "browser"). 166s -s SRCDIR, --src SRCDIR 166s The directory containing the Mozilla l10n sources. 166s -d, --delete-dest Delete output XPI if it already exists. 166s -v, --verbose Be more noisy 166s --soft-max-version Override a fixed max version with one to cover the 166s whole cycle e.g. 24.0a1 becomes 24.0.* 166s ========= SMOKE TEST: /usr/bin/csv2po =========== 166s 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] 166s 166s Convert Comma-Separated Value (.csv) files to Gettext PO localization files. 166s See: http://docs.translatehouse.org/projects/translate- 166s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 166s 166s Options: 166s --version show program's version number and exit 166s -h, --help show this help message and exit 166s --manpage output a manpage based on the help 166s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 166s --errorlevel=ERRORLEVEL 166s show errorlevel as: none, message, exception, 166s traceback 166s -i INPUT, --input=INPUT 166s read from INPUT in csv format 166s -x EXCLUDE, --exclude=EXCLUDE 166s exclude names matching EXCLUDE from input paths 166s -o OUTPUT, --output=OUTPUT 166s write to OUTPUT in po, pot formats 166s -t TEMPLATE, --template=TEMPLATE 166s read from TEMPLATE in po, pot, pot formats 166s -S, --timestamp skip conversion if the output file has newer timestamp 166s -P, --pot output PO Templates (.pot) rather than PO files (.po) 166s --charset=CHARSET set charset to decode from csv files 166s --columnorder=COLUMNORDER 166s specify the order and position of columns 166s (location,source,target) 166s --duplicates=DUPLICATESTYLE 166s what to do with duplicate strings (identical source 166s text): merge, msgctxt (default: 'msgctxt') 166s ========= SMOKE TEST: /usr/bin/csv2tbx =========== 166s Usage: csv2tbx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 166s 166s Convert Comma-Separated Value (.csv) files to a TermBase eXchange (.tbx) 166s glossary file. See: http://docs.translatehouse.org/projects/translate- 166s toolkit/en/latest/commands/csv2tbx.html for examples and usage instructions 166s 166s Options: 166s --version show program's version number and exit 166s -h, --help show this help message and exit 166s --manpage output a manpage based on the help 166s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 166s --errorlevel=ERRORLEVEL 166s show errorlevel as: none, message, exception, 166s traceback 166s -i INPUT, --input=INPUT 166s read from INPUT in csv format 166s -x EXCLUDE, --exclude=EXCLUDE 166s exclude names matching EXCLUDE from input paths 166s -o OUTPUT, --output=OUTPUT 166s write to OUTPUT in tbx format 166s -S, --timestamp skip conversion if the output file has newer timestamp 166s --charset=CHARSET set charset to decode from csv files 166s --columnorder=COLUMNORDER 166s specify the order and position of columns 166s (comment,source,target) 166s ========= SMOKE TEST: /usr/bin/dtd2po =========== 167s 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] 167s 167s Convert a Mozilla .dtd UTF-8 localization format to a Gettext PO localization 167s file. Uses the po and dtd modules, and the dtd2po convertor class which is in 167s this module You can convert back to .dtd using po2dtd.py. 167s 167s Options: 167s --version show program's version number and exit 167s -h, --help show this help message and exit 167s --manpage output a manpage based on the help 167s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 167s --errorlevel=ERRORLEVEL 167s show errorlevel as: none, message, exception, 167s traceback 167s -i INPUT, --input=INPUT 167s read from INPUT in dtd format 167s -x EXCLUDE, --exclude=EXCLUDE 167s exclude names matching EXCLUDE from input paths 167s -o OUTPUT, --output=OUTPUT 167s write to OUTPUT in po, pot formats 167s -t TEMPLATE, --template=TEMPLATE 167s read from TEMPLATE in dtd format 167s -S, --timestamp skip conversion if the output file has newer timestamp 167s -P, --pot output PO Templates (.pot) rather than PO files (.po) 167s --duplicates=DUPLICATESTYLE 167s what to do with duplicate strings (identical source 167s text): merge, msgctxt (default: 'msgctxt') 167s ========= SMOKE TEST: /usr/bin/flatxml2po =========== 167s Usage: flatxml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 167s 167s Convert flat XML files to Gettext PO localization files. See: 167s http://docs.translatehouse.org/projects/translate- 167s toolkit/en/latest/commands/flatxml2po.html for examples and usage 167s instructions. 167s 167s Options: 167s --version show program's version number and exit 167s -h, --help show this help message and exit 167s --manpage output a manpage based on the help 167s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 167s --errorlevel=ERRORLEVEL 167s show errorlevel as: none, message, exception, 167s traceback 167s -i INPUT, --input=INPUT 167s read from INPUT in xml format 167s -x EXCLUDE, --exclude=EXCLUDE 167s exclude names matching EXCLUDE from input paths 167s -o OUTPUT, --output=OUTPUT 167s write to OUTPUT in po, pot formats 167s -S, --timestamp skip conversion if the output file has newer timestamp 167s -r ROOT, --root=ROOT name of the XML root element (default: "root") 167s -v VALUE, --value=VALUE 167s name of the XML value element (default: "str") 167s -k KEY, --key=KEY name of the XML key attribute (default: "key") 167s -n NS, --namespace=NS 167s XML namespace uri (default: None) 167s ========= SMOKE TEST: /usr/bin/get_moz_enUS =========== 167s usage: get_moz_enUS [-h] [-s SRCDIR] [-d DESTDIR] [-p MOZPRODUCT] 167s [--delete-dest] [-v] 167s 167s options: 167s -h, --help show this help message and exit 167s -s SRCDIR, --src SRCDIR 167s The directory containing the Mozilla l10n sources. 167s -d DESTDIR, --dest DESTDIR 167s The destination directory to copy the en-US locale 167s files to. 167s -p MOZPRODUCT, --mozproduct MOZPRODUCT 167s The Mozilla product name. 167s --delete-dest Delete the destination directory (if it exists). 167s -v, --verbose Be more noisy 167s ========= SMOKE TEST: /usr/bin/html2po =========== 167s Usage: html2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 167s 167s Convert HTML files to Gettext PO localization files. See: 167s http://docs.translatehouse.org/projects/translate- 167s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 167s 167s Options: 167s --version show program's version number and exit 167s -h, --help show this help message and exit 167s --manpage output a manpage based on the help 167s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 167s --errorlevel=ERRORLEVEL 167s show errorlevel as: none, message, exception, 167s traceback 167s -i INPUT, --input=INPUT 167s read from INPUT in htm, html, xhtml formats 167s -x EXCLUDE, --exclude=EXCLUDE 167s exclude names matching EXCLUDE from input paths 167s -o OUTPUT, --output=OUTPUT 167s write to OUTPUT in po, pot formats 167s -S, --timestamp skip conversion if the output file has newer timestamp 167s -P, --pot output PO Templates (.pot) rather than PO files (.po) 167s --keepcomments preserve html comments as translation notes in the 167s output 167s --duplicates=DUPLICATESTYLE 167s what to do with duplicate strings (identical source 167s text): merge, msgctxt (default: 'msgctxt') 167s --multifile=MULTIFILESTYLE 167s how to split po/pot files (single, toplevel or 167s onefile) 167s ========= SMOKE TEST: /usr/bin/ical2po =========== 167s 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] 167s 167s Convert iCalendar files to Gettext PO localization files. See: 167s http://docs.translatehouse.org/projects/translate- 167s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 167s 167s Options: 167s --version show program's version number and exit 167s -h, --help show this help message and exit 167s --manpage output a manpage based on the help 167s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 167s --errorlevel=ERRORLEVEL 167s show errorlevel as: none, message, exception, 167s traceback 167s -i INPUT, --input=INPUT 167s read from INPUT in ics format 167s -x EXCLUDE, --exclude=EXCLUDE 167s exclude names matching EXCLUDE from input paths 167s -o OUTPUT, --output=OUTPUT 167s write to OUTPUT in po, pot formats 167s -t TEMPLATE, --template=TEMPLATE 167s read from TEMPLATE in ics format 167s -S, --timestamp skip conversion if the output file has newer timestamp 167s -P, --pot output PO Templates (.pot) rather than PO files (.po) 167s --duplicates=DUPLICATESTYLE 167s what to do with duplicate strings (identical source 167s text): merge, msgctxt (default: 'msgctxt') 167s ========= SMOKE TEST: /usr/bin/idml2po =========== 167s Usage: idml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 167s 167s Convert IDML files to PO localization files. 167s 167s Options: 167s --version show program's version number and exit 167s -h, --help show this help message and exit 167s --manpage output a manpage based on the help 167s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 167s --errorlevel=ERRORLEVEL 167s show errorlevel as: none, message, exception, 167s traceback 167s -i INPUT, --input=INPUT 167s read from INPUT in idml format 167s -x EXCLUDE, --exclude=EXCLUDE 167s exclude names matching EXCLUDE from input paths 167s -o OUTPUT, --output=OUTPUT 167s write to OUTPUT in po, pot formats 167s -S, --timestamp skip conversion if the output file has newer timestamp 168s ========= SMOKE TEST: /usr/bin/ini2po =========== 168s 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] 168s 168s Convert .ini files to Gettext PO localization files. See: 168s http://docs.translatehouse.org/projects/translate- 168s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 168s 168s Options: 168s --version show program's version number and exit 168s -h, --help show this help message and exit 168s --manpage output a manpage based on the help 168s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 168s --errorlevel=ERRORLEVEL 168s show errorlevel as: none, message, exception, 168s traceback 168s -i INPUT, --input=INPUT 168s read from INPUT in ini, isl, iss formats 168s -x EXCLUDE, --exclude=EXCLUDE 168s exclude names matching EXCLUDE from input paths 168s -o OUTPUT, --output=OUTPUT 168s write to OUTPUT in po, pot formats 168s -t TEMPLATE, --template=TEMPLATE 168s read from TEMPLATE in ini, isl, iss formats 168s -S, --timestamp skip conversion if the output file has newer timestamp 168s -P, --pot output PO Templates (.pot) rather than PO files (.po) 168s --duplicates=DUPLICATESTYLE 168s what to do with duplicate strings (identical source 168s text): merge, msgctxt (default: 'msgctxt') 168s ========= SMOKE TEST: /usr/bin/json2po =========== 168s 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] 168s 168s Convert JSON files to Gettext PO localization files. See: 168s http://docs.translatehouse.org/projects/translate- 168s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 168s 168s Options: 168s --version show program's version number and exit 168s -h, --help show this help message and exit 168s --manpage output a manpage based on the help 168s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 168s --errorlevel=ERRORLEVEL 168s show errorlevel as: none, message, exception, 168s traceback 168s -i INPUT, --input=INPUT 168s read from INPUT in json format 168s -x EXCLUDE, --exclude=EXCLUDE 168s exclude names matching EXCLUDE from input paths 168s -o OUTPUT, --output=OUTPUT 168s write to OUTPUT in po, pot formats 168s -t TEMPLATE, --template=TEMPLATE 168s read from TEMPLATE in json format 168s -S, --timestamp skip conversion if the output file has newer timestamp 168s -P, --pot output PO Templates (.pot) rather than PO files (.po) 168s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 168s everything) 168s --duplicates=DUPLICATESTYLE 168s what to do with duplicate strings (identical source 168s text): merge, msgctxt (default: 'msgctxt') 168s ========= SMOKE TEST: /usr/bin/md2po =========== 168s Usage: md2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 168s 168s Convert Markdown files to Gettext PO localization files. See: 168s http://docs.translatehouse.org/projects/translate- 168s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 168s 168s Options: 168s --version show program's version number and exit 168s -h, --help show this help message and exit 168s --manpage output a manpage based on the help 168s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 168s --errorlevel=ERRORLEVEL 168s show errorlevel as: none, message, exception, 168s traceback 168s -i INPUT, --input=INPUT 168s read from INPUT in markdown, md, text, txt formats 168s -x EXCLUDE, --exclude=EXCLUDE 168s exclude names matching EXCLUDE from input paths 168s -o OUTPUT, --output=OUTPUT 168s write to OUTPUT in po, pot formats 168s -S, --timestamp skip conversion if the output file has newer timestamp 168s -P, --pot output PO Templates (.pot) rather than PO files (.po) 168s --duplicates=DUPLICATESTYLE 168s what to do with duplicate strings (identical source 168s text): merge, msgctxt (default: 'msgctxt') 168s --multifile=MULTIFILESTYLE 168s how to split po/pot files (single, toplevel or 168s onefile) 168s ========= SMOKE TEST: /usr/bin/moz2po =========== 169s 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] 169s 169s Convert Mozilla .dtd and .properties files to Gettext PO localization files. 169s See: http://docs.translatehouse.org/projects/translate- 169s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 169s 169s Options: 169s --version show program's version number and exit 169s -h, --help show this help message and exit 169s --manpage output a manpage based on the help 169s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 169s --errorlevel=ERRORLEVEL 169s show errorlevel as: none, message, exception, 169s traceback 169s -i INPUT, --input=INPUT 169s read from INPUT in *, dtd, inc, ini, it, js, lang, 169s manifest, properties, rdf formats 169s -x EXCLUDE, --exclude=EXCLUDE 169s exclude names matching EXCLUDE from input paths 169s -o OUTPUT, --output=OUTPUT 169s write to OUTPUT in *, dtd.po, dtd.pot, inc.po, 169s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 169s lang.pot, manifest, properties.po, properties.pot, rdf 169s formats 169s -t TEMPLATE, --template=TEMPLATE 169s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 169s manifest, properties, rdf formats 169s -S, --timestamp skip conversion if the output file has newer timestamp 169s -P, --pot output PO Templates (.pot) rather than PO files (.po) 169s --duplicates=DUPLICATESTYLE 169s what to do with duplicate strings (identical source 169s text): merge, msgctxt (default: 'msgctxt') 169s ========= SMOKE TEST: /usr/bin/mozlang2po =========== 169s Usage: mozlang2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 169s 169s Convert Mozilla .lang files to Gettext PO localization files. 169s 169s Options: 169s --version show program's version number and exit 169s -h, --help show this help message and exit 169s --manpage output a manpage based on the help 169s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 169s --errorlevel=ERRORLEVEL 169s show errorlevel as: none, message, exception, 169s traceback 169s -i INPUT, --input=INPUT 169s read from INPUT in lang format 169s -x EXCLUDE, --exclude=EXCLUDE 169s exclude names matching EXCLUDE from input paths 169s -o OUTPUT, --output=OUTPUT 169s write to OUTPUT in po, pot formats 169s -S, --timestamp skip conversion if the output file has newer timestamp 169s -P, --pot output PO Templates (.pot) rather than PO files (.po) 169s --encoding=ENCODING The encoding of the input file (default: UTF-8) 169s --duplicates=DUPLICATESTYLE 169s what to do with duplicate strings (identical source 169s text): merge, msgctxt (default: 'msgctxt') 169s ========= SMOKE TEST: /usr/bin/msghack =========== 169s Usage: /usr/bin/msghack [OPTION] file.po [ref.po] 169s This program can be used to alter .po files in ways no sane mind would think about. 169s -o result will be written to FILE 169s --invert invert a po file by switching msgid and msgstr 169s --master join any number of files in a master-formatted catalog 169s --empty empty the contents of the .po file, creating a .pot 169s --append append entries from ref.po that don't exist in file.po 169s 169s Note: It is just a replacement of msghack for backward support. 169s 169s ========= SMOKE TEST: /usr/bin/odf2xliff =========== 169s Usage: odf2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 169s 169s Convert OpenDocument (ODF) files to XLIFF localization files. See: 169s http://docs.translatehouse.org/projects/translate- 169s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 169s 169s Options: 169s --version show program's version number and exit 169s -h, --help show this help message and exit 169s --manpage output a manpage based on the help 169s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 169s --errorlevel=ERRORLEVEL 169s show errorlevel as: none, message, exception, 169s traceback 169s -i INPUT, --input=INPUT 169s read from INPUT in odc, odf, odg, odi, odm, odp, ods, 169s odt, otc, otf, otg, oth, oti, otp, ots, ott, sxw 169s formats 169s -x EXCLUDE, --exclude=EXCLUDE 169s exclude names matching EXCLUDE from input paths 169s -o OUTPUT, --output=OUTPUT 169s write to OUTPUT in xlf, xliff formats 169s -S, --timestamp skip conversion if the output file has newer timestamp 169s ========= SMOKE TEST: /usr/bin/oo2po =========== 169s Usage: oo2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 169s 169s Convert an OpenOffice.org (SDF) localization file to Gettext PO localization 169s files. See: http://docs.translatehouse.org/projects/translate- 169s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 169s 169s Options: 169s --version show program's version number and exit 169s -h, --help show this help message and exit 169s --manpage output a manpage based on the help 169s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 169s --errorlevel=ERRORLEVEL 169s show errorlevel as: none, message, exception, 169s traceback 169s -i INPUT, --input=INPUT 169s read from INPUT in oo, sdf formats 169s -x EXCLUDE, --exclude=EXCLUDE 169s exclude names matching EXCLUDE from input paths 169s -o OUTPUT, --output=OUTPUT 169s write to OUTPUT in po, pot formats 169s -S, --timestamp skip conversion if the output file has newer timestamp 169s -P, --pot output PO Templates (.pot) rather than PO files (.po) 169s -l LANG, --language=LANG 169s set target language to extract from oo file (e.g. af- 169s ZA) 169s --source-language=LANG 169s set source language code (default en-US) 169s --nonrecursiveinput don't treat the input oo as a recursive store 169s --duplicates=DUPLICATESTYLE 169s what to do with duplicate strings (identical source 169s text): merge, msgctxt (default: 'msgctxt') 169s --multifile=MULTIFILESTYLE 169s how to split po/pot files (single, toplevel or 169s onefile) 169s ========= SMOKE TEST: /usr/bin/oo2xliff =========== 169s Usage: oo2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 169s 169s Convert an OpenOffice.org (SDF) localization file to XLIFF localization 169s files. See: http://docs.translatehouse.org/projects/translate- 169s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 169s 169s Options: 169s --version show program's version number and exit 169s -h, --help show this help message and exit 169s --manpage output a manpage based on the help 169s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 169s --errorlevel=ERRORLEVEL 169s show errorlevel as: none, message, exception, 169s traceback 169s -i INPUT, --input=INPUT 169s read from INPUT in oo, sdf formats 169s -x EXCLUDE, --exclude=EXCLUDE 169s exclude names matching EXCLUDE from input paths 169s -o OUTPUT, --output=OUTPUT 169s write to OUTPUT in xlf, xliff formats 169s -S, --timestamp skip conversion if the output file has newer timestamp 169s -l LANG, --language=LANG 169s set target language to extract from oo file (e.g. af- 169s ZA) 169s --source-language=LANG 169s set source language code (default en-US) 169s --nonrecursiveinput don't treat the input oo as a recursive store 169s --duplicates=DUPLICATESTYLE 169s what to do with duplicate strings (identical source 169s text): merge, msgctxt (default: 'msgctxt') 169s --multifile=MULTIFILESTYLE 169s how to split po/pot files (single, toplevel or 169s onefile) 169s ========= SMOKE TEST: /usr/bin/php2po =========== 169s 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] 169s 169s Convert PHP localization files to Gettext PO localization files. See: 169s http://docs.translatehouse.org/projects/translate- 169s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 169s 169s Options: 169s --version show program's version number and exit 169s -h, --help show this help message and exit 169s --manpage output a manpage based on the help 169s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 169s --errorlevel=ERRORLEVEL 169s show errorlevel as: none, message, exception, 169s traceback 169s -i INPUT, --input=INPUT 169s read from INPUT in html, php formats 169s -x EXCLUDE, --exclude=EXCLUDE 169s exclude names matching EXCLUDE from input paths 169s -o OUTPUT, --output=OUTPUT 169s write to OUTPUT in po, pot formats 169s -t TEMPLATE, --template=TEMPLATE 169s read from TEMPLATE in html, php formats 169s -S, --timestamp skip conversion if the output file has newer timestamp 169s -P, --pot output PO Templates (.pot) rather than PO files (.po) 169s --duplicates=DUPLICATESTYLE 169s what to do with duplicate strings (identical source 169s text): merge, msgctxt (default: 'msgctxt') 169s ========= SMOKE TEST: /usr/bin/phppo2pypo =========== 169s Usage: phppo2pypo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 169s 169s Convert PHP format .po files to Python format .po files. 169s 169s Options: 169s --version show program's version number and exit 169s -h, --help show this help message and exit 169s --manpage output a manpage based on the help 169s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 169s --errorlevel=ERRORLEVEL 169s show errorlevel as: none, message, exception, 169s traceback 169s -i INPUT, --input=INPUT 169s read from INPUT in po, pot formats 169s -x EXCLUDE, --exclude=EXCLUDE 169s exclude names matching EXCLUDE from input paths 169s -o OUTPUT, --output=OUTPUT 169s write to OUTPUT in po, pot formats 169s -S, --timestamp skip conversion if the output file has newer timestamp 170s ========= SMOKE TEST: /usr/bin/po2csv =========== 170s Usage: po2csv [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 170s 170s Convert Gettext PO localization files to Comma-Separated Value (.csv) files. 170s See: http://docs.translatehouse.org/projects/translate- 170s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 170s 170s Options: 170s --version show program's version number and exit 170s -h, --help show this help message and exit 170s --manpage output a manpage based on the help 170s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 170s --errorlevel=ERRORLEVEL 170s show errorlevel as: none, message, exception, 170s traceback 170s -i INPUT, --input=INPUT 170s read from INPUT in po, pot formats 170s -x EXCLUDE, --exclude=EXCLUDE 170s exclude names matching EXCLUDE from input paths 170s -o OUTPUT, --output=OUTPUT 170s write to OUTPUT in csv format 170s -S, --timestamp skip conversion if the output file has newer timestamp 170s --columnorder=COLUMNORDER 170s specify the order and position of columns 170s (location,source,target) 170s ========= SMOKE TEST: /usr/bin/po2dtd =========== 170s Usage: po2dtd [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 170s 170s Converts a Gettext PO file to a UTF-8 encoded Mozilla .dtd file. .. note: 170s Conversion is either done using a template plus PO file or just using the 170s .po file. 170s 170s Options: 170s --version show program's version number and exit 170s -h, --help show this help message and exit 170s --manpage output a manpage based on the help 170s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 170s --errorlevel=ERRORLEVEL 170s show errorlevel as: none, message, exception, 170s traceback 170s -i INPUT, --input=INPUT 170s read from INPUT in po, pot formats 170s -x EXCLUDE, --exclude=EXCLUDE 170s exclude names matching EXCLUDE from input paths 170s -o OUTPUT, --output=OUTPUT 170s write to OUTPUT in dtd format 170s -t TEMPLATE, --template=TEMPLATE 170s read from TEMPLATE in dtd format 170s -S, --timestamp skip conversion if the output file has newer timestamp 170s --threshold=PERCENT only convert files where the translation completion is 170s above PERCENT 170s --fuzzy use translations marked fuzzy 170s --nofuzzy don't use translations marked fuzzy (default) 170s --removeuntranslated remove untranslated strings from output 170s ========= SMOKE TEST: /usr/bin/po2flatxml =========== 170s Usage: po2flatxml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 170s 170s Convert Gettext PO localization files to flat XML files. See: 170s http://docs.translatehouse.org/projects/translate- 170s toolkit/en/latest/commands/flatxml2po.html for examples and usage 170s instructions. 170s 170s Options: 170s --version show program's version number and exit 170s -h, --help show this help message and exit 170s --manpage output a manpage based on the help 170s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 170s --errorlevel=ERRORLEVEL 170s show errorlevel as: none, message, exception, 170s traceback 170s -i INPUT, --input=INPUT 170s read from INPUT in po, pot formats 170s -x EXCLUDE, --exclude=EXCLUDE 170s exclude names matching EXCLUDE from input paths 170s -o OUTPUT, --output=OUTPUT 170s write to OUTPUT in xml format 170s -t TEMPLATE, --template=TEMPLATE 170s read from TEMPLATE in xml format 170s -S, --timestamp skip conversion if the output file has newer timestamp 170s -r ROOT, --root=ROOT name of the XML root element (default: "root") 170s -v VALUE, --value=VALUE 170s name of the XML value element (default: "str") 170s -k KEY, --key=KEY name of the XML key attribute (default: "key") 170s -n NS, --namespace=NS 170s XML namespace uri (default: None) 170s -w INDENT, --indent=INDENT 170s indent width in spaces, 0 for no indent (default: 2) 170s ========= SMOKE TEST: /usr/bin/po2html =========== 170s Usage: po2html [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 170s 170s Translate HTML files using Gettext PO localization files. See: 170s http://docs.translatehouse.org/projects/translate- 170s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 170s 170s Options: 170s --version show program's version number and exit 170s -h, --help show this help message and exit 170s --manpage output a manpage based on the help 170s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 170s --errorlevel=ERRORLEVEL 170s show errorlevel as: none, message, exception, 170s traceback 170s -i INPUT, --input=INPUT 170s read from INPUT in po, pot formats 170s -x EXCLUDE, --exclude=EXCLUDE 170s exclude names matching EXCLUDE from input paths 170s -o OUTPUT, --output=OUTPUT 170s write to OUTPUT in htm, html, xhtml formats 170s -t TEMPLATE, --template=TEMPLATE 170s read from TEMPLATE in htm, html, xhtml formats 170s -S, --timestamp skip conversion if the output file has newer timestamp 170s --threshold=PERCENT only convert files where the translation completion is 170s above PERCENT 170s --fuzzy use translations marked fuzzy 170s --nofuzzy don't use translations marked fuzzy (default) 170s ========= SMOKE TEST: /usr/bin/po2ical =========== 170s Usage: po2ical [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 170s 170s Convert Gettext PO localization files to iCalendar files. See: 170s http://docs.translatehouse.org/projects/translate- 170s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 170s 170s Options: 170s --version show program's version number and exit 170s -h, --help show this help message and exit 170s --manpage output a manpage based on the help 170s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 170s --errorlevel=ERRORLEVEL 170s show errorlevel as: none, message, exception, 170s traceback 170s -i INPUT, --input=INPUT 170s read from INPUT in po, pot formats 170s -x EXCLUDE, --exclude=EXCLUDE 170s exclude names matching EXCLUDE from input paths 170s -o OUTPUT, --output=OUTPUT 170s write to OUTPUT in ics format 170s -t TEMPLATE, --template=TEMPLATE 170s read from TEMPLATE in ics format 170s -S, --timestamp skip conversion if the output file has newer timestamp 170s --threshold=PERCENT only convert files where the translation completion is 170s above PERCENT 170s --fuzzy use translations marked fuzzy 170s --nofuzzy don't use translations marked fuzzy (default) 170s ========= SMOKE TEST: /usr/bin/po2idml =========== 170s Usage: po2idml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 170s 170s Takes an IDML template file and a PO file containing translations of strings 170s in the IDML template. It creates a new IDML file using the translations of the 170s PO file. 170s 170s Options: 170s --version show program's version number and exit 170s -h, --help show this help message and exit 170s --manpage output a manpage based on the help 170s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 170s --errorlevel=ERRORLEVEL 170s show errorlevel as: none, message, exception, 170s traceback 170s -i INPUT, --input=INPUT 170s read from INPUT in po, pot formats 170s -x EXCLUDE, --exclude=EXCLUDE 170s exclude names matching EXCLUDE from input paths 170s -o OUTPUT, --output=OUTPUT 170s write to OUTPUT in idml format 170s -t TEMPLATE, --template=TEMPLATE 170s read from TEMPLATE in idml format 170s -S, --timestamp skip conversion if the output file has newer timestamp 170s ========= SMOKE TEST: /usr/bin/po2ini =========== 170s Usage: po2ini [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 170s 170s Convert Gettext PO localization files to .ini files. See: 170s http://docs.translatehouse.org/projects/translate- 170s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 170s 170s Options: 170s --version show program's version number and exit 170s -h, --help show this help message and exit 170s --manpage output a manpage based on the help 170s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 170s --errorlevel=ERRORLEVEL 170s show errorlevel as: none, message, exception, 170s traceback 170s -i INPUT, --input=INPUT 170s read from INPUT in po, pot formats 170s -x EXCLUDE, --exclude=EXCLUDE 170s exclude names matching EXCLUDE from input paths 170s -o OUTPUT, --output=OUTPUT 170s write to OUTPUT in ini, isl formats 170s -t TEMPLATE, --template=TEMPLATE 170s read from TEMPLATE in ini, isl formats 170s -S, --timestamp skip conversion if the output file has newer timestamp 170s --threshold=PERCENT only convert files where the translation completion is 170s above PERCENT 170s --fuzzy use translations marked fuzzy 170s --nofuzzy don't use translations marked fuzzy (default) 171s ========= SMOKE TEST: /usr/bin/po2json =========== 171s Usage: po2json [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 171s 171s Convert Gettext PO localization files to JSON files. See: 171s http://docs.translatehouse.org/projects/translate- 171s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 171s 171s Options: 171s --version show program's version number and exit 171s -h, --help show this help message and exit 171s --manpage output a manpage based on the help 171s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 171s --errorlevel=ERRORLEVEL 171s show errorlevel as: none, message, exception, 171s traceback 171s -i INPUT, --input=INPUT 171s read from INPUT in po, pot formats 171s -x EXCLUDE, --exclude=EXCLUDE 171s exclude names matching EXCLUDE from input paths 171s -o OUTPUT, --output=OUTPUT 171s write to OUTPUT in json format 171s -t TEMPLATE, --template=TEMPLATE 171s read from TEMPLATE in json format 171s -S, --timestamp skip conversion if the output file has newer timestamp 171s --threshold=PERCENT only convert files where the translation completion is 171s above PERCENT 171s --fuzzy use translations marked fuzzy 171s --nofuzzy don't use translations marked fuzzy (default) 171s --removeuntranslated remove untranslated strings from output 171s ========= SMOKE TEST: /usr/bin/po2md =========== 171s Usage: po2md [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 171s 171s Translate Markdown files using Gettext PO localization files. See: 171s http://docs.translatehouse.org/projects/translate- 171s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 171s 171s Options: 171s --version show program's version number and exit 171s -h, --help show this help message and exit 171s --manpage output a manpage based on the help 171s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 171s --errorlevel=ERRORLEVEL 171s show errorlevel as: none, message, exception, 171s traceback 171s -i INPUT, --input=INPUT 171s read from INPUT in po, pot formats 171s -x EXCLUDE, --exclude=EXCLUDE 171s exclude names matching EXCLUDE from input paths 171s -o OUTPUT, --output=OUTPUT 171s write to OUTPUT in markdown, md, text, txt formats 171s -t TEMPLATE, --template=TEMPLATE 171s read from TEMPLATE in markdown, md, text, txt formats 171s -S, --timestamp skip conversion if the output file has newer timestamp 171s -m MAXLENGTH, --maxlinelength=MAXLENGTH 171s reflow (word wrap) the output to the given maximum 171s line length. set to 0 to disable 171s --threshold=PERCENT only convert files where the translation completion is 171s above PERCENT 171s --fuzzy use translations marked fuzzy 171s --nofuzzy don't use translations marked fuzzy (default) 171s ========= SMOKE TEST: /usr/bin/po2moz =========== 171s Usage: po2moz [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 171s 171s Convert Gettext PO localization files to Mozilla .dtd and .properties files. 171s See: http://docs.translatehouse.org/projects/translate- 171s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 171s 171s Options: 171s --version show program's version number and exit 171s -h, --help show this help message and exit 171s --manpage output a manpage based on the help 171s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 171s --errorlevel=ERRORLEVEL 171s show errorlevel as: none, message, exception, 171s traceback 171s -i INPUT, --input=INPUT 171s read from INPUT in *, dtd.po, dtd.pot, inc.po, 171s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 171s lang.pot, manifest, properties.po, properties.pot, rdf 171s formats 171s -x EXCLUDE, --exclude=EXCLUDE 171s exclude names matching EXCLUDE from input paths 171s -o OUTPUT, --output=OUTPUT 171s write to OUTPUT in *, dtd, inc, ini, it, js, lang, 171s manifest, properties, rdf formats 171s -t TEMPLATE, --template=TEMPLATE 171s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 171s manifest, properties, rdf formats 171s -S, --timestamp skip conversion if the output file has newer timestamp 171s -l LOCALE, --locale=LOCALE 171s set output locale (required as this sets the directory 171s names) 171s --threshold=PERCENT only convert files where the translation completion is 171s above PERCENT 171s --fuzzy use translations marked fuzzy 171s --nofuzzy don't use translations marked fuzzy (default) 171s --removeuntranslated remove untranslated strings from output 172s ========= SMOKE TEST: /usr/bin/po2mozlang =========== 172s Usage: po2mozlang [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 172s 172s Convert Gettext PO localization files to Mozilla .lang files. 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in po, pot formats 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in lang format 172s -t TEMPLATE, --template=TEMPLATE 172s read from TEMPLATE in lang format 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s --mark-active mark the file as active 172s --threshold=PERCENT only convert files where the translation completion is 172s above PERCENT 172s --fuzzy use translations marked fuzzy 172s --nofuzzy don't use translations marked fuzzy (default) 172s ========= SMOKE TEST: /usr/bin/po2oo =========== 172s Usage: po2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 172s 172s Convert Gettext PO localization files to an OpenOffice.org (SDF) localization 172s file. See: http://docs.translatehouse.org/projects/translate- 172s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in po, pot, xlf, xliff formats 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in oo, sdf formats 172s -t TEMPLATE, --template=TEMPLATE 172s read from TEMPLATE in oo, sdf formats 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s -l LANG, --language=LANG 172s set target language code (e.g. af-ZA) [required] 172s --source-language=LANG 172s set source language code (default en-US) 172s -T, --keeptimestamp don't change the timestamps of the strings 172s --nonrecursiveoutput don't treat the output oo as a recursive store 172s --nonrecursivetemplate 172s don't treat the template oo as a recursive store 172s --skipsource don't output the source language, but fallback to it 172s where needed 172s --filteraction=ACTION 172s action on pofilter failure: none (default), warn, 172s exclude-serious, exclude-all 172s --threshold=PERCENT only convert files where the translation completion is 172s above PERCENT 172s --fuzzy use translations marked fuzzy 172s --nofuzzy don't use translations marked fuzzy (default) 172s --multifile=MULTIFILESTYLE 172s how to split po/pot files (single, toplevel or 172s onefile) 172s ========= SMOKE TEST: /usr/bin/po2php =========== 172s Usage: po2php [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 172s 172s Convert Gettext PO localization files to PHP localization files. See: 172s http://docs.translatehouse.org/projects/translate- 172s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in po, pot formats 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in html, php formats 172s -t TEMPLATE, --template=TEMPLATE 172s read from TEMPLATE in html, php formats 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s --threshold=PERCENT only convert files where the translation completion is 172s above PERCENT 172s --fuzzy use translations marked fuzzy 172s --nofuzzy don't use translations marked fuzzy (default) 172s ========= SMOKE TEST: /usr/bin/po2prop =========== 172s Usage: po2prop [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 172s 172s Convert Gettext PO localization files to Java/Mozilla .properties files. 172s See: http://docs.translatehouse.org/projects/translate- 172s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in po, pot formats 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in lang, properties, strings formats 172s -t TEMPLATE, --template=TEMPLATE 172s read from TEMPLATE in lang, properties, strings 172s formats 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s --personality=TYPE override the input file format: java, java-utf8, java- 172s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 172s strings, strings-utf8, joomla (for .properties files, 172s default: java) 172s --encoding=ENCODING override the encoding set by the personality 172s --threshold=PERCENT only convert files where the translation completion is 172s above PERCENT 172s --fuzzy use translations marked fuzzy 172s --nofuzzy don't use translations marked fuzzy (default) 172s --removeuntranslated remove untranslated strings from output 172s ========= SMOKE TEST: /usr/bin/po2rc =========== 172s Usage: po2rc [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 172s 172s Convert Gettext PO localization files back to Windows Resource (.rc) files. 172s See: http://docs.translatehouse.org/projects/translate- 172s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in po, pot formats 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in rc format 172s -t TEMPLATE, --template=TEMPLATE 172s read from TEMPLATE in rc format 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s --charset=CHARSET charset to use to decode the RC files (default: utf-8) 172s -l LANG, --lang=LANG LANG entry 172s --sublang=SUBLANG SUBLANG entry (default: SUBLANG_DEFAULT) 172s --threshold=PERCENT only convert files where the translation completion is 172s above PERCENT 172s --fuzzy use translations marked fuzzy 172s --nofuzzy don't use translations marked fuzzy (default) 172s ========= SMOKE TEST: /usr/bin/po2resx =========== 172s Usage: po2resx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 172s 172s Convert Gettext PO localisation files to .Net Resource (.resx) files. See: 172s http://docs.translatehouse.org/projects/translate- 172s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 172s 172s Options: 172s --version show program's version number and exit 172s -h, --help show this help message and exit 172s --manpage output a manpage based on the help 172s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 172s --errorlevel=ERRORLEVEL 172s show errorlevel as: none, message, exception, 172s traceback 172s -i INPUT, --input=INPUT 172s read from INPUT in po, pot formats 172s -x EXCLUDE, --exclude=EXCLUDE 172s exclude names matching EXCLUDE from input paths 172s -o OUTPUT, --output=OUTPUT 172s write to OUTPUT in resx format 172s -t TEMPLATE, --template=TEMPLATE 172s read from TEMPLATE in resx format 172s -S, --timestamp skip conversion if the output file has newer timestamp 172s --fuzzy use translations marked fuzzy 172s --nofuzzy don't use translations marked fuzzy (default) 173s ========= SMOKE TEST: /usr/bin/po2sub =========== 173s Usage: po2sub [--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 Gettext PO localization files to subtitle files. See: 173s http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/sub2po.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 po, pot formats 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in ass, srt, ssa, sub formats 173s -t TEMPLATE, --template=TEMPLATE 173s read from TEMPLATE in ass, srt, ssa, sub formats 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s --threshold=PERCENT only convert files where the translation completion is 173s above PERCENT 173s --fuzzy use translations marked fuzzy 173s --nofuzzy don't use translations marked fuzzy (default) 173s ========= SMOKE TEST: /usr/bin/po2symb =========== 173s Usage: po2symb [--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 Gettext PO localization files to Symbian translation files. See: 173s http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/symb2po.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 po, pot formats 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in r0 format 173s -t TEMPLATE, --template=TEMPLATE 173s read from TEMPLATE in 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/po2tiki =========== 173s Usage: po2tiki [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 173s 173s Convert Gettext PO files to TikiWiki's language.php files. See: 173s http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/tiki2po.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 po, pot formats 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in tiki format 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s ========= SMOKE TEST: /usr/bin/po2tmx =========== 173s Usage: po2tmx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 173s 173s Convert Gettext PO localization files to a TMX (Translation Memory eXchange) 173s file. See: http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/po2tmx.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 po, pot formats 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in tmx format 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s -l LANG, --language=LANG 173s set target language code (e.g. af-ZA) [required] 173s --source-language=LANG 173s set source language code (default: en) 173s --comments=COMMENT set default comment import: none, source, type or 173s others (default: none) 173s ========= SMOKE TEST: /usr/bin/po2ts =========== 173s Usage: po2ts [--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 Gettext PO localization files to Qt Linguist (.ts) files. See: 173s http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/ts2po.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 po, pot formats 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in ts format 173s -t TEMPLATE, --template=TEMPLATE 173s read from TEMPLATE in ts format 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s -c CONTEXT, --context=CONTEXT 173s use supplied context instead of the one in the .po 173s file comment 173s ========= SMOKE TEST: /usr/bin/po2txt =========== 173s Usage: po2txt [--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 Gettext PO localization files to plain text (.txt) files. See: 173s http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/txt2po.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 po, pot, xlf, xliff formats 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in txt format 173s -t TEMPLATE, --template=TEMPLATE 173s read from TEMPLATE in txt format 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s --encoding=ENCODING The encoding of the template file (default: UTF-8) 173s -w WRAP, --wrap=WRAP set number of columns to wrap text at 173s --threshold=PERCENT only convert files where the translation completion is 173s above PERCENT 173s --fuzzy use translations marked fuzzy 173s --nofuzzy don't use translations marked fuzzy (default) 173s ========= SMOKE TEST: /usr/bin/po2web2py =========== 173s Usage: po2web2py [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 173s 173s Convert GNU/gettext PO files to web2py translation dictionaries (.py). See: 173s http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/web2py2po.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 po, pot formats 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in py format 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s --threshold=PERCENT only convert files where the translation completion is 173s above PERCENT 173s --fuzzy use translations marked fuzzy 173s --nofuzzy don't use translations marked fuzzy (default) 173s ========= SMOKE TEST: /usr/bin/po2wordfast =========== 173s Usage: po2wordfast [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 173s 173s Convert Gettext PO localization files to a Wordfast translation memory file. 173s See: http://docs.translatehouse.org/projects/translate- 173s toolkit/en/latest/commands/po2wordfast.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 po, pot formats 173s -x EXCLUDE, --exclude=EXCLUDE 173s exclude names matching EXCLUDE from input paths 173s -o OUTPUT, --output=OUTPUT 173s write to OUTPUT in txt format 173s -S, --timestamp skip conversion if the output file has newer timestamp 173s -l LANG, --language=LANG 173s set target language code (e.g. af-ZA) [required] 173s --source-language=LANG 173s set source language code (default: en) 174s ========= SMOKE TEST: /usr/bin/po2xliff =========== 174s Usage: po2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 174s 174s Convert Gettext PO localization files to XLIFF localization files. See: 174s http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/xliff2po.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 po, pot formats 174s -x EXCLUDE, --exclude=EXCLUDE 174s exclude names matching EXCLUDE from input paths 174s -o OUTPUT, --output=OUTPUT 174s write to OUTPUT in xlf, xliff formats 174s -t TEMPLATE, --template=TEMPLATE 174s read from TEMPLATE in xlf, xliff formats 174s -S, --timestamp skip conversion if the output file has newer timestamp 174s ========= SMOKE TEST: /usr/bin/po2yaml =========== 174s Usage: po2yaml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 174s 174s Convert Gettext PO localization files to YAML files. See: 174s http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/yaml2po.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 po, pot formats 174s -x EXCLUDE, --exclude=EXCLUDE 174s exclude names matching EXCLUDE from input paths 174s -o OUTPUT, --output=OUTPUT 174s write to OUTPUT in yaml, yml formats 174s -t TEMPLATE, --template=TEMPLATE 174s read from TEMPLATE in yaml, yml formats 174s -S, --timestamp skip conversion if the output file has newer timestamp 174s --threshold=PERCENT only convert files where the translation completion is 174s above PERCENT 174s --fuzzy use translations marked fuzzy 174s --nofuzzy don't use translations marked fuzzy (default) 174s ========= SMOKE TEST: /usr/bin/poclean =========== 174s Usage: poclean [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 174s 174s Produces a clean file from an unclean file (Trados/Wordfast) by stripping out 174s the tw4win indicators. This does not convert an RTF file to PO/XLIFF, but 174s produces the target file with only the target text in from a text version of 174s the RTF. 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 po, pot, xlf, xliff 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, xlf, xliff formats 174s -S, --timestamp skip conversion if the output file has newer timestamp 174s ========= SMOKE TEST: /usr/bin/pocompendium =========== 174s Usage: pocompendium [options] output.po <-d directory(s)|file(s)> 174s The first parameter is the output file, standard output if the output file is '-'. 174s Any number of directories may be specified for input files. 174s Options: 174s --invert|v Creates an inverse compendium with msgid and msgstr swapped 174s --errors|e Only ouput msg bundles that have errors 174s --correct|c Only ouput msg bundles that are correctly translated 174s --ignore-case|i Drops all strings to lowercase 174s --strip-accel-tilde|-st Strip all tilde (~) accelerator characters 174s --strip-accel-amp|-sa Strip all ampersand (&) accelerator characters 174s --strip-accel-under|-su Strip all underscore (_) accelerator characters 174s ========= SMOKE TEST: /usr/bin/pocompile =========== 174s Usage: pocompile [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 174s 174s Compile XLIFF and Gettext PO localization files into Gettext MO (Machine 174s Object) files. See: http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/pocompile.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 po, pot, xlf, xliff formats 174s -x EXCLUDE, --exclude=EXCLUDE 174s exclude names matching EXCLUDE from input paths 174s -o OUTPUT, --output=OUTPUT 174s write to OUTPUT in mo format 174s -S, --timestamp skip conversion if the output file has newer timestamp 174s --fuzzy use translations marked fuzzy 174s --nofuzzy don't use translations marked fuzzy (default) 174s ========= SMOKE TEST: /usr/bin/poconflicts =========== 174s 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] 174s input directory is searched for PO files, PO files with name of conflicting string are output in output directory 174s 174s Conflict finder for Gettext PO localization files. See: 174s http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/poconflicts.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 po 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 format 174s -I, --ignore-case ignore case distinctions 174s -v, --invert invert the conflicts thus extracting conflicting 174s destination words 174s --accelerator=ACCELERATORS 174s ignores the given accelerator characters when matching 174s ========= SMOKE TEST: /usr/bin/pocount =========== 174s usage: pocount [-h] [--incomplete] 174s [--full | --csv | --short | --short-strings | --short-words] 174s [--no-color] 174s files [files ...] 174s 174s positional arguments: 174s files 174s 174s options: 174s -h, --help show this help message and exit 174s --incomplete skip 100% translated files. 174s 174s Output format: 174s --full (default) statistics in full, verbose format 174s --csv statistics in CSV format 174s --short same as --short-strings 174s --short-strings statistics of strings in short format - one line per file 174s --short-words statistics of words in short format - one line per file 174s --no-color show output without color 174s ========= SMOKE TEST: /usr/bin/podebug =========== 174s Usage: podebug [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 174s 174s Insert debug messages into XLIFF and Gettext PO localization files. See: 174s http://docs.translatehouse.org/projects/translate- 174s toolkit/en/latest/commands/podebug.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 po, pot, pot, tmx, xlf, xliff 174s 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, tmx, xlf, xliff formats 174s -S, --timestamp skip conversion if the output file has newer timestamp 174s -f FORMAT, --format=FORMAT 174s specify format string 174s --rewrite=STYLE the translation rewrite style: blank, bracket, chef, 174s classified, en, flipped, unicode, xxx 174s --ignore=APPLICATION apply tagging ignore rules for the given application: 174s gtk, kde, libreoffice, mozilla, openoffice 174s --preserveplaceholders 174s attempt to exclude characters that are part of 174s placeholders when performing character-level rewrites 174s so that consuming applications can still use the 174s placeholders to generate final output 175s ========= SMOKE TEST: /usr/bin/pofilter =========== 175s Usage: pofilter [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 175s 175s Perform quality checks on Gettext PO, XLIFF and TMX localization files. 175s Snippet files are created whenever a test fails. These can be examined, 175s corrected and merged back into the originals using pomerge. See: 175s http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/pofilter.html for examples and usage instructions 175s and http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/pofilter_tests.html for full descriptions of all 175s tests. 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 po, pot, tmx, xlf, xliff 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, tmx, xlf, xliff formats 175s -l, --listfilters list filters available 175s --review include units marked for review (default) 175s --noreview exclude units marked for review 175s --fuzzy include units marked fuzzy (default) 175s --nofuzzy exclude units marked fuzzy 175s --nonotes don't add notes about the errors 175s --autocorrect output automatic corrections where possible rather 175s than describing issues 175s --language=LANG set target language code (e.g. af-ZA) [required for 175s spell check and recommended in general] 175s --openoffice use the standard checks for OpenOffice translations 175s --libreoffice use the standard checks for LibreOffice translations 175s --mozilla use the standard checks for Mozilla translations 175s --drupal use the standard checks for Drupal translations 175s --gnome use the standard checks for Gnome translations 175s --kde use the standard checks for KDE translations 175s --wx use the standard checks for wxWidgets translations 175s --excludefilter=FILTER 175s don't use FILTER when filtering 175s -t FILTER, --test=FILTER 175s only use test FILTERs specified with this option when 175s filtering 175s --notranslatefile=FILE 175s read list of untranslatable words from FILE (must not 175s be translated) 175s --musttranslatefile=FILE 175s read list of translatable words from FILE (must be 175s translated) 175s --validcharsfile=FILE 175s read list of all valid characters from FILE (must be 175s in UTF-8) 175s ========= SMOKE TEST: /usr/bin/pogrep =========== 175s 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] 175s 175s Grep XLIFF, Gettext PO and TMX localization files. Matches are output to 175s snippet files of the same type which can then be reviewed and later merged 175s using :doc:`pomerge `. See: 175s http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/pogrep.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 gmo, mo, po, pot, tmx, xlf, xlff, 175s xliff formats 175s -x EXCLUDE, --exclude=EXCLUDE 175s exclude names matching EXCLUDE from input paths 175s -o OUTPUT, --output=OUTPUT 175s write to OUTPUT in gmo, mo, po, pot, tmx, xlf, xlff, 175s xliff formats 175s --search=SEARCHPARTS searches the given parts (source, target, notes and 175s locations) 175s -I, --ignore-case ignore case distinctions 175s -e, --regexp use regular expression matching 175s -v, --invert-match select non-matching lines 175s --accelerator=ACCELERATOR 175s ignores the given accelerator when matching 175s -k, --keep-translations 175s always extract units with translations 175s ========= SMOKE TEST: /usr/bin/pomerge =========== 175s Usage: pomerge [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 175s 175s Merges XLIFF and Gettext PO localization files. Snippet file produced by 175s e.g. :doc:`pogrep ` and updated by a translator can be 175s merged back into the original files. See: 175s http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/pomerge.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 po, pot, pot, xlf, xliff 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, pot, xlf, xliff formats 175s -t TEMPLATE, --template=TEMPLATE 175s read from TEMPLATE in po, pot, pot, xlf, xliff formats 175s -S, --timestamp skip conversion if the output file has newer timestamp 175s --mergeblanks=MERGEBLANKS 175s whether to overwrite existing translations with blank 175s translations (yes/no). Default is yes. 175s --mergefuzzy=MERGEFUZZY 175s whether to consider fuzzy translations from input 175s (yes/no). Default is yes. 175s --mergecomments=MERGECOMMENTS 175s whether to merge comments as well as translations 175s (yes/no). Default is yes. 175s ========= SMOKE TEST: /usr/bin/pomigrate2 =========== 175s Usage pomigrate2 [options] 175s 175s Options: 175s -F|--use-fuzzy-matching - use fuzzy algorithms when merging to attempt to match strings 175s -C|--use-compendium - create and use a compendium built from the migrating files 175s -C|--use-compendium=some-compendium.po 175s - use an external compendium during the migration 175s --no-wrap - do not wrap long lines 175s --locale=lang - set locale for newly born files 175s -q|--quiet - suppress most output 175s -p|--pot2po - use pot2po instead of msgmerge to migrate 175s ========= SMOKE TEST: /usr/bin/popuretext =========== 175s Usage: popuretext ( -P pot-dir | po-dir ) file.txt [accelerator] 175s ========= SMOKE TEST: /usr/bin/poreencode =========== 175s Usage: poreencode 175s eg: poreencode UTF-8 af/ 175s ========= SMOKE TEST: /usr/bin/porestructure =========== 175s Usage: porestructure [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 175s input directory is searched for PO files with (poconflicts) comments, all entries are written to files in a directory structure for pomerge 175s 175s Restructure Gettxt PO files produced by :doc:`poconflicts 175s ` into the original directory tree for merging using 175s :doc:`pomerge `. See: 175s http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/pomerge.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 po 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 format 175s ========= SMOKE TEST: /usr/bin/posegment =========== 175s Usage: posegment [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 175s 175s Segment Gettext PO, XLIFF and TMX localization files at the sentence level. 175s See: http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/posegment.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 po, pot, tmx, xlf, xliff 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, tmx, xlf, xliff 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 -l LANG, --language=LANG 175s the target language code 175s --source-language=LANG 175s the source language code (default 'en') 175s --keepspaces Disable automatic stripping of whitespace 175s --only-aligned Removes units where sentence number does not 175s correspond 175s ========= SMOKE TEST: /usr/bin/poswap =========== 175s Usage: poswap [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 175s 175s Builds a new translation file with the target of the input language as source 175s language. .. note:: Ensure that the two po files correspond 100% to the same 175s pot file before using this. To translate Kurdish (ku) through French:: 175s poswap -i fr/ -t ku -o fr-ku To convert the fr-ku files back to en-ku:: 175s poswap --reverse -i fr/ -t fr-ku -o en-ku See: 175s http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/poswap.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 po, pot 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 po, pot, pot formats 175s -S, --timestamp skip conversion if the output file has newer timestamp 175s --reverse reverse the process of intermediate language 175s conversion 175s ========= SMOKE TEST: /usr/bin/pot2po =========== 175s 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] 175s 175s Convert template files (like .pot or template .xlf files) to translation 175s files, preserving existing translations. See: 175s http://docs.translatehouse.org/projects/translate- 175s toolkit/en/latest/commands/pot2po.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 catkeys, lang, pot, ts, xlf, xliff 175s formats 175s -x EXCLUDE, --exclude=EXCLUDE 175s exclude names matching EXCLUDE from input paths 175s -o OUTPUT, --output=OUTPUT 175s write to OUTPUT in catkeys, lang, po, pot, ts, xlf, 175s xliff formats 175s -t TEMPLATE, --template=TEMPLATE 175s read from TEMPLATE in catkeys, lang, po, pot, ts, xlf, 175s xliff 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 --tm=TM The file to use as translation memory when fuzzy 175s matching 175s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 175s The minimum similarity for inclusion (default: 75%) 175s --nofuzzymatching Disable fuzzy matching 176s ========= SMOKE TEST: /usr/bin/poterminology =========== 176s 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] 176s input directory is searched for PO files, terminology PO file is output file 176s 176s Create a terminology file by reading a set of .po or .pot files to produce a 176s pootle-terminology.pot. See: 176s http://docs.translatehouse.org/projects/translate- 176s toolkit/en/latest/commands/poterminology.html for examples and usage 176s 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 po, pot 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 -u UPDATEFILE, --update=UPDATEFILE 176s update terminology in UPDATEFILE 176s -S STOPFILE, --stopword-list=STOPFILE 176s read stopword (term exclusion) list from STOPFILE 176s (default /usr/share/pyshared/translate/share/stoplist- 176s en) 176s -F, --fold-titlecase fold "Title Case" to lowercase (default) 176s -C, --preserve-case preserve all uppercase/lowercase 176s -I, --ignore-case make all terms lowercase 176s --accelerator=ACCELERATORS 176s ignore the given accelerator characters when matching 176s -t LENGTH, --term-words=LENGTH 176s generate terms of up to LENGTH words (default 3) 176s --nonstop-needed=MIN omit terms with less than MIN nonstop words (default 176s 1) 176s --inputs-needed=MIN omit terms appearing in less than MIN input files 176s (default 2, or 1 if only one input file) 176s --fullmsg-needed=MIN omit full message terms appearing in less than MIN 176s different messages (default 1) 176s --substr-needed=MIN omit substring-only terms appearing in less than MIN 176s different messages (default 2) 176s --locs-needed=MIN omit terms appearing in less than MIN different 176s original source files (default 2) 176s --sort=ORDER output sort order(s): frequency, dictionary, length 176s (may repeat option, default is all in above order) 176s --source-language=LANG 176s the source language code (default 'en') 176s -v, --invert invert the source and target languages for terminology 176s ========= SMOKE TEST: /usr/bin/pretranslate =========== 176s Usage: pretranslate [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 176s 176s Fill localization files with suggested translations based on translation 176s memory and existing translations. See: 176s http://docs.translatehouse.org/projects/translate- 176s toolkit/en/latest/commands/pretranslate.html for examples and usage 176s 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 po, pot, pot, xlf, xliff 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, xlf, xliff formats 176s -t TEMPLATE, --template=TEMPLATE 176s read from TEMPLATE in po, pot, xlf, xliff formats 176s -S, --timestamp skip conversion if the output file has newer timestamp 176s --tm=TM The file to use as translation memory when fuzzy 176s matching 176s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 176s The minimum similarity for inclusion (default: 75%) 176s --nofuzzymatching Disable fuzzy matching 176s ========= SMOKE TEST: /usr/bin/prop2po =========== 176s 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] 176s 176s Convert Java/Mozilla .properties files to Gettext PO localization files. 176s See: http://docs.translatehouse.org/projects/translate- 176s toolkit/en/latest/commands/prop2po.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 lang, properties, strings 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 -t TEMPLATE, --template=TEMPLATE 176s read from TEMPLATE in lang, properties, strings 176s 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 --personality=TYPE override the input file format: java, java-utf8, java- 176s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 176s strings, strings-utf8, joomla (for .properties files, 176s default: java) 176s --encoding=ENCODING override the encoding set by the personality 176s --duplicates=DUPLICATESTYLE 176s what to do with duplicate strings (identical source 176s text): merge, msgctxt (default: 'msgctxt') 176s ========= SMOKE TEST: /usr/bin/pydiff =========== 176s usage: pydiff [-h] [-i] [-U NUM] [-r] [-N] [--unidirectional-new-file] [-s] 176s [-x PAT] [--fromcontains TEXT] [--tocontains TEXT] 176s [--contains TEXT] [-I] [--accelerator ACCELERATORS] 176s fromfile tofile 176s 176s positional arguments: 176s fromfile 176s tofile 176s 176s options: 176s -h, --help show this help message and exit 176s -i, --ignore-case Ignore case differences in file contents. 176s -U NUM, --unified NUM 176s Output NUM (default 3) lines of unified context 176s -r, --recursive Recursively compare any subdirectories found. 176s -N, --new-file Treat absent files as empty. 176s --unidirectional-new-file 176s Treat absent first files as empty. 176s -s, --report-identical-files 176s Report when two files are the same. 176s -x PAT, --exclude PAT 176s Exclude files that match PAT. 176s --fromcontains TEXT Only show changes where fromfile contains TEXT 176s --tocontains TEXT Only show changes where tofile contains TEXT 176s --contains TEXT Only show changes where fromfile or tofile contains 176s TEXT 176s -I, --ignore-case-contains 176s Ignore case differences when matching any of the 176s changes 176s --accelerator ACCELERATORS 176s ignores the given accelerator characters when matching 176s ========= SMOKE TEST: /usr/bin/pypo2phppo =========== 176s Usage: pypo2phppo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 176s 176s Convert Python format .po files to PHP format .po 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 po, pot 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 ========= SMOKE TEST: /usr/bin/rc2po =========== 176s 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] 176s 176s Convert Windows RC files to Gettext PO localization files. See: 176s http://docs.translatehouse.org/projects/translate- 176s toolkit/en/latest/commands/rc2po.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 nls, rc 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 -t TEMPLATE, --template=TEMPLATE 176s read from TEMPLATE in nls, rc 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 --charset=CHARSET charset to use to decode the RC files (autodetection 176s is used by default) 176s -l LANG, --lang=LANG LANG entry (default: None) 176s --sublang=SUBLANG SUBLANG entry (default: None) 176s --duplicates=DUPLICATESTYLE 176s what to do with duplicate strings (identical source 176s text): merge, msgctxt (default: 'msgctxt') 176s ========= SMOKE TEST: /usr/bin/resx2po =========== 177s 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] 177s 177s Convert .Net Resource (.resx) to Gettext PO localisation files. See: 177s http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/resx2po.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 resx format 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 resx format 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 --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 177s everything) 177s --duplicates=DUPLICATESTYLE 177s what to do with duplicate strings (identical source 177s text): merge, msgctxt (default: 'msgctxt') 177s ========= SMOKE TEST: /usr/bin/sub2po =========== 177s 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] 177s 177s Convert subtitle files to Gettext PO localization files. See: 177s http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/sub2po.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 ass, srt, ssa, sub 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 ass, srt, ssa, sub 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/symb2po =========== 177s 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] 177s 177s Convert Symbian localisation files to Gettext PO localization files. See: 177s http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/symb2po.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 r01 format 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 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/tbx2po =========== 177s Usage: tbx2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 177s 177s Convert TermBase eXchange (.tbx) glossary file into a Gettext PO file. See: 177s http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/tbx2po.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 tbx format 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/tiki2po =========== 177s Usage: tiki2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 177s 177s Convert TikiWiki's language.php files to Gettext PO localization files. See: 177s http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/tiki2po.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 php format 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 --include-unused Include strings in the unused section 177s ========= SMOKE TEST: /usr/bin/tmserver =========== 177s usage: tmserver [-h] [-d TMDBFILE] [-f TMFILES] [-t TARGET_LANG] 177s [-s SOURCE_LANG] [-b BIND] [-p PORT] 177s [--max-candidates MAX_CANDIDATES] 177s [--min-similarity MIN_SIMILARITY] [--max-length MAX_LENGTH] 177s [--debug] 177s 177s options: 177s -h, --help show this help message and exit 177s -d TMDBFILE, --tmdb TMDBFILE 177s translation memory database file 177s -f TMFILES, --import-translation-file TMFILES 177s translation file to import into the database 177s -t TARGET_LANG, --import-target-lang TARGET_LANG 177s target language of translation files 177s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 177s source language of translation files 177s -b BIND, --bind BIND address to bind server to (default: localhost) 177s -p PORT, --port PORT port to listen on (default: 8888) 177s --max-candidates MAX_CANDIDATES 177s Maximum number of candidates 177s --min-similarity MIN_SIMILARITY 177s minimum similarity 177s --max-length MAX_LENGTH 177s Maxmimum string length 177s --debug enable debugging features 177s ========= SMOKE TEST: /usr/bin/ts2po =========== 177s Usage: ts2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 177s 177s Convert Qt Linguist (.ts) files to Gettext PO localization files. See: 177s http://docs.translatehouse.org/projects/translate- 177s toolkit/en/latest/commands/ts2po.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 ts format 177s -x EXCLUDE, --exclude=EXCLUDE 177s exclude names matching EXCLUDE from input paths 177s -o OUTPUT, --output=OUTPUT 177s write to OUTPUT in po, pot formats 177s -S, --timestamp skip conversion if the output file has newer timestamp 177s -P, --pot output PO Templates (.pot) rather than PO files (.po) 177s --duplicates=DUPLICATESTYLE 177s what to do with duplicate strings (identical source 177s text): merge, msgctxt (default: 'msgctxt') 178s ========= SMOKE TEST: /usr/bin/txt2po =========== 178s Usage: txt2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 178s 178s Convert plain text (.txt) files to Gettext PO localization files. See: 178s http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/txt2po.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 *, txt formats 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in po, pot formats 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s -P, --pot output PO Templates (.pot) rather than PO files (.po) 178s --encoding=ENCODING The encoding of the input file (default: UTF-8) 178s --flavour=FLAVOUR The flavour of text file: plain (default), dokuwiki, 178s mediawiki 178s --no-segmentation Don't segment the file, treat it like a single message 178s --duplicates=DUPLICATESTYLE 178s what to do with duplicate strings (identical source 178s text): merge, msgctxt (default: 'msgctxt') 178s ========= SMOKE TEST: /usr/bin/web2py2po =========== 178s Usage: web2py2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 178s 178s Convert web2py translation dictionaries (.py) to GNU/gettext PO files. See: 178s http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/web2py2po.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 py format 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in po, pot formats 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s -P, --pot output PO Templates (.pot) rather than PO files (.po) 178s --duplicates=DUPLICATESTYLE 178s what to do with duplicate strings (identical source 178s text): merge, msgctxt (default: 'msgctxt') 178s ========= SMOKE TEST: /usr/bin/xliff2odf =========== 178s Usage: xliff2odf [--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 XLIFF translation files to OpenDocument (ODF) files. See: 178s http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/odf2xliff.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 xlf format 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in odc, odf, odg, odi, odm, odp, ods, 178s odt, otc, otf, otg, oth, oti, otp, ots, ott formats 178s -t TEMPLATE, --template=TEMPLATE 178s read from TEMPLATE in odc, odf, odg, odi, odm, odp, 178s ods, odt, otc, otf, otg, oth, oti, otp, ots, ott 178s formats 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s ========= SMOKE TEST: /usr/bin/xliff2oo =========== 178s Usage: xliff2oo [--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 XLIFF localization files to an OpenOffice.org (SDF) localization 178s file. See: http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/oo2po.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, xlf, xliff formats 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in oo, sdf formats 178s -t TEMPLATE, --template=TEMPLATE 178s read from TEMPLATE in oo, sdf formats 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s -l LANG, --language=LANG 178s set target language code (e.g. af-ZA) [required] 178s --source-language=LANG 178s set source language code (default en-US) 178s -T, --keeptimestamp don't change the timestamps of the strings 178s --nonrecursiveoutput don't treat the output oo as a recursive store 178s --nonrecursivetemplate 178s don't treat the template oo as a recursive store 178s --skipsource don't output the source language, but fallback to it 178s where needed 178s --filteraction=ACTION 178s action on pofilter failure: none (default), warn, 178s exclude-serious, exclude-all 178s --fuzzy use translations marked fuzzy 178s --nofuzzy don't use translations marked fuzzy (default) 178s --multifile=MULTIFILESTYLE 178s how to split po/pot files (single, toplevel or 178s onefile) 178s ========= SMOKE TEST: /usr/bin/xliff2po =========== 178s Usage: xliff2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 178s 178s Convert XLIFF localization files to Gettext PO localization files. See: 178s http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/xliff2po.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 xlf, xliff formats 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in po, pot formats 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s -P, --pot output PO Templates (.pot) rather than PO files (.po) 178s --duplicates=DUPLICATESTYLE 178s what to do with duplicate strings (identical source 178s text): merge, msgctxt (default: 'msgctxt') 178s ========= SMOKE TEST: /usr/bin/yaml2po =========== 178s 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] 178s 178s Convert YAML files to Gettext PO localization files. See: 178s http://docs.translatehouse.org/projects/translate- 178s toolkit/en/latest/commands/yaml2po.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 yaml, yml formats 178s -x EXCLUDE, --exclude=EXCLUDE 178s exclude names matching EXCLUDE from input paths 178s -o OUTPUT, --output=OUTPUT 178s write to OUTPUT in po, pot formats 178s -t TEMPLATE, --template=TEMPLATE 178s read from TEMPLATE in yaml, yml formats 178s -S, --timestamp skip conversion if the output file has newer timestamp 178s -P, --pot output PO Templates (.pot) rather than PO files (.po) 178s --duplicates=DUPLICATESTYLE 178s what to do with duplicate strings (identical source 178s text): merge, msgctxt (default: 'msgctxt') 179s autopkgtest [12:29:04]: test translate-toolkit: -----------------------] 179s autopkgtest [12:29:04]: test translate-toolkit: - - - - - - - - - - results - - - - - - - - - - 179s translate-toolkit PASS 179s autopkgtest [12:29:04]: test python3-translate: preparing testbed 330s autopkgtest [12:31:35]: testbed dpkg architecture: amd64 330s autopkgtest [12:31:35]: testbed apt version: 2.9.3 330s autopkgtest [12:31:35]: @@@@@@@@@@@@@@@@@@@@ test bed setup 330s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [73.9 kB] 330s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [61.3 kB] 330s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [547 kB] 330s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [1964 B] 330s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [3952 B] 330s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main amd64 Packages [137 kB] 330s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/main i386 Packages [101 kB] 330s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/restricted amd64 Packages [7700 B] 330s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 Packages [604 kB] 330s Get:10 http://ftpmaster.internal/ubuntu oracular-proposed/universe i386 Packages [261 kB] 330s Get:11 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse amd64 Packages [2292 B] 330s Get:12 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse i386 Packages [1392 B] 330s Fetched 1802 kB in 0s (5349 kB/s) 331s Reading package lists... 332s Reading package lists... 332s Building dependency tree... 332s Reading state information... 332s Calculating upgrade... 333s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 333s Reading package lists... 333s Building dependency tree... 333s Reading state information... 333s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 333s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 333s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 333s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 333s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 335s Reading package lists... 335s Reading package lists... 335s Building dependency tree... 335s Reading state information... 335s Calculating upgrade... 336s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 336s Reading package lists... 336s Building dependency tree... 336s Reading state information... 336s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 337s Reading package lists... 338s Building dependency tree... 338s Reading state information... 338s Starting pkgProblemResolver with broken count: 1 338s Starting 2 pkgProblemResolver with broken count: 1 338s Investigating (0) python3-ruamel.yaml:amd64 < none -> 0.18.6+ds-3 @un puN Ib > 338s Broken python3-ruamel.yaml:amd64 Depends on python3-ruamel.yaml.clib:amd64 < none | 0.2.8-1build1 @un uH > (>= 0.2.8-2) 338s Considering python3-ruamel.yaml.clib:amd64 0 as a solution to python3-ruamel.yaml:amd64 1 338s Re-Instated python3-ruamel.yaml.clib:amd64 338s Done 338s Some packages could not be installed. This may mean that you have 338s requested an impossible situation or if you are using the unstable 338s distribution that some required packages have not yet been created 338s or been moved out of Incoming. 338s The following information may help to resolve the situation: 338s 338s The following packages have unmet dependencies: 338s python3-ruamel.yaml : Depends: python3-ruamel.yaml.clib (>= 0.2.8-2) but 0.2.8-1build1 is to be installed 338s E: Unable to correct problems, you have held broken packages. 338s autopkgtest: WARNING: Test dependencies are unsatisfiable with using apt pinning. Retrying with using all packages from oracular-proposed 338s Reading package lists... 339s Building dependency tree... 339s Reading state information... 339s Starting pkgProblemResolver with broken count: 0 339s Starting 2 pkgProblemResolver with broken count: 0 339s Done 340s The following additional packages will be installed: 340s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 340s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 340s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 340s python3-aeidon python3-all python3-bs4 python3-cheroot python3-dateutil 340s python3-diff-match-patch python3-enchant python3-iniconfig python3-iniparse 340s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 340s python3-more-itertools python3-packaging python3-phply python3-pluggy 340s python3-ply python3-pycountry python3-pytest python3-rapidfuzz 340s python3-ruamel.yaml python3-ruamel.yaml.clib python3-simplejson 340s python3-soupsieve python3-syrupy python3-translate python3-vobject 340s python3-xapian subversion 340s Suggested packages: 340s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 340s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 340s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 340s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 340s db5.3-util libapache2-mod-svn subversion-tools 340s Recommended packages: 340s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 340s python3-cssselect python3-html5lib 340s The following NEW packages will be installed: 340s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 340s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 340s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 340s libxslt1.1 python3-aeidon python3-all python3-bs4 python3-cheroot 340s python3-dateutil python3-diff-match-patch python3-enchant python3-iniconfig 340s python3-iniparse python3-jaraco.functools python3-levenshtein python3-lxml 340s python3-mistletoe python3-more-itertools python3-packaging python3-phply 340s python3-pluggy python3-ply python3-pycountry python3-pytest 340s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 340s python3-simplejson python3-soupsieve python3-syrupy python3-translate 340s python3-vobject python3-xapian subversion 340s 0 upgraded, 47 newly installed, 0 to remove and 39 not upgraded. 340s Need to get 11.5 MB/11.5 MB of archives. 340s After this operation, 53.0 MB of additional disk space will be used. 340s Get:1 /tmp/autopkgtest.uHbnTa/2-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [880 B] 340s Get:2 http://ftpmaster.internal/ubuntu oracular/main amd64 emacsen-common all 3.0.5 [12.1 kB] 340s Get:3 http://ftpmaster.internal/ubuntu oracular/main amd64 dictionaries-common all 1.29.7 [188 kB] 340s Get:4 http://ftpmaster.internal/ubuntu oracular/main amd64 libgomp1 amd64 14.1.0-1ubuntu1 [148 kB] 340s Get:5 http://ftpmaster.internal/ubuntu oracular/main amd64 gettext amd64 0.21-14ubuntu2 [864 kB] 340s Get:6 http://ftpmaster.internal/ubuntu oracular/main amd64 hunspell-en-us all 1:2020.12.07-2 [280 kB] 340s Get:7 http://ftpmaster.internal/ubuntu oracular/main amd64 libapr1t64 amd64 1.7.2-3.2 [106 kB] 340s Get:8 http://ftpmaster.internal/ubuntu oracular/main amd64 libaprutil1t64 amd64 1.6.3-1.1ubuntu7 [91.9 kB] 340s Get:9 http://ftpmaster.internal/ubuntu oracular/main amd64 libaspell15 amd64 0.60.8.1-1build1 [323 kB] 340s Get:10 http://ftpmaster.internal/ubuntu oracular/main amd64 libhunspell-1.7-0 amd64 1.7.2+really1.7.2-10build3 [294 kB] 340s Get:11 http://ftpmaster.internal/ubuntu oracular/main amd64 libenchant-2-2 amd64 2.3.3-2build2 [51.4 kB] 340s Get:12 http://ftpmaster.internal/ubuntu oracular/main amd64 libexttextcat-data all 3.4.7-1build1 [193 kB] 340s Get:13 http://ftpmaster.internal/ubuntu oracular/universe amd64 libserf-1-1 amd64 1.3.10-2 [48.0 kB] 340s Get:14 http://ftpmaster.internal/ubuntu oracular/universe amd64 libutf8proc3 amd64 2.9.0-1build1 [70.6 kB] 340s Get:15 http://ftpmaster.internal/ubuntu oracular/universe amd64 libsvn1 amd64 1.14.3-1build4 [1345 kB] 340s Get:16 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 libxapian30 amd64 1.4.25-1 [718 kB] 340s Get:17 http://ftpmaster.internal/ubuntu oracular/main amd64 libxslt1.1 amd64 1.1.39-0exp1build1 [167 kB] 340s Get:18 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-aeidon all 1.11-2 [221 kB] 340s Get:19 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-all amd64 3.12.3-0ubuntu1 [888 B] 340s Get:20 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-soupsieve all 2.5-1 [33.0 kB] 340s Get:21 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-bs4 all 4.12.3-1 [109 kB] 340s Get:22 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-more-itertools all 10.2.0-1 [52.9 kB] 340s Get:23 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-jaraco.functools all 4.0.0-1 [10.7 kB] 340s Get:24 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 340s Get:25 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-dateutil all 2.9.0-2 [80.3 kB] 340s Get:26 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-diff-match-patch all 20230430-1 [33.1 kB] 340s Get:27 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-enchant all 3.2.2-1 [34.0 kB] 340s Get:28 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-iniconfig all 1.1.1-2 [6024 B] 340s Get:29 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-rapidfuzz amd64 3.6.2+ds-3 [2021 kB] 340s Get:30 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-levenshtein amd64 0.25.1-3 [120 kB] 340s Get:31 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-lxml amd64 5.2.1-1 [1243 kB] 340s Get:32 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-mistletoe all 1.3.0-1 [38.0 kB] 340s Get:33 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-packaging all 24.0-1 [41.1 kB] 340s Get:34 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-ply all 3.11-6 [46.5 kB] 340s Get:35 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-phply all 1.2.6-1 [50.5 kB] 340s Get:36 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-pluggy all 1.5.0-1 [21.0 kB] 340s Get:37 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 python3-pytest all 8.2.1-2 [249 kB] 340s Get:38 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 python3-ruamel.yaml.clib amd64 0.2.8+ds-1 [133 kB] 340s Get:39 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 python3-ruamel.yaml all 0.18.6+ds-3 [126 kB] 340s Get:40 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-simplejson amd64 3.19.2-1build2 [54.5 kB] 340s Get:41 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-syrupy all 4.6.1-1 [42.8 kB] 340s Get:42 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-translate all 3.12.2-1ubuntu1 [318 kB] 340s Get:43 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-vobject all 0.9.6.1-2 [40.6 kB] 340s Get:44 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 python3-xapian amd64 1.4.25-1 [439 kB] 340s Get:45 http://ftpmaster.internal/ubuntu oracular/universe amd64 subversion amd64 1.14.3-1build4 [908 kB] 340s Get:46 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-iniparse all 0.5-2 [20.0 kB] 340s Get:47 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 340s Preconfiguring packages ... 340s Fetched 11.5 MB in 0s (31.8 MB/s) 340s Selecting previously unselected package emacsen-common. 341s (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 ... 74360 files and directories currently installed.) 341s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 341s Unpacking emacsen-common (3.0.5) ... 341s Selecting previously unselected package dictionaries-common. 341s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 341s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 341s Unpacking dictionaries-common (1.29.7) ... 341s Selecting previously unselected package libgomp1:amd64. 341s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_amd64.deb ... 341s Unpacking libgomp1:amd64 (14.1.0-1ubuntu1) ... 341s Selecting previously unselected package gettext. 341s Preparing to unpack .../03-gettext_0.21-14ubuntu2_amd64.deb ... 341s Unpacking gettext (0.21-14ubuntu2) ... 341s Selecting previously unselected package hunspell-en-us. 341s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 341s Unpacking hunspell-en-us (1:2020.12.07-2) ... 341s Selecting previously unselected package libapr1t64:amd64. 341s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_amd64.deb ... 341s Unpacking libapr1t64:amd64 (1.7.2-3.2) ... 341s Selecting previously unselected package libaprutil1t64:amd64. 341s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_amd64.deb ... 341s Unpacking libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 341s Selecting previously unselected package libaspell15:amd64. 341s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_amd64.deb ... 341s Unpacking libaspell15:amd64 (0.60.8.1-1build1) ... 341s Selecting previously unselected package libhunspell-1.7-0:amd64. 341s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_amd64.deb ... 341s Unpacking libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 341s Selecting previously unselected package libenchant-2-2:amd64. 341s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_amd64.deb ... 341s Unpacking libenchant-2-2:amd64 (2.3.3-2build2) ... 341s Selecting previously unselected package libexttextcat-data. 341s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 341s Unpacking libexttextcat-data (3.4.7-1build1) ... 341s Selecting previously unselected package libserf-1-1:amd64. 341s Preparing to unpack .../11-libserf-1-1_1.3.10-2_amd64.deb ... 341s Unpacking libserf-1-1:amd64 (1.3.10-2) ... 341s Selecting previously unselected package libutf8proc3:amd64. 341s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_amd64.deb ... 341s Unpacking libutf8proc3:amd64 (2.9.0-1build1) ... 341s Selecting previously unselected package libsvn1:amd64. 341s Preparing to unpack .../13-libsvn1_1.14.3-1build4_amd64.deb ... 341s Unpacking libsvn1:amd64 (1.14.3-1build4) ... 341s Selecting previously unselected package libxapian30:amd64. 341s Preparing to unpack .../14-libxapian30_1.4.25-1_amd64.deb ... 341s Unpacking libxapian30:amd64 (1.4.25-1) ... 341s Selecting previously unselected package libxslt1.1:amd64. 341s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_amd64.deb ... 341s Unpacking libxslt1.1:amd64 (1.1.39-0exp1build1) ... 341s Selecting previously unselected package python3-aeidon. 341s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 341s Unpacking python3-aeidon (1.11-2) ... 341s Selecting previously unselected package python3-all. 341s Preparing to unpack .../17-python3-all_3.12.3-0ubuntu1_amd64.deb ... 341s Unpacking python3-all (3.12.3-0ubuntu1) ... 341s Selecting previously unselected package python3-soupsieve. 341s Preparing to unpack .../18-python3-soupsieve_2.5-1_all.deb ... 341s Unpacking python3-soupsieve (2.5-1) ... 341s Selecting previously unselected package python3-bs4. 341s Preparing to unpack .../19-python3-bs4_4.12.3-1_all.deb ... 341s Unpacking python3-bs4 (4.12.3-1) ... 341s Selecting previously unselected package python3-more-itertools. 341s Preparing to unpack .../20-python3-more-itertools_10.2.0-1_all.deb ... 341s Unpacking python3-more-itertools (10.2.0-1) ... 341s Selecting previously unselected package python3-jaraco.functools. 341s Preparing to unpack .../21-python3-jaraco.functools_4.0.0-1_all.deb ... 341s Unpacking python3-jaraco.functools (4.0.0-1) ... 341s Selecting previously unselected package python3-cheroot. 341s Preparing to unpack .../22-python3-cheroot_10.0.0+ds1-2_all.deb ... 341s Unpacking python3-cheroot (10.0.0+ds1-2) ... 342s Selecting previously unselected package python3-dateutil. 342s Preparing to unpack .../23-python3-dateutil_2.9.0-2_all.deb ... 342s Unpacking python3-dateutil (2.9.0-2) ... 342s Selecting previously unselected package python3-diff-match-patch. 342s Preparing to unpack .../24-python3-diff-match-patch_20230430-1_all.deb ... 342s Unpacking python3-diff-match-patch (20230430-1) ... 342s Selecting previously unselected package python3-enchant. 342s Preparing to unpack .../25-python3-enchant_3.2.2-1_all.deb ... 342s Unpacking python3-enchant (3.2.2-1) ... 342s Selecting previously unselected package python3-iniconfig. 342s Preparing to unpack .../26-python3-iniconfig_1.1.1-2_all.deb ... 342s Unpacking python3-iniconfig (1.1.1-2) ... 342s Selecting previously unselected package python3-rapidfuzz. 342s Preparing to unpack .../27-python3-rapidfuzz_3.6.2+ds-3_amd64.deb ... 342s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 342s Selecting previously unselected package python3-levenshtein. 342s Preparing to unpack .../28-python3-levenshtein_0.25.1-3_amd64.deb ... 342s Unpacking python3-levenshtein (0.25.1-3) ... 342s Selecting previously unselected package python3-lxml:amd64. 342s Preparing to unpack .../29-python3-lxml_5.2.1-1_amd64.deb ... 342s Unpacking python3-lxml:amd64 (5.2.1-1) ... 342s Selecting previously unselected package python3-mistletoe. 342s Preparing to unpack .../30-python3-mistletoe_1.3.0-1_all.deb ... 342s Unpacking python3-mistletoe (1.3.0-1) ... 342s Selecting previously unselected package python3-packaging. 342s Preparing to unpack .../31-python3-packaging_24.0-1_all.deb ... 342s Unpacking python3-packaging (24.0-1) ... 342s Selecting previously unselected package python3-ply. 342s Preparing to unpack .../32-python3-ply_3.11-6_all.deb ... 342s Unpacking python3-ply (3.11-6) ... 342s Selecting previously unselected package python3-phply. 342s Preparing to unpack .../33-python3-phply_1.2.6-1_all.deb ... 342s Unpacking python3-phply (1.2.6-1) ... 342s Selecting previously unselected package python3-pluggy. 342s Preparing to unpack .../34-python3-pluggy_1.5.0-1_all.deb ... 342s Unpacking python3-pluggy (1.5.0-1) ... 342s Selecting previously unselected package python3-pytest. 342s Preparing to unpack .../35-python3-pytest_8.2.1-2_all.deb ... 342s Unpacking python3-pytest (8.2.1-2) ... 342s Selecting previously unselected package python3-ruamel.yaml.clib:amd64. 342s Preparing to unpack .../36-python3-ruamel.yaml.clib_0.2.8+ds-1_amd64.deb ... 342s Unpacking python3-ruamel.yaml.clib:amd64 (0.2.8+ds-1) ... 342s Selecting previously unselected package python3-ruamel.yaml. 342s Preparing to unpack .../37-python3-ruamel.yaml_0.18.6+ds-3_all.deb ... 342s Unpacking python3-ruamel.yaml (0.18.6+ds-3) ... 342s Selecting previously unselected package python3-simplejson. 342s Preparing to unpack .../38-python3-simplejson_3.19.2-1build2_amd64.deb ... 342s Unpacking python3-simplejson (3.19.2-1build2) ... 342s Selecting previously unselected package python3-syrupy. 342s Preparing to unpack .../39-python3-syrupy_4.6.1-1_all.deb ... 342s Unpacking python3-syrupy (4.6.1-1) ... 342s Selecting previously unselected package python3-translate. 342s Preparing to unpack .../40-python3-translate_3.12.2-1ubuntu1_all.deb ... 342s Unpacking python3-translate (3.12.2-1ubuntu1) ... 342s Selecting previously unselected package python3-vobject. 342s Preparing to unpack .../41-python3-vobject_0.9.6.1-2_all.deb ... 342s Unpacking python3-vobject (0.9.6.1-2) ... 342s Selecting previously unselected package python3-xapian. 342s Preparing to unpack .../42-python3-xapian_1.4.25-1_amd64.deb ... 342s Unpacking python3-xapian (1.4.25-1) ... 342s Selecting previously unselected package subversion. 342s Preparing to unpack .../43-subversion_1.14.3-1build4_amd64.deb ... 342s Unpacking subversion (1.14.3-1build4) ... 343s Selecting previously unselected package python3-iniparse. 343s Preparing to unpack .../44-python3-iniparse_0.5-2_all.deb ... 343s Unpacking python3-iniparse (0.5-2) ... 343s Selecting previously unselected package python3-pycountry. 343s Preparing to unpack .../45-python3-pycountry_23.12.11+ds1-2_all.deb ... 343s Unpacking python3-pycountry (23.12.11+ds1-2) ... 343s Selecting previously unselected package autopkgtest-satdep. 343s Preparing to unpack .../46-2-autopkgtest-satdep.deb ... 343s Unpacking autopkgtest-satdep (0) ... 343s Setting up python3-more-itertools (10.2.0-1) ... 343s Setting up python3-iniconfig (1.1.1-2) ... 343s Setting up libxapian30:amd64 (1.4.25-1) ... 343s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 343s Setting up python3-diff-match-patch (20230430-1) ... 343s Setting up python3-jaraco.functools (4.0.0-1) ... 343s Setting up python3-aeidon (1.11-2) ... 344s Setting up libutf8proc3:amd64 (2.9.0-1build1) ... 344s Setting up libaspell15:amd64 (0.60.8.1-1build1) ... 344s Setting up python3-ply (3.11-6) ... 344s Setting up python3-ruamel.yaml.clib:amd64 (0.2.8+ds-1) ... 344s Setting up python3-all (3.12.3-0ubuntu1) ... 344s Setting up libgomp1:amd64 (14.1.0-1ubuntu1) ... 344s Setting up python3-simplejson (3.19.2-1build2) ... 344s Setting up python3-packaging (24.0-1) ... 344s Setting up emacsen-common (3.0.5) ... 344s Setting up python3-cheroot (10.0.0+ds1-2) ... 344s Setting up python3-pycountry (23.12.11+ds1-2) ... 345s Setting up python3-xapian (1.4.25-1) ... 345s Setting up python3-pluggy (1.5.0-1) ... 345s Setting up python3-ruamel.yaml (0.18.6+ds-3) ... 345s Setting up python3-mistletoe (1.3.0-1) ... 345s Setting up libexttextcat-data (3.4.7-1build1) ... 345s Setting up libapr1t64:amd64 (1.7.2-3.2) ... 345s Setting up libxslt1.1:amd64 (1.1.39-0exp1build1) ... 345s Setting up python3-dateutil (2.9.0-2) ... 345s Setting up python3-levenshtein (0.25.1-3) ... 346s Setting up libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 346s Setting up python3-soupsieve (2.5-1) ... 346s Setting up python3-iniparse (0.5-2) ... 346s Setting up libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 346s Setting up python3-vobject (0.9.6.1-2) ... 346s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 346s patterns['name'] = '[a-zA-Z0-9\-_]+' 346s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 346s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 346s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 346s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 346s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 346s """ 346s Setting up gettext (0.21-14ubuntu2) ... 346s Setting up python3-phply (1.2.6-1) ... 346s Setting up dictionaries-common (1.29.7) ... 347s Setting up python3-pytest (8.2.1-2) ... 347s Setting up python3-syrupy (4.6.1-1) ... 347s Setting up libserf-1-1:amd64 (1.3.10-2) ... 347s Setting up python3-bs4 (4.12.3-1) ... 348s Setting up python3-lxml:amd64 (5.2.1-1) ... 348s Setting up hunspell-en-us (1:2020.12.07-2) ... 348s Setting up libsvn1:amd64 (1.14.3-1build4) ... 348s Setting up libenchant-2-2:amd64 (2.3.3-2build2) ... 348s Setting up subversion (1.14.3-1build4) ... 348s Setting up python3-enchant (3.2.2-1) ... 348s Setting up python3-translate (3.12.2-1ubuntu1) ... 349s Setting up autopkgtest-satdep (0) ... 349s Processing triggers for man-db (2.12.1-1) ... 350s Processing triggers for install-info (7.1-3build2) ... 350s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 350s Processing triggers for dictionaries-common (1.29.7) ... 353s (Reading database ... 77840 files and directories currently installed.) 353s Removing autopkgtest-satdep (0) ... 354s autopkgtest [12:31:59]: test python3-translate: [----------------------- 355s ============================= test session starts ============================== 355s platform linux -- Python 3.12.3, pytest-8.2.1, pluggy-1.5.0 -- /usr/bin/python3.12 355s cachedir: .pytest_cache 355s rootdir: /tmp/autopkgtest.uHbnTa/autopkgtest_tmp 355s plugins: syrupy-4.6.1 360s collecting ... collected 3313 items / 2 skipped 360s 360s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 360s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 360s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 360s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 360s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 360s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 360s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 360s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 360s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 360s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 360s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 360s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 361s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 361s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 361s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 361s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 361s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 361s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 361s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 361s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 361s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 361s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 361s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 361s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 361s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 361s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 361s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 361s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 361s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 361s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 361s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 361s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 361s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 361s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 361s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 361s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 361s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 361s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 361s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 361s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 361s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 361s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 361s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 361s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 361s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 361s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 361s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 361s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 361s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 361s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 361s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 361s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 361s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 361s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 361s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 361s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 361s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 361s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 361s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 362s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 362s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 362s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 362s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 362s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 362s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 362s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 362s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 362s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 362s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 362s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 362s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 362s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 362s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 362s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 362s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 362s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 362s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 362s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 362s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 362s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 362s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 362s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 362s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 362s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 362s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 362s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 362s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 362s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 362s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 362s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 362s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 362s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 362s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 362s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 362s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 362s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 362s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 362s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 363s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 363s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 363s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 363s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 363s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 363s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 363s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 363s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 363s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 363s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 363s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 363s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 363s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 363s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 363s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 363s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 363s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 363s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 363s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 363s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 363s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 363s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 363s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 363s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 363s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 363s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 363s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 363s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 363s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 363s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 363s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 363s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 363s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 363s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 363s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 364s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 364s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 364s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 364s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 364s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 364s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 364s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 364s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 364s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 364s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 364s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 364s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 364s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 364s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 364s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 364s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 364s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 364s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 364s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 364s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 364s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 364s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 364s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 364s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 364s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 364s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 364s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 364s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 364s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 364s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 364s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 364s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 364s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 364s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 364s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 364s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 364s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 364s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 364s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 364s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 364s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 364s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 364s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 364s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 364s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 364s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 364s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 364s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 364s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 364s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 364s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 364s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 364s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 364s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 364s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 364s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 364s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 364s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 364s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 364s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 364s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 364s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 364s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 364s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 364s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 364s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 364s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 364s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 364s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 364s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 364s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 364s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 364s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 364s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 364s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 364s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 364s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 364s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 364s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 364s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 364s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 364s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 364s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 364s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 364s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 364s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 364s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 364s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 364s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 364s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 364s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 364s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 364s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 364s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 364s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 364s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 364s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 364s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 364s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 364s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 364s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 364s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 364s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 364s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 364s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 364s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 364s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 364s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 364s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 364s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 364s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 364s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 364s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 364s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 364s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 364s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 364s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 364s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 365s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 365s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 365s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 365s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 365s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 365s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 365s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 365s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 365s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 365s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 365s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 365s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 365s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 365s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 365s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 365s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 365s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 365s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 365s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 365s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 365s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 365s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 365s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 365s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 365s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 365s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 365s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 365s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 365s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 365s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 365s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 365s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 365s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 365s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 365s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 365s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 365s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 365s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 365s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 365s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 365s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 365s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 365s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 365s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 365s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 365s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 365s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 365s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 365s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 365s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 365s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 365s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 365s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 365s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 366s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 366s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 366s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 366s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 366s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 366s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 366s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 366s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 366s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 366s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 366s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 366s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 366s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 366s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 366s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 366s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 366s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 366s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 366s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 366s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 366s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 366s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 366s tests/translate/storage/test_mo.py::TestMOFile::test_output SKIPPED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 366s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 366s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 366s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 366s 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%] 366s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 366s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 366s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 366s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 366s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 366s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 366s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 366s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 366s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 366s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 366s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 366s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 366s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 366s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 366s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 366s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 366s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 366s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 367s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 367s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 367s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 367s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 367s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 367s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 367s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 367s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 367s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 367s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 367s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 367s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 367s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 368s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 368s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 368s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 368s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 368s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 368s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 368s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 368s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 368s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 368s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 368s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 368s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 368s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 368s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 368s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 368s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 368s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 368s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 368s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 368s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 368s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 368s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 368s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 368s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 368s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 368s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 368s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 368s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 368s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 368s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 368s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 368s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 368s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 368s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 368s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 369s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 369s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 369s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 369s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 369s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 369s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 369s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 369s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 369s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 369s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 369s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 369s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 369s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 369s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 369s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 369s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 369s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 369s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 369s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 369s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 369s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 369s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 369s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 369s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 369s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 370s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 370s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 370s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 370s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 370s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 370s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 370s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 370s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 370s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 370s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 370s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 370s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 370s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 370s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 370s tests/translate/tools/test_help.py::test_help[build_tmdb] SKIPPED (S...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[phppo2pypo] SKIPPED (S...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[poclean] SKIPPED (Skip...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[pocompile] SKIPPED (Sk...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[poconflicts] SKIPPED (...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[pocount] SKIPPED (Skip...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[podebug] SKIPPED (Skip...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[pogrep] SKIPPED (Skip ...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[pomerge] SKIPPED (Skip...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[porestructure] SKIPPED [ 94%] 370s tests/translate/tools/test_help.py::test_help[posegment] SKIPPED (Sk...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[poswap] SKIPPED (Skip ...) [ 94%] 370s tests/translate/tools/test_help.py::test_help[poterminology] SKIPPED [ 95%] 370s tests/translate/tools/test_help.py::test_help[pretranslate] SKIPPED [ 95%] 370s tests/translate/tools/test_help.py::test_help[pydiff] SKIPPED (Skip ...) [ 95%] 370s tests/translate/tools/test_help.py::test_help[pypo2phppo] SKIPPED (S...) [ 95%] 370s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 370s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 370s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 370s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 370s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 370s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 370s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 370s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 370s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 371s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 371s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 371s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 371s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 371s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 371s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 371s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 371s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 371s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 371s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 371s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 371s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 371s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 371s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 371s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff SKIPPED [ 99%] 371s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff SKIPPED [100%] 371s 371s ================================== XFAILURES =================================== 371s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 371s 371s self = 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_accelerator_keys_not_in_sentence(self): 371s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 371s dtdtemplate = """ 371s """ 371s dtdlanguage = """ 371s """ 371s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 371s print(pofile) 371s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 371s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 371s 371s tests/translate/convert/test_dtd2po.py:348: AttributeError 371s ----------------------------- Captured stdout call ----------------------------- 371s 371s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 371s 371s self = 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_accelerator_keys_not_in_sentence(self): 371s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 371s dtdtemplate = """ 371s """ 371s dtdlanguage = """ 371s """ 371s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 371s print(pofile) 371s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 371s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 371s 371s tests/translate/convert/test_dtd2po.py:348: AttributeError 371s ----------------------------- Captured stdout call ----------------------------- 371s 371s ________________ TestPO2Php.test_merging_propertyless_template _________________ 371s 371s self = 371s 371s @mark.xfail(reason="Need to review if we want this behaviour") 371s def test_merging_propertyless_template(self): 371s """Check that when merging with a template with no property values that we copy the template.""" 371s posource = "" 371s proptemplate = "# A comment\n" 371s propexpected = proptemplate 371s > propfile = self.merge2prop(proptemplate, posource) 371s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 371s 371s tests/translate/convert/test_po2php.py:386: AttributeError 371s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 371s 371s self = 371s 371s @mark.xfail(reason="Need to review if we want this behaviour") 371s def test_merging_propertyless_template(self): 371s """Check that when merging with a template with no property values that we copy the template.""" 371s posource = "" 371s proptemplate = "# A comment\n" 371s propexpected = proptemplate 371s > propfile = self.merge2prop(proptemplate, posource) 371s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 371s 371s tests/translate/convert/test_po2php.py:386: AttributeError 371s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 371s 371s self = 371s 371s @mark.xfail(reason="Not implemented - review if this is even correct") 371s def test_merging_msgid_change(self): 371s """Tests that if the msgid changes but the location stays the same that we merge.""" 371s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 371s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 371s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 371s newpo = self.convertpot(potsource, posource) 371s print(newpo) 371s > assert str(self.singleunit(newpo)) == poexpected 371s 371s tests/translate/convert/test_pot2po.py:121: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s pofile = 371s 371s @staticmethod 371s def singleunit(pofile): 371s """Checks that the pofile contains a single non-header unit, and returns it.""" 371s > assert len(pofile.units) == 2 371s E assert 3 == 2 371s E + where 3 = len([, , ]) 371s E + where [, , ] = .units 371s 371s tests/translate/convert/test_pot2po.py:25: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s 371s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 371s 371s self = 371s 371s @mark.xfail(reason="Not Implemented - needs review") 371s def test_merging_accelerator_changes(self): 371s """Test that a change in the accelerator localtion still allows merging.""" 371s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 371s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 371s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 371s newpo = self.convertpot(potsource, posource) 371s print(newpo) 371s > assert str(self.singleunit(newpo)) == poexpected 371s 371s tests/translate/convert/test_pot2po.py:190: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s pofile = 371s 371s @staticmethod 371s def singleunit(pofile): 371s """Checks that the pofile contains a single non-header unit, and returns it.""" 371s > assert len(pofile.units) == 2 371s E assert 3 == 2 371s E + where 3 = len([, , ]) 371s E + where [, , ] = .units 371s 371s tests/translate/convert/test_pot2po.py:25: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s 371s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 371s 371s self = 371s 371s @mark.xfail(reason="Not Implemented - review if this is even correct") 371s def test_lines_cut_differently(self): 371s """Checks that the correct formatting is preserved when pot an po lines differ.""" 371s potsource = ( 371s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 371s ) 371s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 371s newpo = self.convertpot(potsource, posource) 371s newpounit = self.singleunit(newpo) 371s > assert str(newpounit) == posource 371s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 371s E 371s E #: simple.label 371s E - msgid "Line" 371s E + msgid "Line split " 371s E ? +++++++ 371s E - " split differently" 371s E ? ------- 371s E + "differently" 371s E msgstr "Lyne verskillend gesny" 371s 371s tests/translate/convert/test_pot2po.py:201: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s #: simple.label 371s msgid "Line split " 371s "differently" 371s msgstr "Lyne verskillend gesny" 371s 371s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 371s 371s self = 371s 371s @mark.xfail(reason="Not implemented - review if this is even correct") 371s def test_merging_msgid_change(self): 371s """Tests that if the msgid changes but the location stays the same that we merge.""" 371s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 371s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 371s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 371s newpo = self.convertpot(potsource, posource) 371s print(newpo) 371s > assert str(self.singleunit(newpo)) == poexpected 371s 371s tests/translate/convert/test_pot2po.py:121: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s pofile = 371s 371s @staticmethod 371s def singleunit(pofile): 371s """Checks that the pofile contains a single non-header unit, and returns it.""" 371s > assert len(pofile.units) == 2 371s E assert 3 == 2 371s E + where 3 = len([, , ]) 371s E + where [, , ] = .units 371s 371s tests/translate/convert/test_pot2po.py:25: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s 371s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 371s 371s self = 371s 371s @mark.xfail(reason="Not Implemented - needs review") 371s def test_merging_accelerator_changes(self): 371s """Test that a change in the accelerator localtion still allows merging.""" 371s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 371s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 371s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 371s newpo = self.convertpot(potsource, posource) 371s print(newpo) 371s > assert str(self.singleunit(newpo)) == poexpected 371s 371s tests/translate/convert/test_pot2po.py:190: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s pofile = 371s 371s @staticmethod 371s def singleunit(pofile): 371s """Checks that the pofile contains a single non-header unit, and returns it.""" 371s > assert len(pofile.units) == 2 371s E assert 3 == 2 371s E + where 3 = len([, , ]) 371s E + where [, , ] = .units 371s 371s tests/translate/convert/test_pot2po.py:25: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s 371s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 371s 371s self = 371s 371s @mark.xfail(reason="Not Implemented - review if this is even correct") 371s def test_lines_cut_differently(self): 371s """Checks that the correct formatting is preserved when pot an po lines differ.""" 371s potsource = ( 371s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 371s ) 371s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 371s newpo = self.convertpot(potsource, posource) 371s newpounit = self.singleunit(newpo) 371s > assert str(newpounit) == posource 371s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 371s E 371s E #: simple.label 371s E - msgid "Line" 371s E + msgid "Line split " 371s E ? +++++++ 371s E - " split differently" 371s E ? ------- 371s E + "differently" 371s E msgstr "Lyne verskillend gesny" 371s 371s tests/translate/convert/test_pot2po.py:201: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s #: simple.label 371s msgid "Line split " 371s "differently" 371s msgstr "Lyne verskillend gesny" 371s 371s ________________________ TestYAML2PO.test_no_duplicates ________________________ 371s 371s self = 371s input = '\nfoo: bar\nfoo: baz\n' 371s 371s def parse(self, input): 371s """Parse the given file or file source string.""" 371s if hasattr(input, "name"): 371s self.filename = input.name 371s elif not getattr(self, "filename", ""): 371s self.filename = "" 371s if hasattr(input, "read"): 371s src = input.read() 371s input.close() 371s input = src 371s if isinstance(input, bytes): 371s input = input.decode("utf-8") 371s try: 371s > self._original = self.yaml.load(input) 371s 371s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:453: in load 371s return constructor.get_single_data() 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:116: in get_single_data 371s return self.construct_document(node) 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:125: in construct_document 371s for _dummy in generator: 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1476: in construct_yaml_map 371s self.construct_mapping(node, data, deep=True) 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1366: in construct_mapping 371s if self.check_mapping_key(node, key_node, maptyp, key, value): 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s self = 371s 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'))]) 371s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 371s mapping = {'foo': 'bar'}, key = 'foo', value = 'baz' 371s 371s def check_mapping_key( 371s self, node: Any, key_node: Any, mapping: Any, key: Any, value: Any, 371s ) -> bool: 371s """return True if key is unique""" 371s if key in mapping: 371s if not self.allow_duplicate_keys: 371s mk = mapping.get(key) 371s args = [ 371s 'while constructing a mapping', 371s node.start_mark, 371s f'found duplicate key "{key}" with value "{value}" ' 371s f'(original value: "{mk}")', 371s key_node.start_mark, 371s """ 371s To suppress this check see: 371s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 371s """, 371s """\ 371s Duplicate keys will become an error in future releases, and are errors 371s by default when using the new API. 371s """, 371s ] 371s if self.allow_duplicate_keys is None: 371s warnings.warn(DuplicateKeyFutureWarning(*args), stacklevel=1) 371s else: 371s > raise DuplicateKeyError(*args) 371s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 371s E in "", line 2, column 1: 371s E foo: bar 371s E ^ (line: 2) 371s E found duplicate key "foo" with value "baz" (original value: "bar") 371s E in "", line 3, column 1: 371s E foo: baz 371s E ^ (line: 3) 371s E 371s E To suppress this check see: 371s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 371s 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:278: DuplicateKeyError 371s 371s During handling of the above exception, another exception occurred: 371s 371s self = 371s 371s @pytest.mark.xfail(reason="This is invalid YAML document") 371s def test_no_duplicates(self): 371s """Check converting drops duplicates.""" 371s input_string = """ 371s foo: bar 371s foo: baz 371s """ 371s > target_store = self._convert_to_store(input_string) 371s 371s tests/translate/convert/test_yaml2po.py:112: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 371s return self._convert(*args, **kwargs)[0] 371s tests/translate/convert/test_yaml2po.py:28: in _convert 371s converter = self.ConverterClass( 371s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 371s self.source_store = self.SourceStoreClass(input_file) 371s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 371s self.parse(inputfile) 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s self = 371s input = '\nfoo: bar\nfoo: baz\n' 371s 371s def parse(self, input): 371s """Parse the given file or file source string.""" 371s if hasattr(input, "name"): 371s self.filename = input.name 371s elif not getattr(self, "filename", ""): 371s self.filename = "" 371s if hasattr(input, "read"): 371s src = input.read() 371s input.close() 371s input = src 371s if isinstance(input, bytes): 371s input = input.decode("utf-8") 371s try: 371s self._original = self.yaml.load(input) 371s except YAMLError as e: 371s message = getattr(e, "problem", getattr(e, "message", str(e))) 371s if hasattr(e, "problem_mark"): 371s message += f" {e.problem_mark}" 371s > raise base.ParseError(message) 371s 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)' 371s 371s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 371s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 371s 371s self = 371s input = '\nfoo: bar\nfoo: baz\n' 371s 371s def parse(self, input): 371s """Parse the given file or file source string.""" 371s if hasattr(input, "name"): 371s self.filename = input.name 371s elif not getattr(self, "filename", ""): 371s self.filename = "" 371s if hasattr(input, "read"): 371s src = input.read() 371s input.close() 371s input = src 371s if isinstance(input, bytes): 371s input = input.decode("utf-8") 371s try: 371s > self._original = self.yaml.load(input) 371s 371s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:453: in load 371s return constructor.get_single_data() 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:116: in get_single_data 371s return self.construct_document(node) 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:125: in construct_document 371s for _dummy in generator: 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1476: in construct_yaml_map 371s self.construct_mapping(node, data, deep=True) 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1366: in construct_mapping 371s if self.check_mapping_key(node, key_node, maptyp, key, value): 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s self = 371s 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'))]) 371s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 371s mapping = {'foo': 'bar'}, key = 'foo', value = 'baz' 371s 371s def check_mapping_key( 371s self, node: Any, key_node: Any, mapping: Any, key: Any, value: Any, 371s ) -> bool: 371s """return True if key is unique""" 371s if key in mapping: 371s if not self.allow_duplicate_keys: 371s mk = mapping.get(key) 371s args = [ 371s 'while constructing a mapping', 371s node.start_mark, 371s f'found duplicate key "{key}" with value "{value}" ' 371s f'(original value: "{mk}")', 371s key_node.start_mark, 371s """ 371s To suppress this check see: 371s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 371s """, 371s """\ 371s Duplicate keys will become an error in future releases, and are errors 371s by default when using the new API. 371s """, 371s ] 371s if self.allow_duplicate_keys is None: 371s warnings.warn(DuplicateKeyFutureWarning(*args), stacklevel=1) 371s else: 371s > raise DuplicateKeyError(*args) 371s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 371s E in "", line 2, column 1: 371s E foo: bar 371s E ^ (line: 2) 371s E found duplicate key "foo" with value "baz" (original value: "bar") 371s E in "", line 3, column 1: 371s E foo: baz 371s E ^ (line: 3) 371s E 371s E To suppress this check see: 371s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 371s 371s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:278: DuplicateKeyError 371s 371s During handling of the above exception, another exception occurred: 371s 371s self = 371s 371s @pytest.mark.xfail(reason="This is invalid YAML document") 371s def test_no_duplicates(self): 371s """Check converting drops duplicates.""" 371s input_string = """ 371s foo: bar 371s foo: baz 371s """ 371s > target_store = self._convert_to_store(input_string) 371s 371s tests/translate/convert/test_yaml2po.py:112: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 371s return self._convert(*args, **kwargs)[0] 371s tests/translate/convert/test_yaml2po.py:28: in _convert 371s converter = self.ConverterClass( 371s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 371s self.source_store = self.SourceStoreClass(input_file) 371s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 371s self.parse(inputfile) 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s self = 371s input = '\nfoo: bar\nfoo: baz\n' 371s 371s def parse(self, input): 371s """Parse the given file or file source string.""" 371s if hasattr(input, "name"): 371s self.filename = input.name 371s elif not getattr(self, "filename", ""): 371s self.filename = "" 371s if hasattr(input, "read"): 371s src = input.read() 371s input.close() 371s input = src 371s if isinstance(input, bytes): 371s input = input.decode("utf-8") 371s try: 371s self._original = self.yaml.load(input) 371s except YAMLError as e: 371s message = getattr(e, "problem", getattr(e, "message", str(e))) 371s if hasattr(e, "problem_mark"): 371s message += f" {e.problem_mark}" 371s > raise base.ParseError(message) 371s 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)' 371s 371s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 371s __________________________ test_acceleratedvariables ___________________________ 371s 371s @mark.xfail(reason="Accelerated variables needs a better implementation") 371s def test_acceleratedvariables(): 371s """Test for accelerated variables.""" 371s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 371s mozillachecker = checks.MozillaChecker() 371s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 371s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 371s 371s tests/translate/filters/test_checks.py:206: AttributeError 371s ___________________________ test_musttranslatewords ____________________________ 371s 371s @mark.xfail(reason="FIXME: All fails() tests are not working") 371s def test_musttranslatewords(): 371s """Tests stopwords.""" 371s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 371s assert passes( 371s stdchecker.musttranslatewords, 371s "This uses Mozilla of course", 371s "hierdie gebruik le mozille natuurlik", 371s ) 371s stdchecker = checks.StandardChecker( 371s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 371s ) 371s assert passes( 371s stdchecker.musttranslatewords, 371s "This uses Mozilla of course", 371s "hierdie gebruik le mozille natuurlik", 371s ) 371s > assert fails( 371s stdchecker.musttranslatewords, 371s "This uses Mozilla of course", 371s "hierdie gebruik Mozilla natuurlik", 371s ) 371s E AssertionError: assert False 371s E + where False = fails(>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 371s E + where > = .musttranslatewords 371s 371s tests/translate/filters/test_checks.py:612: AssertionError 371s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 371s 371s @mark.xfail(reason="Bug #3408") 371s def test_persian_single_and_double_quote_fail_at_the_same_time(): 371s """Test Persian single and double quote failures in string with single quotes.""" 371s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 371s 371s # With single quote check. 371s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 371s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 371s E assert False 371s E + where False = fails(>, "Path: '%S'", 'مسیر: "%S"\u200e') 371s E + where > = .singlequoting 371s 371s tests/translate/filters/test_checks.py:1271: AssertionError 371s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 371s 371s @mark.xfail(reason="Bug #3506") 371s def test_bengali_mozilla_inverted_xmltags(): 371s """Test Bengali Mozilla XML tags.""" 371s bn_mozilla_checker = checks.MozillaChecker( 371s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 371s ) 371s str_en = """We co-founded the WHAT-WG to.""" 371s str_bn = """এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।""" 371s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 371s E assert False 371s E + where False = passes(>, 'We co-founded the WHAT-WG to.', 'এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।') 371s E + where > = .xmltags 371s 371s tests/translate/filters/test_checks.py:2065: AssertionError 371s _______________________________ test_word_khmer ________________________________ 371s 371s @mark.xfail( 371s reason="ZWS is not considered a space in Python 2.6+. Khmer " 371s "should extend words() to include \\u200b in addition to " 371s "other word breakers." 371s ) 371s def test_word_khmer(): 371s language = common.Common 371s # Let's test Khmer with zero width space (\u200b) 371s words = language.words("ផ្ដល់\u200bយោបល់") 371s print("ផ្ដល់\u200bយោបល់") 371s print(language.words("ផ្ដល់<200b>យោបល់")) 371s print(["ផ្ដល់", "យោបល់"]) 371s > assert words == ["ផ្ដល់", "យោបល់"] 371s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 371s E 371s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 371s E Right contains one more item: 'យោបល់' 371s E 371s E Full diff: 371s E [ 371s E + 'ផ្ដល់\u200bយោបល់',... 371s E 371s E ...Full output truncated (3 lines hidden), use '-vv' to show 371s 371s tests/translate/lang/test_common.py:47: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s ផ្ដល់​យោបល់ 371s ['ផ្ដល់<200b>យោបល់'] 371s ['ផ្ដល់', 'យោបល់'] 371s __________________ TestConverters.test_to_general_placeables ___________________ 371s 371s self = 371s 371s @mark.xfail(reason="Test needs fixing, disabled for now") 371s def test_to_general_placeables(self): 371s basetree = base.to_base_placeables(self.elem) 371s gentree = general.to_general_placeables(basetree) 371s > assert gentree == self.elem 371s E assert '])>])> == '])>])> 371s E 371s E Full diff: 371s E - , '])>, , '])>])> 371s E ? ^^^ 371s E + , '])>, , '])>])> 371s E ? ^^^^^^ 371s 371s tests/translate/storage/placeables/test_base.py:210: AssertionError 371s ___________________ TestConverters.test_to_xliff_placeables ____________________ 371s 371s self = 371s 371s @mark.xfail(reason="Test needs fixing, disabled for now") 371s def test_to_xliff_placeables(self): 371s basetree = base.to_base_placeables(self.elem) 371s xliff_from_base = xliff.to_xliff_placeables(basetree) 371s > assert str(xliff_from_base) != str(self.elem) 371s E assert 'Ģët &brandLong;' != 'Ģët &brandLong;' 371s E + where 'Ģët &brandLong;' = str(, '])>, , '])>])>) 371s E + and 'Ģët &brandLong;' = str(, '])>, , '])>])>) 371s E + where , '])>, , '])>])> = .elem 371s 371s tests/translate/storage/placeables/test_base.py:216: AssertionError 371s _____________________ test_quotefordtd_unimplemented_cases _____________________ 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_quotefordtd_unimplemented_cases(): 371s """Test unimplemented quoting DTD cases.""" 371s > assert dtd.quotefordtd("Between

and

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

and

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

and

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

and

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

and

' 371s E 371s E -

and

371s E + <p> and </p> 371s 371s tests/translate/storage/test_dtd.py:103: AssertionError 371s ________________________ TestDTD.test_comment_following ________________________ 371s 371s self = 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_comment_following(self): 371s """Check that comments that appear after and entity are not pushed onto another line.""" 371s dtdsource = ' ' 371s dtdregen = self.dtdregen(dtdsource) 371s > assert dtdsource == dtdregen 371s E assert '' == ' 371s E - 371s E - 371s 371s tests/translate/storage/test_dtd.py:344: AssertionError 371s _________________________ TestDTD.test_invalid_quoting _________________________ 371s 371s self = 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_invalid_quoting(self): 371s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 371s # TODO: we should rather raise an error 371s dtdsource = '\n' 371s assert ( 371s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 371s ) 371s dtdfile = self.dtdparse(dtdsource) 371s assert len(dtdfile.units) == 1 371s dtdunit = dtdfile.units[0] 371s assert dtdunit.definition == '"bananas for sale"' 371s > assert bytes(dtdfile) == b'\n' 371s E assert b'' == b'\n' 371s E 371s E Full diff: 371s E - (b'\n') 371s E + b'' 371s 371s tests/translate/storage/test_dtd.py:364: AssertionError 371s __________________________ TestOtFile.test_extensions __________________________ 371s 371s self = 371s 371s @mark.xfail( 371s reason="This doesn't work, due to two store classes handling different " 371s "extensions, but factory listing it as one supported file type" 371s ) 371s def test_extensions(self): 371s > super().test_extensions() 371s 371s tests/translate/storage/test_omegat.py:20: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s self = 371s 371s def test_extensions(self): 371s """Test that the factory knows the extensions for this class.""" 371s supported = factory.supported_files() 371s supported_dict = { 371s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 371s } 371s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 371s return 371s detail = supported_dict[ 371s self.StoreClass.Name 371s ] # will start to get problematic once translated 371s print("Factory:", detail[0]) 371s print("StoreClass:", self.StoreClass.Extensions) 371s for ext in detail[0]: 371s > assert ext in self.StoreClass.Extensions 371s E AssertionError: assert 'tab' in ['utf8'] 371s E + where ['utf8'] = .Extensions 371s E + where = .StoreClass 371s 371s tests/translate/storage/test_base.py:386: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s Factory: ['utf8', 'tab'] 371s StoreClass: ['utf8'] 371s _________________________ TestPOFile.test_kde_plurals __________________________ 371s 371s self = 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_kde_plurals(self): 371s """Tests kde-style plurals. (Bug: 191).""" 371s posource = r"""msgid "_n Singular\n" 371s "Plural" 371s msgstr "Een\n" 371s "Twee\n" 371s "Drie" 371s """ 371s pofile = self.poparse(posource) 371s assert len(pofile.units) == 1 371s unit = pofile.units[0] 371s > assert unit.hasplural() 371s E assert False 371s E + where False = >() 371s E + where > = .hasplural 371s 371s tests/translate/storage/test_po.py:374: AssertionError 371s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 371s 371s self = 371s 371s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 371s def test_makeobsolete_untranslated(self): 371s """Tests making an untranslated unit obsolete.""" 371s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 371s pofile = self.poparse(posource) 371s unit = pofile.units[0] 371s print(bytes(pofile)) 371s assert not unit.isobsolete() 371s unit.makeobsolete() 371s > assert str(unit) == "" 371s E assert '#~ msgid "te...~ msgstr ""\n' == '' 371s E 371s E + #~ msgid "test" 371s E + #~ msgstr "" 371s 371s tests/translate/storage/test_po.py:449: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 371s ________________________ TestXWikiFullPage.test_remove _________________________ 371s 371s self = 371s 371s @mark.xfail(reason="removal not working in full page") 371s def test_remove(self): 371s > super().test_remove() 371s 371s tests/translate/storage/test_properties.py:1614: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s self = 371s 371s def test_remove(self): 371s """Tests removing a unit with a source string.""" 371s store = self.StoreClass() 371s unit = store.addsourceunit("Test String") 371s # Some storages (MO, OmegaT) serialize only translated units 371s unit.target = "Test target" 371s assert headerless_len(store.units) == 1 371s withunit = bytes(store) 371s print(withunit) 371s store.removeunit(unit) 371s assert headerless_len(store.units) == 0 371s withoutunit = bytes(store) 371s print(withoutunit) 371s > assert withoutunit != withunit 371s 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' 371s 371s tests/translate/storage/test_base.py:278: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s 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' 371s 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' 371s ________________________ TestPYPOFile.test_kde_plurals _________________________ 371s 371s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x76cc0c0876e0> 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_kde_plurals(self): 371s """Tests kde-style plurals. (Bug: 191).""" 371s posource = r"""msgid "_n Singular\n" 371s "Plural" 371s msgstr "Een\n" 371s "Twee\n" 371s "Drie" 371s """ 371s pofile = self.poparse(posource) 371s assert len(pofile.units) == 1 371s unit = pofile.units[0] 371s > assert unit.hasplural() 371s E assert False 371s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x76cc034c53a0>>() 371s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x76cc034c53a0>> = <translate.storage.pypo.pounit object at 0x76cc034c53a0>.hasplural 371s 371s tests/translate/storage/test_po.py:374: AssertionError 371s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 371s 371s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x76cc0c08d940> 371s 371s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 371s def test_makeobsolete_untranslated(self): 371s """Tests making an untranslated unit obsolete.""" 371s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 371s pofile = self.poparse(posource) 371s unit = pofile.units[0] 371s print(bytes(pofile)) 371s assert not unit.isobsolete() 371s unit.makeobsolete() 371s > assert str(unit) == "" 371s E assert '#~ msgid "te...~ msgstr ""\n' == '' 371s E 371s E + #~ msgid "test" 371s E + #~ msgstr "" 371s 371s tests/translate/storage/test_po.py:449: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 371s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 371s 371s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x76cc0c085190> 371s 371s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 371s def test_mixed_newlines_typecomment(self): 371s """Checks that mixed newlines in typecomments are properly parsed.""" 371s # This was generated by translate-tookit prior to 371s # issue that test_dos_newlines_write is covering was fixed. 371s posource = b"""#, fuzzy 371s msgid "test me"\r 371s msgstr ""\r 371s """ 371s > pofile = self.poparse(posource) 371s 371s tests/translate/storage/test_pypo.py:620: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s tests/translate/storage/test_po.py:214: in poparse 371s return self.StoreClass(dummyfile) 371s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 371s super().__init__(inputfile, **kwargs) 371s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 371s self.parse(inputfile) 371s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 371s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s parse_state = <translate.storage.poparser.ParseState object at 0x76cc034c66f0> 371s store = <translate.storage.pypo.pofile object at 0x76cc034c6690> 371s 371s def parse_units(parse_state, store): 371s unit = parse_header(parse_state, store) 371s while unit: 371s unit.infer_state() 371s store.addunit(unit) 371s unit = parse_unit(parse_state) 371s if not parse_state.eof: 371s > raise PoParseError(parse_state) 371s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 371s 371s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 371s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 371s 371s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x76cc0b84fbc0> 371s 371s @pytest.mark.xfail(reason="Not Implemented") 371s def test_note_sanity(self): 371s > super().test_note_sanity() 371s 371s tests/translate/storage/test_subtitles.py:13: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x76cc0b84fbc0> 371s 371s def test_note_sanity(self): 371s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 371s unit = self.unit 371s 371s unit.addnote("Test note 1", origin="translator") 371s unit.addnote("Test note 2", origin="translator") 371s unit.addnote("Test note 3", origin="translator") 371s expected_notes = "Test note 1\nTest note 2\nTest note 3" 371s actual_notes = unit.getnotes(origin="translator") 371s > assert actual_notes == expected_notes 371s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 371s E 371s E - Test note 1 371s E - Test note 2 371s E - Test note 3 371s 371s tests/translate/storage/test_base.py:180: AssertionError 371s __________________________ TestCount.test_plurals_kde __________________________ 371s 371s self = <tests.translate.tools.test_pocount.TestCount object at 0x76cc0b892510> 371s 371s @mark.xfail(reason="Support commented out pending removal") 371s def test_plurals_kde(self): 371s """Test that we correcly count old style KDE plurals.""" 371s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 371s 371s tests/translate/tools/test_pocount.py:91: 371s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 371s 371s source = '_n: Singular\\n\nPlural', expectedsource = 2 371s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 371s 371s @staticmethod 371s def count(source, expectedsource, target=None, expectedtarget=None): 371s """Simple helper to check the respective word counts.""" 371s poelement = po.pounit(source) 371s if target is not None: 371s poelement.target = target 371s wordssource, wordstarget = pocount.wordsinunit(poelement) 371s print( 371s 'Source (expected=%d; actual=%d): "%s"' 371s % (expectedsource, wordssource, source) 371s ) 371s > assert wordssource == expectedsource 371s E assert 3 == 2 371s 371s tests/translate/tools/test_pocount.py:33: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s Source (expected=2; actual=3): "_n: Singular\n 371s Plural" 371s _________________________ TestPOMerge.test_escape_tabs _________________________ 371s 371s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x76cc0aede1b0> 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_escape_tabs(self): 371s """Ensure that input tabs are escaped in the output, like gettext does.""" 371s # The strings below contains the tab character, not spaces. 371s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 371s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 371s expectedpo = r"""msgid "First\tSecond" 371s msgstr "Eerste\tTweede" 371s """ 371s pofile = self.mergestore(templatepo, mergepo) 371s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 371s > assert bytes(pofile).decode("utf-8") == expectedpo 371s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 371s E 371s E - msgid "First\tSecond" 371s E ? ^^ 371s E + msgid "First Second" 371s E ? ^ 371s E msgstr "Eerste\tTweede" 371s 371s tests/translate/tools/test_pomerge.py:349: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s Expected: 371s msgid "First\tSecond" 371s msgstr "Eerste\tTweede" 371s 371s 371s Merged: 371s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 371s __________________ TestPretranslate.test_merging_msgid_change __________________ 371s 371s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x76cc0ae9c6e0> 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_merging_msgid_change(self): 371s """ 371s tests that if the msgid changes but the location stays the same that 371s we merge. 371s """ 371s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 371s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 371s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 371s newpo = self.pretranslatepo(input_source, template_source) 371s print(bytes(newpo)) 371s > assert bytes(newpo).decode("utf-8") == poexpected 371s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 371s E 371s E #: simple.label 371s E #: simple.accesskey 371s E - #, fuzzy 371s E msgid "Its &hard coding a newline.\n" 371s E - msgstr "&Hart gekoeerde nuwe lyne\n" 371s E + msgstr "" 371s 371s tests/translate/tools/test_pretranslate.py:130: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 371s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 371s 371s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x76cc0ae9c620> 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_merging_accelerator_changes(self): 371s """ 371s test that a change in the accelerator localtion still allows 371s merging. 371s """ 371s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 371s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 371s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 371s newpo = self.pretranslatepo(input_source, template_source) 371s print(bytes(newpo)) 371s > assert bytes(newpo).decode("utf-8") == poexpected 371s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 371s E 371s E #: someline.c 371s E msgid "A&bout" 371s E - msgstr "&Info" 371s E ? ----- 371s E + msgstr "" 371s 371s tests/translate/tools/test_pretranslate.py:185: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 371s _________________ TestPretranslate.test_lines_cut_differently __________________ 371s 371s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x76cc0ae9ca10> 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_lines_cut_differently(self): 371s """ 371s Checks that the correct formatting is preserved when pot an po lines 371s differ. 371s """ 371s input_source = ( 371s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 371s ) 371s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 371s newpo = self.pretranslatepo(input_source, template_source) 371s newpounit = self.singleunit(newpo) 371s > assert str(newpounit) == template_source 371s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 371s E 371s E #: simple.label 371s E - msgid "Line" 371s E + msgid "Line split " 371s E ? +++++++ 371s E - " split differently" 371s E ? ------- 371s E + "differently" 371s E msgstr "Lyne verskillend gesny" 371s 371s tests/translate/tools/test_pretranslate.py:199: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s #: simple.label 371s msgid "Line split " 371s "differently" 371s msgstr "Lyne verskillend gesny" 371s 371s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 371s 371s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x76cc0ae9cec0> 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_merging_msgid_change(self): 371s """ 371s tests that if the msgid changes but the location stays the same that 371s we merge. 371s """ 371s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 371s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 371s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 371s newpo = self.pretranslatepo(input_source, template_source) 371s print(bytes(newpo)) 371s > assert bytes(newpo).decode("utf-8") == poexpected 371s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 371s E 371s E #: simple.label 371s E #: simple.accesskey 371s E - #, fuzzy 371s E msgid "Its &hard coding a newline.\n" 371s E - msgstr "&Hart gekoeerde nuwe lyne\n" 371s E + msgstr "" 371s 371s tests/translate/tools/test_pretranslate.py:130: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 371s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 371s 371s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x76cc0ae9dbe0> 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_merging_accelerator_changes(self): 371s """ 371s test that a change in the accelerator localtion still allows 371s merging. 371s """ 371s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 371s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 371s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 371s newpo = self.pretranslatepo(input_source, template_source) 371s print(bytes(newpo)) 371s > assert bytes(newpo).decode("utf-8") == poexpected 371s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 371s E 371s E #: someline.c 371s E msgid "A&bout" 371s E - msgstr "&Info" 371s E ? ----- 371s E + msgstr "" 371s 371s tests/translate/tools/test_pretranslate.py:185: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 371s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 371s 371s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x76cc0ae9ed20> 371s 371s @mark.xfail(reason="Not Implemented") 371s def test_lines_cut_differently(self): 371s """ 371s Checks that the correct formatting is preserved when pot an po lines 371s differ. 371s """ 371s input_source = ( 371s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 371s ) 371s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 371s newpo = self.pretranslatepo(input_source, template_source) 371s newpounit = self.singleunit(newpo) 371s > assert str(newpounit) == template_source 371s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 371s E 371s E #: simple.label 371s E - msgid "Line" 371s E + msgid "Line split " 371s E ? +++++++ 371s E - " split differently" 371s E ? ------- 371s E + "differently" 371s E msgstr "Lyne verskillend gesny" 371s 371s tests/translate/tools/test_pretranslate.py:199: AssertionError 371s ----------------------------- Captured stdout call ----------------------------- 371s #: simple.label 371s msgid "Line split " 371s "differently" 371s msgstr "Lyne verskillend gesny" 371s 371s =============================== warnings summary =============================== 371s tests/translate/storage/test_cpo.py:15 371s Warning: 371s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 371s ImportError('gettext PO library not found') 371s In pytest 9.1 this warning will become an error by default. 371s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 371s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 371s 371s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 371s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.uHbnTa/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 371s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 371s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 371s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 371s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 371s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 371s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 371s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 371s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 371s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 371s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 371s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 371s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 371s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 371s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 371s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 371s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 371s Warning: Could not find accesskey for key.accesskey 371s 371s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 371s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 371s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 371s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 371s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 371s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.uHbnTa/autopkgtest_tmp/tests/translate/convert/test.idml'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 371s Warning: unclosed file <_io.BufferedReader name='translation.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 371s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 371s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 371s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 371s Warning: Could not find accesskey for prop.accesskey 371s 371s tests/translate/convert/test_po2tmx.py: 26 warnings 371s tests/translate/filters/test_pofilter.py: 13 warnings 371s tests/translate/storage/test_tbx.py: 17 warnings 371s tests/translate/storage/test_tmx.py: 24 warnings 371s 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' 371s 371s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 371s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 371s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 371s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 371s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 371s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 371s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 371s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 371s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 371s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 371s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 371s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 371s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.uHbnTa/autopkgtest_tmp/tests/translate/convert/test.odt'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 371s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 371s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 371s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 371s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 371s Enable tracemalloc to get traceback where the object was allocated. 371s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 371s 371s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 371s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 371s 371s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 371s Warning: DTD file '' does not validate 371s 371s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 371s --------------------------- snapshot report summary ---------------------------- 371s 23 snapshots passed. 371s =========================== short test summary info ============================ 371s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 371s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 371s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 371s SKIPPED [1] tests/translate/storage/test_mo.py:498: Skip testing command line tools 371s SKIPPED [16] tests/translate/tools/test_help.py:16: Skip testing command line tools 371s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:49: Skip testing command line tools 371s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:58: Skip testing command line tools 371s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 371s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 371s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 371s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 371s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 371s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 371s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 371s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 371s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 371s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 371s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 371s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 371s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 371s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 371s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 371s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 371s 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. 371s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 371s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 371s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 371s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 371s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 371s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 371s 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 371s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 371s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 371s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 371s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 371s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 371s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 371s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 371s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 371s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 371s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 371s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 371s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 371s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 371s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 371s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 371s ========= 3254 passed, 22 skipped, 39 xfailed, 127 warnings in 16.57s ========== 372s autopkgtest [12:32:17]: test python3-translate: -----------------------] 372s python3-translate PASS 372s autopkgtest [12:32:17]: test python3-translate: - - - - - - - - - - results - - - - - - - - - - 372s autopkgtest [12:32:17]: test python3-translate-commands: preparing testbed 373s Reading package lists... 373s Building dependency tree... 373s Reading state information... 374s Starting pkgProblemResolver with broken count: 0 374s Starting 2 pkgProblemResolver with broken count: 0 374s Done 374s The following additional packages will be installed: 374s translate-toolkit 374s Recommended packages: 374s translate-toolkit-doc 374s The following NEW packages will be installed: 374s autopkgtest-satdep translate-toolkit 374s 0 upgraded, 2 newly installed, 0 to remove and 39 not upgraded. 374s Need to get 88.2 kB/89.1 kB of archives. 374s After this operation, 253 kB of additional disk space will be used. 374s Get:1 /tmp/autopkgtest.uHbnTa/3-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [888 B] 374s Get:2 http://ftpmaster.internal/ubuntu oracular/universe amd64 translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 374s Fetched 88.2 kB in 0s (1880 kB/s) 374s Selecting previously unselected package translate-toolkit. 374s (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 ... 77840 files and directories currently installed.) 374s Preparing to unpack .../translate-toolkit_3.12.2-1ubuntu1_all.deb ... 374s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 374s Selecting previously unselected package autopkgtest-satdep. 374s Preparing to unpack .../3-autopkgtest-satdep.deb ... 374s Unpacking autopkgtest-satdep (0) ... 374s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 374s Setting up autopkgtest-satdep (0) ... 374s Processing triggers for man-db (2.12.1-1) ... 377s (Reading database ... 78013 files and directories currently installed.) 377s Removing autopkgtest-satdep (0) ... 377s autopkgtest [12:32:22]: test python3-translate-commands: [----------------------- 378s ============================= test session starts ============================== 378s platform linux -- Python 3.12.3, pytest-8.2.1, pluggy-1.5.0 -- /usr/bin/python3.12 378s cachedir: .pytest_cache 378s rootdir: /tmp/autopkgtest.uHbnTa/autopkgtest_tmp 378s plugins: syrupy-4.6.1 383s collecting ... collected 3313 items / 2 skipped 383s 383s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 383s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 383s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 383s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 383s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 383s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 383s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 383s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 383s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 383s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 383s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 383s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 384s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 384s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 384s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 384s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 384s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 384s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 384s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 384s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 384s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 384s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 384s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 384s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 384s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 384s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 384s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 384s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 384s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 384s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 384s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 384s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 384s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 384s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 384s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 384s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 384s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 384s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 384s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 384s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 384s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 384s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 384s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 384s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 384s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 384s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 384s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 384s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 385s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 385s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 385s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 385s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 385s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 385s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 386s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 386s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 386s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 386s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 386s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 386s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 386s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 386s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 386s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 386s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 386s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 386s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 386s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 386s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 386s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 386s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 387s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 387s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 387s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 387s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 387s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 387s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 387s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 387s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 387s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 387s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 387s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 387s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 387s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 387s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 387s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 387s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 387s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 387s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 387s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 387s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 387s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 387s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 387s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 387s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 387s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 387s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 387s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 387s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 387s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 387s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 387s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 387s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 387s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 387s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 387s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 387s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 387s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 387s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 387s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 387s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 387s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 387s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 387s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 387s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 387s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 387s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 387s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 387s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 387s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 387s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 387s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 387s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 387s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 387s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 387s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 387s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 387s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 388s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 388s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 388s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 388s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 388s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 388s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 388s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 388s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 388s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 388s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 388s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 388s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 388s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 388s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 388s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 388s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 388s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 388s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 388s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 388s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 388s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 388s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 388s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 388s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 388s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 388s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 388s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 388s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 388s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 388s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 388s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 388s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 388s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 388s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 388s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 388s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 388s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 388s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 388s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 388s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 388s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_output PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 389s 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%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 389s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 389s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 389s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 389s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 389s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 389s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 389s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 389s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 389s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 389s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 389s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 389s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 389s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 389s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 389s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 389s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 389s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 389s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 389s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 389s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 389s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 389s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 390s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 390s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 390s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 390s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 390s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 390s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 390s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 390s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 390s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 390s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 390s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 391s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 391s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 391s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 391s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 391s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 391s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 391s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 391s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 392s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 392s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 392s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 392s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 392s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 392s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 392s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 392s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 392s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 393s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 393s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 393s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 393s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 393s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 393s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 393s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 393s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 393s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 393s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 393s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 393s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 393s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 393s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[build_tmdb] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[phppo2pypo] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[poclean] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[pocompile] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[poconflicts] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[pocount] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[podebug] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[pogrep] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[pomerge] PASSED [ 94%] 393s tests/translate/tools/test_help.py::test_help[porestructure] PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[posegment] PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[poswap] PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[poterminology] PASSED [ 95%] 394s tests/translate/tools/test_help.py::test_help[pretranslate] PASSED [ 95%] 394s tests/translate/tools/test_help.py::test_help[pydiff] PASSED [ 95%] 394s tests/translate/tools/test_help.py::test_help[pypo2phppo] PASSED [ 95%] 394s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 394s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 394s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 394s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 394s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 394s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 394s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 394s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 394s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 394s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 395s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff PASSED [ 99%] 395s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff PASSED [100%] 395s 395s ================================== XFAILURES =================================== 395s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 395s 395s self = <tests.translate.convert.test_dtd2po.TestDTD2PO object at 0x7e53d26b08c0> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_accelerator_keys_not_in_sentence(self): 395s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 395s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 395s <!ENTITY useAutoScroll.accesskey "a">""" 395s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 395s <!ENTITY useAutoScroll.accesskey "a">""" 395s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 395s print(pofile) 395s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 395s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 395s 395s tests/translate/convert/test_dtd2po.py:348: AttributeError 395s ----------------------------- Captured stdout call ----------------------------- 395s <translate.storage.pypo.pofile object at 0x7e53d05cf5c0> 395s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 395s 395s self = <tests.translate.convert.test_dtd2po.TestDTD2POCommand object at 0x7e53d26ba570> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_accelerator_keys_not_in_sentence(self): 395s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 395s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 395s <!ENTITY useAutoScroll.accesskey "a">""" 395s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 395s <!ENTITY useAutoScroll.accesskey "a">""" 395s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 395s print(pofile) 395s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 395s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 395s 395s tests/translate/convert/test_dtd2po.py:348: AttributeError 395s ----------------------------- Captured stdout call ----------------------------- 395s <translate.storage.pypo.pofile object at 0x7e53d26b8b00> 395s ________________ TestPO2Php.test_merging_propertyless_template _________________ 395s 395s self = <tests.translate.convert.test_po2php.TestPO2Php object at 0x7e53d1e1f140> 395s 395s @mark.xfail(reason="Need to review if we want this behaviour") 395s def test_merging_propertyless_template(self): 395s """Check that when merging with a template with no property values that we copy the template.""" 395s posource = "" 395s proptemplate = "# A comment\n" 395s propexpected = proptemplate 395s > propfile = self.merge2prop(proptemplate, posource) 395s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 395s 395s tests/translate/convert/test_po2php.py:386: AttributeError 395s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 395s 395s self = <tests.translate.convert.test_po2php.TestPO2PhpCommand object at 0x7e53d1e94710> 395s 395s @mark.xfail(reason="Need to review if we want this behaviour") 395s def test_merging_propertyless_template(self): 395s """Check that when merging with a template with no property values that we copy the template.""" 395s posource = "" 395s proptemplate = "# A comment\n" 395s propexpected = proptemplate 395s > propfile = self.merge2prop(proptemplate, posource) 395s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 395s 395s tests/translate/convert/test_po2php.py:386: AttributeError 395s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 395s 395s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7e53d19877d0> 395s 395s @mark.xfail(reason="Not implemented - review if this is even correct") 395s def test_merging_msgid_change(self): 395s """Tests that if the msgid changes but the location stays the same that we merge.""" 395s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 395s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s newpo = self.convertpot(potsource, posource) 395s print(newpo) 395s > assert str(self.singleunit(newpo)) == poexpected 395s 395s tests/translate/convert/test_pot2po.py:121: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s pofile = <translate.storage.pypo.pofile object at 0x7e53d0d21850> 395s 395s @staticmethod 395s def singleunit(pofile): 395s """Checks that the pofile contains a single non-header unit, and returns it.""" 395s > assert len(pofile.units) == 2 395s E assert 3 == 2 395s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7e53d0d22c30>, <translate.storage.pypo.pounit object at 0x7e53d0d20b00>, <translate.storage.pypo.pounit object at 0x7e53d0d224e0>]) 395s E + where [<translate.storage.pypo.pounit object at 0x7e53d0d22c30>, <translate.storage.pypo.pounit object at 0x7e53d0d20b00>, <translate.storage.pypo.pounit object at 0x7e53d0d224e0>] = <translate.storage.pypo.pofile object at 0x7e53d0d21850>.units 395s 395s tests/translate/convert/test_pot2po.py:25: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s <translate.storage.pypo.pofile object at 0x7e53d0d21850> 395s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 395s 395s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7e53d1987a10> 395s 395s @mark.xfail(reason="Not Implemented - needs review") 395s def test_merging_accelerator_changes(self): 395s """Test that a change in the accelerator localtion still allows merging.""" 395s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 395s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 395s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 395s newpo = self.convertpot(potsource, posource) 395s print(newpo) 395s > assert str(self.singleunit(newpo)) == poexpected 395s 395s tests/translate/convert/test_pot2po.py:190: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s pofile = <translate.storage.pypo.pofile object at 0x7e53cfbd38c0> 395s 395s @staticmethod 395s def singleunit(pofile): 395s """Checks that the pofile contains a single non-header unit, and returns it.""" 395s > assert len(pofile.units) == 2 395s E assert 3 == 2 395s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7e53cfbd3ef0>, <translate.storage.pypo.pounit object at 0x7e53cfbd20c0>, <translate.storage.pypo.pounit object at 0x7e53cfbd2e40>]) 395s E + where [<translate.storage.pypo.pounit object at 0x7e53cfbd3ef0>, <translate.storage.pypo.pounit object at 0x7e53cfbd20c0>, <translate.storage.pypo.pounit object at 0x7e53cfbd2e40>] = <translate.storage.pypo.pofile object at 0x7e53cfbd38c0>.units 395s 395s tests/translate/convert/test_pot2po.py:25: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s <translate.storage.pypo.pofile object at 0x7e53cfbd38c0> 395s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 395s 395s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7e53d1987b90> 395s 395s @mark.xfail(reason="Not Implemented - review if this is even correct") 395s def test_lines_cut_differently(self): 395s """Checks that the correct formatting is preserved when pot an po lines differ.""" 395s potsource = ( 395s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 395s ) 395s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 395s newpo = self.convertpot(potsource, posource) 395s newpounit = self.singleunit(newpo) 395s > assert str(newpounit) == posource 395s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 395s E 395s E #: simple.label 395s E - msgid "Line" 395s E + msgid "Line split " 395s E ? +++++++ 395s E - " split differently" 395s E ? ------- 395s E + "differently" 395s E msgstr "Lyne verskillend gesny" 395s 395s tests/translate/convert/test_pot2po.py:201: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s #: simple.label 395s msgid "Line split " 395s "differently" 395s msgstr "Lyne verskillend gesny" 395s 395s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 395s 395s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7e53d15b6030> 395s 395s @mark.xfail(reason="Not implemented - review if this is even correct") 395s def test_merging_msgid_change(self): 395s """Tests that if the msgid changes but the location stays the same that we merge.""" 395s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 395s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s newpo = self.convertpot(potsource, posource) 395s print(newpo) 395s > assert str(self.singleunit(newpo)) == poexpected 395s 395s tests/translate/convert/test_pot2po.py:121: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s pofile = <translate.storage.pypo.pofile object at 0x7e53d19872f0> 395s 395s @staticmethod 395s def singleunit(pofile): 395s """Checks that the pofile contains a single non-header unit, and returns it.""" 395s > assert len(pofile.units) == 2 395s E assert 3 == 2 395s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7e53d0851430>, <translate.storage.pypo.pounit object at 0x7e53d0852690>, <translate.storage.pypo.pounit object at 0x7e53cfbb7ef0>]) 395s E + where [<translate.storage.pypo.pounit object at 0x7e53d0851430>, <translate.storage.pypo.pounit object at 0x7e53d0852690>, <translate.storage.pypo.pounit object at 0x7e53cfbb7ef0>] = <translate.storage.pypo.pofile object at 0x7e53d19872f0>.units 395s 395s tests/translate/convert/test_pot2po.py:25: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s <translate.storage.pypo.pofile object at 0x7e53d19872f0> 395s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 395s 395s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7e53d15b66f0> 395s 395s @mark.xfail(reason="Not Implemented - needs review") 395s def test_merging_accelerator_changes(self): 395s """Test that a change in the accelerator localtion still allows merging.""" 395s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 395s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 395s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 395s newpo = self.convertpot(potsource, posource) 395s print(newpo) 395s > assert str(self.singleunit(newpo)) == poexpected 395s 395s tests/translate/convert/test_pot2po.py:190: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s pofile = <translate.storage.pypo.pofile object at 0x7e53d193dfd0> 395s 395s @staticmethod 395s def singleunit(pofile): 395s """Checks that the pofile contains a single non-header unit, and returns it.""" 395s > assert len(pofile.units) == 2 395s E assert 3 == 2 395s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7e53cfbd3080>, <translate.storage.pypo.pounit object at 0x7e53cfbd2060>, <translate.storage.pypo.pounit object at 0x7e53cfbd0110>]) 395s E + where [<translate.storage.pypo.pounit object at 0x7e53cfbd3080>, <translate.storage.pypo.pounit object at 0x7e53cfbd2060>, <translate.storage.pypo.pounit object at 0x7e53cfbd0110>] = <translate.storage.pypo.pofile object at 0x7e53d193dfd0>.units 395s 395s tests/translate/convert/test_pot2po.py:25: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s <translate.storage.pypo.pofile object at 0x7e53d193dfd0> 395s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 395s 395s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7e53d15b68a0> 395s 395s @mark.xfail(reason="Not Implemented - review if this is even correct") 395s def test_lines_cut_differently(self): 395s """Checks that the correct formatting is preserved when pot an po lines differ.""" 395s potsource = ( 395s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 395s ) 395s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 395s newpo = self.convertpot(potsource, posource) 395s newpounit = self.singleunit(newpo) 395s > assert str(newpounit) == posource 395s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 395s E 395s E #: simple.label 395s E - msgid "Line" 395s E + msgid "Line split " 395s E ? +++++++ 395s E - " split differently" 395s E ? ------- 395s E + "differently" 395s E msgstr "Lyne verskillend gesny" 395s 395s tests/translate/convert/test_pot2po.py:201: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s #: simple.label 395s msgid "Line split " 395s "differently" 395s msgstr "Lyne verskillend gesny" 395s 395s ________________________ TestYAML2PO.test_no_duplicates ________________________ 395s 395s self = <translate.storage.yaml.YAMLFile object at 0x7e53d0427ec0> 395s input = '\nfoo: bar\nfoo: baz\n' 395s 395s def parse(self, input): 395s """Parse the given file or file source string.""" 395s if hasattr(input, "name"): 395s self.filename = input.name 395s elif not getattr(self, "filename", ""): 395s self.filename = "" 395s if hasattr(input, "read"): 395s src = input.read() 395s input.close() 395s input = src 395s if isinstance(input, bytes): 395s input = input.decode("utf-8") 395s try: 395s > self._original = self.yaml.load(input) 395s 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:453: in load 395s return constructor.get_single_data() 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:116: in get_single_data 395s return self.construct_document(node) 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:125: in construct_document 395s for _dummy in generator: 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1476: in construct_yaml_map 395s self.construct_mapping(node, data, deep=True) 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1366: in construct_mapping 395s if self.check_mapping_key(node, key_node, maptyp, key, value): 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x7e53d0424590> 395s 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'))]) 395s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 395s mapping = {'foo': 'bar'}, key = 'foo', value = 'baz' 395s 395s def check_mapping_key( 395s self, node: Any, key_node: Any, mapping: Any, key: Any, value: Any, 395s ) -> bool: 395s """return True if key is unique""" 395s if key in mapping: 395s if not self.allow_duplicate_keys: 395s mk = mapping.get(key) 395s args = [ 395s 'while constructing a mapping', 395s node.start_mark, 395s f'found duplicate key "{key}" with value "{value}" ' 395s f'(original value: "{mk}")', 395s key_node.start_mark, 395s """ 395s To suppress this check see: 395s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 395s """, 395s """\ 395s Duplicate keys will become an error in future releases, and are errors 395s by default when using the new API. 395s """, 395s ] 395s if self.allow_duplicate_keys is None: 395s warnings.warn(DuplicateKeyFutureWarning(*args), stacklevel=1) 395s else: 395s > raise DuplicateKeyError(*args) 395s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 395s E in "<unicode string>", line 2, column 1: 395s E foo: bar 395s E ^ (line: 2) 395s E found duplicate key "foo" with value "baz" (original value: "bar") 395s E in "<unicode string>", line 3, column 1: 395s E foo: baz 395s E ^ (line: 3) 395s E 395s E To suppress this check see: 395s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 395s 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:278: DuplicateKeyError 395s 395s During handling of the above exception, another exception occurred: 395s 395s self = <tests.translate.convert.test_yaml2po.TestYAML2PO object at 0x7e53d15ce540> 395s 395s @pytest.mark.xfail(reason="This is invalid YAML document") 395s def test_no_duplicates(self): 395s """Check converting drops duplicates.""" 395s input_string = """ 395s foo: bar 395s foo: baz 395s """ 395s > target_store = self._convert_to_store(input_string) 395s 395s tests/translate/convert/test_yaml2po.py:112: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 395s return self._convert(*args, **kwargs)[0] 395s tests/translate/convert/test_yaml2po.py:28: in _convert 395s converter = self.ConverterClass( 395s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 395s self.source_store = self.SourceStoreClass(input_file) 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 395s self.parse(inputfile) 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = <translate.storage.yaml.YAMLFile object at 0x7e53d0427ec0> 395s input = '\nfoo: bar\nfoo: baz\n' 395s 395s def parse(self, input): 395s """Parse the given file or file source string.""" 395s if hasattr(input, "name"): 395s self.filename = input.name 395s elif not getattr(self, "filename", ""): 395s self.filename = "" 395s if hasattr(input, "read"): 395s src = input.read() 395s input.close() 395s input = src 395s if isinstance(input, bytes): 395s input = input.decode("utf-8") 395s try: 395s self._original = self.yaml.load(input) 395s except YAMLError as e: 395s message = getattr(e, "problem", getattr(e, "message", str(e))) 395s if hasattr(e, "problem_mark"): 395s message += f" {e.problem_mark}" 395s > raise base.ParseError(message) 395s 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)' 395s 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 395s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 395s 395s self = <translate.storage.yaml.YAMLFile object at 0x7e53d0adc0b0> 395s input = '\nfoo: bar\nfoo: baz\n' 395s 395s def parse(self, input): 395s """Parse the given file or file source string.""" 395s if hasattr(input, "name"): 395s self.filename = input.name 395s elif not getattr(self, "filename", ""): 395s self.filename = "" 395s if hasattr(input, "read"): 395s src = input.read() 395s input.close() 395s input = src 395s if isinstance(input, bytes): 395s input = input.decode("utf-8") 395s try: 395s > self._original = self.yaml.load(input) 395s 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:453: in load 395s return constructor.get_single_data() 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:116: in get_single_data 395s return self.construct_document(node) 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:125: in construct_document 395s for _dummy in generator: 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1476: in construct_yaml_map 395s self.construct_mapping(node, data, deep=True) 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1366: in construct_mapping 395s if self.check_mapping_key(node, key_node, maptyp, key, value): 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x7e53d0adc380> 395s 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'))]) 395s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 395s mapping = {'foo': 'bar'}, key = 'foo', value = 'baz' 395s 395s def check_mapping_key( 395s self, node: Any, key_node: Any, mapping: Any, key: Any, value: Any, 395s ) -> bool: 395s """return True if key is unique""" 395s if key in mapping: 395s if not self.allow_duplicate_keys: 395s mk = mapping.get(key) 395s args = [ 395s 'while constructing a mapping', 395s node.start_mark, 395s f'found duplicate key "{key}" with value "{value}" ' 395s f'(original value: "{mk}")', 395s key_node.start_mark, 395s """ 395s To suppress this check see: 395s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 395s """, 395s """\ 395s Duplicate keys will become an error in future releases, and are errors 395s by default when using the new API. 395s """, 395s ] 395s if self.allow_duplicate_keys is None: 395s warnings.warn(DuplicateKeyFutureWarning(*args), stacklevel=1) 395s else: 395s > raise DuplicateKeyError(*args) 395s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 395s E in "<unicode string>", line 2, column 1: 395s E foo: bar 395s E ^ (line: 2) 395s E found duplicate key "foo" with value "baz" (original value: "bar") 395s E in "<unicode string>", line 3, column 1: 395s E foo: baz 395s E ^ (line: 3) 395s E 395s E To suppress this check see: 395s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 395s 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:278: DuplicateKeyError 395s 395s During handling of the above exception, another exception occurred: 395s 395s self = <tests.translate.convert.test_yaml2po.TestYAML2POCommand object at 0x7e53d15bcc20> 395s 395s @pytest.mark.xfail(reason="This is invalid YAML document") 395s def test_no_duplicates(self): 395s """Check converting drops duplicates.""" 395s input_string = """ 395s foo: bar 395s foo: baz 395s """ 395s > target_store = self._convert_to_store(input_string) 395s 395s tests/translate/convert/test_yaml2po.py:112: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 395s return self._convert(*args, **kwargs)[0] 395s tests/translate/convert/test_yaml2po.py:28: in _convert 395s converter = self.ConverterClass( 395s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 395s self.source_store = self.SourceStoreClass(input_file) 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 395s self.parse(inputfile) 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = <translate.storage.yaml.YAMLFile object at 0x7e53d0adc0b0> 395s input = '\nfoo: bar\nfoo: baz\n' 395s 395s def parse(self, input): 395s """Parse the given file or file source string.""" 395s if hasattr(input, "name"): 395s self.filename = input.name 395s elif not getattr(self, "filename", ""): 395s self.filename = "" 395s if hasattr(input, "read"): 395s src = input.read() 395s input.close() 395s input = src 395s if isinstance(input, bytes): 395s input = input.decode("utf-8") 395s try: 395s self._original = self.yaml.load(input) 395s except YAMLError as e: 395s message = getattr(e, "problem", getattr(e, "message", str(e))) 395s if hasattr(e, "problem_mark"): 395s message += f" {e.problem_mark}" 395s > raise base.ParseError(message) 395s 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)' 395s 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 395s __________________________ test_acceleratedvariables ___________________________ 395s 395s @mark.xfail(reason="Accelerated variables needs a better implementation") 395s def test_acceleratedvariables(): 395s """Test for accelerated variables.""" 395s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 395s mozillachecker = checks.MozillaChecker() 395s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 395s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 395s 395s tests/translate/filters/test_checks.py:206: AttributeError 395s ___________________________ test_musttranslatewords ____________________________ 395s 395s @mark.xfail(reason="FIXME: All fails() tests are not working") 395s def test_musttranslatewords(): 395s """Tests stopwords.""" 395s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 395s assert passes( 395s stdchecker.musttranslatewords, 395s "This uses Mozilla of course", 395s "hierdie gebruik le mozille natuurlik", 395s ) 395s stdchecker = checks.StandardChecker( 395s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 395s ) 395s assert passes( 395s stdchecker.musttranslatewords, 395s "This uses Mozilla of course", 395s "hierdie gebruik le mozille natuurlik", 395s ) 395s > assert fails( 395s stdchecker.musttranslatewords, 395s "This uses Mozilla of course", 395s "hierdie gebruik Mozilla natuurlik", 395s ) 395s E AssertionError: assert False 395s E + where False = fails(<bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x7e53d06ccda0>>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 395s E + where <bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x7e53d06ccda0>> = <translate.filters.checks.StandardChecker object at 0x7e53d06ccda0>.musttranslatewords 395s 395s tests/translate/filters/test_checks.py:612: AssertionError 395s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 395s 395s @mark.xfail(reason="Bug #3408") 395s def test_persian_single_and_double_quote_fail_at_the_same_time(): 395s """Test Persian single and double quote failures in string with single quotes.""" 395s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 395s 395s # With single quote check. 395s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 395s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 395s E assert False 395s E + where False = fails(<bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x7e53d0767260>>, "Path: '%S'", 'مسیر: "%S"\u200e') 395s E + where <bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x7e53d0767260>> = <translate.filters.checks.StandardChecker object at 0x7e53d0767260>.singlequoting 395s 395s tests/translate/filters/test_checks.py:1271: AssertionError 395s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 395s 395s @mark.xfail(reason="Bug #3506") 395s def test_bengali_mozilla_inverted_xmltags(): 395s """Test Bengali Mozilla XML tags.""" 395s bn_mozilla_checker = checks.MozillaChecker( 395s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 395s ) 395s 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.""" 395s str_bn = """এর প্রচলন ঘটাতে আমরা <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> প্রতিষ্ঠায় <a href="%(cofound_url)s" rel="external">সহযোগী</a> ছিলাম।ন।""" 395s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 395s E assert False 395s E + where False = passes(<bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x7e53d0752b10>>, '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> ছিলাম।ন।') 395s E + where <bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x7e53d0752b10>> = <translate.filters.checks.MozillaChecker object at 0x7e53d0752b10>.xmltags 395s 395s tests/translate/filters/test_checks.py:2065: AssertionError 395s _______________________________ test_word_khmer ________________________________ 395s 395s @mark.xfail( 395s reason="ZWS is not considered a space in Python 2.6+. Khmer " 395s "should extend words() to include \\u200b in addition to " 395s "other word breakers." 395s ) 395s def test_word_khmer(): 395s language = common.Common 395s # Let's test Khmer with zero width space (\u200b) 395s words = language.words("ផ្ដល់\u200bយោបល់") 395s print("ផ្ដល់\u200bយោបល់") 395s print(language.words("ផ្ដល់<200b>យោបល់")) 395s print(["ផ្ដល់", "យោបល់"]) 395s > assert words == ["ផ្ដល់", "យោបល់"] 395s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 395s E 395s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 395s E Right contains one more item: 'យោបល់' 395s E 395s E Full diff: 395s E [ 395s E + 'ផ្ដល់\u200bយោបល់',... 395s E 395s E ...Full output truncated (3 lines hidden), use '-vv' to show 395s 395s tests/translate/lang/test_common.py:47: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s ផ្ដល់​យោបល់ 395s ['ផ្ដល់<200b>យោបល់'] 395s ['ផ្ដល់', 'យោបល់'] 395s __________________ TestConverters.test_to_general_placeables ___________________ 395s 395s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x7e53d147e060> 395s 395s @mark.xfail(reason="Test needs fixing, disabled for now") 395s def test_to_general_placeables(self): 395s basetree = base.to_base_placeables(self.elem) 395s gentree = general.to_general_placeables(basetree) 395s > assert gentree == self.elem 395s E assert <StringElem([...(['</a>'])>])> == <StringElem([...(['</a>'])>])> 395s E 395s E Full diff: 395s E - <StringElem([<StringElem(['Ģët '])>, <XMLTagPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 395s E ? ^^^ 395s E + <StringElem([<StringElem(['Ģët '])>, <XMLEntityPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 395s E ? ^^^^^^ 395s 395s tests/translate/storage/placeables/test_base.py:210: AssertionError 395s ___________________ TestConverters.test_to_xliff_placeables ____________________ 395s 395s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x7e53d147e840> 395s 395s @mark.xfail(reason="Test needs fixing, disabled for now") 395s def test_to_xliff_placeables(self): 395s basetree = base.to_base_placeables(self.elem) 395s xliff_from_base = xliff.to_xliff_placeables(basetree) 395s > assert str(xliff_from_base) != str(self.elem) 395s 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>' 395s 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>'])>])>) 395s 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>'])>])>) 395s 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 0x7e53d147e840>.elem 395s 395s tests/translate/storage/placeables/test_base.py:216: AssertionError 395s _____________________ test_quotefordtd_unimplemented_cases _____________________ 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_quotefordtd_unimplemented_cases(): 395s """Test unimplemented quoting DTD cases.""" 395s > assert dtd.quotefordtd("Between <p> and </p>") == ( 395s '"Between <p> and </p>"' 395s ) 395s E assert '"Between <p> and </p>"' == '"Between <...d </p>"' 395s E 395s E - "Between <p> and </p>" 395s E + "Between <p> and </p>" 395s 395s tests/translate/storage/test_dtd.py:72: AssertionError 395s ___________________ test_unquotefromdtd_unimplemented_cases ____________________ 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_unquotefromdtd_unimplemented_cases(): 395s """Test unimplemented unquoting DTD cases.""" 395s > assert dtd.unquotefromdtd('"<p> and </p>"') == "<p> and </p>" 395s E AssertionError: assert '<p> and </p>' == '<p> and </p>' 395s E 395s E - <p> and </p> 395s E + <p> and </p> 395s 395s tests/translate/storage/test_dtd.py:103: AssertionError 395s ________________________ TestDTD.test_comment_following ________________________ 395s 395s self = <tests.translate.storage.test_dtd.TestDTD object at 0x7e53cf8eb500> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_comment_following(self): 395s """Check that comments that appear after and entity are not pushed onto another line.""" 395s dtdsource = '<!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards -->' 395s dtdregen = self.dtdregen(dtdsource) 395s > assert dtdsource == dtdregen 395s E assert '<!ENTITY tex...keyboards -->' == '<!-- + is ab...dkey2 "="> \n' 395s E 395s E + <!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards --> 395s E - <!-- + is above this key on many keyboards --> 395s E - <!ENTITY textZoomEnlargeCmd.commandkey2 "="> 395s 395s tests/translate/storage/test_dtd.py:344: AssertionError 395s _________________________ TestDTD.test_invalid_quoting _________________________ 395s 395s self = <tests.translate.storage.test_dtd.TestDTD object at 0x7e53cf8ac8c0> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_invalid_quoting(self): 395s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 395s # TODO: we should rather raise an error 395s dtdsource = '<!ENTITY test.me "bananas for sale""room">\n' 395s assert ( 395s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 395s ) 395s dtdfile = self.dtdparse(dtdsource) 395s assert len(dtdfile.units) == 1 395s dtdunit = dtdfile.units[0] 395s assert dtdunit.definition == '"bananas for sale"' 395s > assert bytes(dtdfile) == b'<!ENTITY test.me "bananas for sale">\n' 395s E assert b'' == b'<!ENTITY te... for sale">\n' 395s E 395s E Full diff: 395s E - (b'<!ENTITY test.me "bananas for sale">\n') 395s E + b'' 395s 395s tests/translate/storage/test_dtd.py:364: AssertionError 395s __________________________ TestOtFile.test_extensions __________________________ 395s 395s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x7e53cfa5ede0> 395s 395s @mark.xfail( 395s reason="This doesn't work, due to two store classes handling different " 395s "extensions, but factory listing it as one supported file type" 395s ) 395s def test_extensions(self): 395s > super().test_extensions() 395s 395s tests/translate/storage/test_omegat.py:20: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x7e53cfa5ede0> 395s 395s def test_extensions(self): 395s """Test that the factory knows the extensions for this class.""" 395s supported = factory.supported_files() 395s supported_dict = { 395s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 395s } 395s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 395s return 395s detail = supported_dict[ 395s self.StoreClass.Name 395s ] # will start to get problematic once translated 395s print("Factory:", detail[0]) 395s print("StoreClass:", self.StoreClass.Extensions) 395s for ext in detail[0]: 395s > assert ext in self.StoreClass.Extensions 395s E AssertionError: assert 'tab' in ['utf8'] 395s E + where ['utf8'] = <class 'translate.storage.omegat.OmegaTFile'>.Extensions 395s E + where <class 'translate.storage.omegat.OmegaTFile'> = <tests.translate.storage.test_omegat.TestOtFile object at 0x7e53cfa5ede0>.StoreClass 395s 395s tests/translate/storage/test_base.py:386: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s Factory: ['utf8', 'tab'] 395s StoreClass: ['utf8'] 395s _________________________ TestPOFile.test_kde_plurals __________________________ 395s 395s self = <tests.translate.storage.test_po.TestPOFile object at 0x7e53cfa52de0> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_kde_plurals(self): 395s """Tests kde-style plurals. (Bug: 191).""" 395s posource = r"""msgid "_n Singular\n" 395s "Plural" 395s msgstr "Een\n" 395s "Twee\n" 395s "Drie" 395s """ 395s pofile = self.poparse(posource) 395s assert len(pofile.units) == 1 395s unit = pofile.units[0] 395s > assert unit.hasplural() 395s E assert False 395s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7e53d0852ea0>>() 395s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7e53d0852ea0>> = <translate.storage.pypo.pounit object at 0x7e53d0852ea0>.hasplural 395s 395s tests/translate/storage/test_po.py:374: AssertionError 395s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 395s 395s self = <tests.translate.storage.test_po.TestPOFile object at 0x7e53cfa51070> 395s 395s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 395s def test_makeobsolete_untranslated(self): 395s """Tests making an untranslated unit obsolete.""" 395s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 395s pofile = self.poparse(posource) 395s unit = pofile.units[0] 395s print(bytes(pofile)) 395s assert not unit.isobsolete() 395s unit.makeobsolete() 395s > assert str(unit) == "" 395s E assert '#~ msgid "te...~ msgstr ""\n' == '' 395s E 395s E + #~ msgid "test" 395s E + #~ msgstr "" 395s 395s tests/translate/storage/test_po.py:449: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 395s ________________________ TestXWikiFullPage.test_remove _________________________ 395s 395s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x7e53d14ba2a0> 395s 395s @mark.xfail(reason="removal not working in full page") 395s def test_remove(self): 395s > super().test_remove() 395s 395s tests/translate/storage/test_properties.py:1614: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x7e53d14ba2a0> 395s 395s def test_remove(self): 395s """Tests removing a unit with a source string.""" 395s store = self.StoreClass() 395s unit = store.addsourceunit("Test String") 395s # Some storages (MO, OmegaT) serialize only translated units 395s unit.target = "Test target" 395s assert headerless_len(store.units) == 1 395s withunit = bytes(store) 395s print(withunit) 395s store.removeunit(unit) 395s assert headerless_len(store.units) == 0 395s withoutunit = bytes(store) 395s print(withoutunit) 395s > assert withoutunit != withunit 395s 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' 395s 395s tests/translate/storage/test_base.py:278: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s 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' 395s 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' 395s ________________________ TestPYPOFile.test_kde_plurals _________________________ 395s 395s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7e53d14bb140> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_kde_plurals(self): 395s """Tests kde-style plurals. (Bug: 191).""" 395s posource = r"""msgid "_n Singular\n" 395s "Plural" 395s msgstr "Een\n" 395s "Twee\n" 395s "Drie" 395s """ 395s pofile = self.poparse(posource) 395s assert len(pofile.units) == 1 395s unit = pofile.units[0] 395s > assert unit.hasplural() 395s E assert False 395s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7e53cda81910>>() 395s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7e53cda81910>> = <translate.storage.pypo.pounit object at 0x7e53cda81910>.hasplural 395s 395s tests/translate/storage/test_po.py:374: AssertionError 395s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 395s 395s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7e53d14bbf20> 395s 395s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 395s def test_makeobsolete_untranslated(self): 395s """Tests making an untranslated unit obsolete.""" 395s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 395s pofile = self.poparse(posource) 395s unit = pofile.units[0] 395s print(bytes(pofile)) 395s assert not unit.isobsolete() 395s unit.makeobsolete() 395s > assert str(unit) == "" 395s E assert '#~ msgid "te...~ msgstr ""\n' == '' 395s E 395s E + #~ msgid "test" 395s E + #~ msgstr "" 395s 395s tests/translate/storage/test_po.py:449: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 395s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 395s 395s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7e53d14d4c50> 395s 395s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 395s def test_mixed_newlines_typecomment(self): 395s """Checks that mixed newlines in typecomments are properly parsed.""" 395s # This was generated by translate-tookit prior to 395s # issue that test_dos_newlines_write is covering was fixed. 395s posource = b"""#, fuzzy 395s msgid "test me"\r 395s msgstr ""\r 395s """ 395s > pofile = self.poparse(posource) 395s 395s tests/translate/storage/test_pypo.py:620: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s tests/translate/storage/test_po.py:214: in poparse 395s return self.StoreClass(dummyfile) 395s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 395s super().__init__(inputfile, **kwargs) 395s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 395s self.parse(inputfile) 395s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 395s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s parse_state = <translate.storage.poparser.ParseState object at 0x7e53cda81340> 395s store = <translate.storage.pypo.pofile object at 0x7e53cda83a70> 395s 395s def parse_units(parse_state, store): 395s unit = parse_header(parse_state, store) 395s while unit: 395s unit.infer_state() 395s store.addunit(unit) 395s unit = parse_unit(parse_state) 395s if not parse_state.eof: 395s > raise PoParseError(parse_state) 395s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 395s 395s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 395s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 395s 395s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7e53d0bbc470> 395s 395s @pytest.mark.xfail(reason="Not Implemented") 395s def test_note_sanity(self): 395s > super().test_note_sanity() 395s 395s tests/translate/storage/test_subtitles.py:13: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7e53d0bbc470> 395s 395s def test_note_sanity(self): 395s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 395s unit = self.unit 395s 395s unit.addnote("Test note 1", origin="translator") 395s unit.addnote("Test note 2", origin="translator") 395s unit.addnote("Test note 3", origin="translator") 395s expected_notes = "Test note 1\nTest note 2\nTest note 3" 395s actual_notes = unit.getnotes(origin="translator") 395s > assert actual_notes == expected_notes 395s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 395s E 395s E - Test note 1 395s E - Test note 2 395s E - Test note 3 395s 395s tests/translate/storage/test_base.py:180: AssertionError 395s __________________________ TestCount.test_plurals_kde __________________________ 395s 395s self = <tests.translate.tools.test_pocount.TestCount object at 0x7e53d0006ba0> 395s 395s @mark.xfail(reason="Support commented out pending removal") 395s def test_plurals_kde(self): 395s """Test that we correcly count old style KDE plurals.""" 395s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 395s 395s tests/translate/tools/test_pocount.py:91: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s source = '_n: Singular\\n\nPlural', expectedsource = 2 395s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 395s 395s @staticmethod 395s def count(source, expectedsource, target=None, expectedtarget=None): 395s """Simple helper to check the respective word counts.""" 395s poelement = po.pounit(source) 395s if target is not None: 395s poelement.target = target 395s wordssource, wordstarget = pocount.wordsinunit(poelement) 395s print( 395s 'Source (expected=%d; actual=%d): "%s"' 395s % (expectedsource, wordssource, source) 395s ) 395s > assert wordssource == expectedsource 395s E assert 3 == 2 395s 395s tests/translate/tools/test_pocount.py:33: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s Source (expected=2; actual=3): "_n: Singular\n 395s Plural" 395s _________________________ TestPOMerge.test_escape_tabs _________________________ 395s 395s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x7e53d060df10> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_escape_tabs(self): 395s """Ensure that input tabs are escaped in the output, like gettext does.""" 395s # The strings below contains the tab character, not spaces. 395s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 395s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 395s expectedpo = r"""msgid "First\tSecond" 395s msgstr "Eerste\tTweede" 395s """ 395s pofile = self.mergestore(templatepo, mergepo) 395s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 395s > assert bytes(pofile).decode("utf-8") == expectedpo 395s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 395s E 395s E - msgid "First\tSecond" 395s E ? ^^ 395s E + msgid "First Second" 395s E ? ^ 395s E msgstr "Eerste\tTweede" 395s 395s tests/translate/tools/test_pomerge.py:349: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s Expected: 395s msgid "First\tSecond" 395s msgstr "Eerste\tTweede" 395s 395s 395s Merged: 395s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 395s __________________ TestPretranslate.test_merging_msgid_change __________________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7e53d0658680> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_merging_msgid_change(self): 395s """ 395s tests that if the msgid changes but the location stays the same that 395s we merge. 395s """ 395s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 395s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s print(bytes(newpo)) 395s > assert bytes(newpo).decode("utf-8") == poexpected 395s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 395s E 395s E #: simple.label 395s E #: simple.accesskey 395s E - #, fuzzy 395s E msgid "Its &hard coding a newline.\n" 395s E - msgstr "&Hart gekoeerde nuwe lyne\n" 395s E + msgstr "" 395s 395s tests/translate/tools/test_pretranslate.py:130: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 395s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7e53d0658a70> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_merging_accelerator_changes(self): 395s """ 395s test that a change in the accelerator localtion still allows 395s merging. 395s """ 395s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 395s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 395s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s print(bytes(newpo)) 395s > assert bytes(newpo).decode("utf-8") == poexpected 395s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 395s E 395s E #: someline.c 395s E msgid "A&bout" 395s E - msgstr "&Info" 395s E ? ----- 395s E + msgstr "" 395s 395s tests/translate/tools/test_pretranslate.py:185: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 395s _________________ TestPretranslate.test_lines_cut_differently __________________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7e53d0658890> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_lines_cut_differently(self): 395s """ 395s Checks that the correct formatting is preserved when pot an po lines 395s differ. 395s """ 395s input_source = ( 395s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 395s ) 395s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s newpounit = self.singleunit(newpo) 395s > assert str(newpounit) == template_source 395s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 395s E 395s E #: simple.label 395s E - msgid "Line" 395s E + msgid "Line split " 395s E ? +++++++ 395s E - " split differently" 395s E ? ------- 395s E + "differently" 395s E msgstr "Lyne verskillend gesny" 395s 395s tests/translate/tools/test_pretranslate.py:199: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s #: simple.label 395s msgid "Line split " 395s "differently" 395s msgstr "Lyne verskillend gesny" 395s 395s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7e53d0658980> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_merging_msgid_change(self): 395s """ 395s tests that if the msgid changes but the location stays the same that 395s we merge. 395s """ 395s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 395s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s print(bytes(newpo)) 395s > assert bytes(newpo).decode("utf-8") == poexpected 395s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 395s E 395s E #: simple.label 395s E #: simple.accesskey 395s E - #, fuzzy 395s E msgid "Its &hard coding a newline.\n" 395s E - msgstr "&Hart gekoeerde nuwe lyne\n" 395s E + msgstr "" 395s 395s tests/translate/tools/test_pretranslate.py:130: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 395s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7e53d0606180> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_merging_accelerator_changes(self): 395s """ 395s test that a change in the accelerator localtion still allows 395s merging. 395s """ 395s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 395s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 395s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s print(bytes(newpo)) 395s > assert bytes(newpo).decode("utf-8") == poexpected 395s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 395s E 395s E #: someline.c 395s E msgid "A&bout" 395s E - msgstr "&Info" 395s E ? ----- 395s E + msgstr "" 395s 395s tests/translate/tools/test_pretranslate.py:185: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 395s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7e53d0604200> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_lines_cut_differently(self): 395s """ 395s Checks that the correct formatting is preserved when pot an po lines 395s differ. 395s """ 395s input_source = ( 395s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 395s ) 395s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s newpounit = self.singleunit(newpo) 395s > assert str(newpounit) == template_source 395s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 395s E 395s E #: simple.label 395s E - msgid "Line" 395s E + msgid "Line split " 395s E ? +++++++ 395s E - " split differently" 395s E ? ------- 395s E + "differently" 395s E msgstr "Lyne verskillend gesny" 395s 395s tests/translate/tools/test_pretranslate.py:199: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s #: simple.label 395s msgid "Line split " 395s "differently" 395s msgstr "Lyne verskillend gesny" 395s 395s =============================== warnings summary =============================== 395s tests/translate/storage/test_cpo.py:15 395s Warning: 395s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 395s ImportError('gettext PO library not found') 395s In pytest 9.1 this warning will become an error by default. 395s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 395s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 395s 395s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 395s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.uHbnTa/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 395s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 395s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 395s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 395s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 395s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 395s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 395s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 395s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 395s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 395s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 395s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 395s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 395s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 395s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 395s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 395s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 395s Warning: Could not find accesskey for key.accesskey 395s 395s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 395s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 395s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 395s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 395s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 395s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.uHbnTa/autopkgtest_tmp/tests/translate/convert/test.idml'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 395s Warning: unclosed file <_io.BufferedReader name='translation.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 395s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape 395s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 395s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 395s Warning: Could not find accesskey for prop.accesskey 395s 395s tests/translate/convert/test_po2tmx.py: 26 warnings 395s tests/translate/filters/test_pofilter.py: 13 warnings 395s tests/translate/storage/test_tbx.py: 17 warnings 395s tests/translate/storage/test_tmx.py: 24 warnings 395s 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' 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 395s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 395s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 395s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 395s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 395s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 395s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.uHbnTa/autopkgtest_tmp/tests/translate/convert/test.odt'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 395s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 395s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 395s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 395s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 395s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 395s 395s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 395s Warning: DTD file '' does not validate 395s 395s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 395s --------------------------- snapshot report summary ---------------------------- 395s 23 snapshots passed. 395s =========================== short test summary info ============================ 395s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 395s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 395s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 395s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 395s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 395s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 395s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 395s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 395s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 395s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 395s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 395s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 395s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 395s 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. 395s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 395s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 395s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 395s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 395s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 395s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 395s 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 395s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 395s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 395s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 395s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 395s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 395s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 395s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 395s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 395s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 395s ========== 3273 passed, 3 skipped, 39 xfailed, 127 warnings in 17.65s ========== 396s autopkgtest [12:32:41]: test python3-translate-commands: -----------------------] 396s python3-translate-commands PASS 396s autopkgtest [12:32:41]: test python3-translate-commands: - - - - - - - - - - results - - - - - - - - - - 396s autopkgtest [12:32:41]: @@@@@@@@@@@@@@@@@@@@ summary 396s translate-toolkit PASS 396s python3-translate PASS 396s python3-translate-commands PASS 407s flock: timeout while waiting to get lock 407s Creating nova instance adt-oracular-amd64-translate-toolkit-20240528-122604-juju-7f2275-prod-proposed-migration-environment-2-1da09d9a-c4fb-4403-9389-5e68e56197cc from image adt/ubuntu-oracular-amd64-server-20240528.img (UUID b60cdb3e-6cc6-49f8-80c8-60bfa4b42a72)... 407s Creating nova instance adt-oracular-amd64-translate-toolkit-20240528-122604-juju-7f2275-prod-proposed-migration-environment-2-1da09d9a-c4fb-4403-9389-5e68e56197cc from image adt/ubuntu-oracular-amd64-server-20240528.img (UUID b60cdb3e-6cc6-49f8-80c8-60bfa4b42a72)...