0s autopkgtest [01:09:17]: starting date and time: 2024-06-08 01:09:17+0000 0s autopkgtest [01:09:17]: git checkout: 433ed4cb Merge branch 'skia/nova_flock' into 'ubuntu/5.34+prod' 0s autopkgtest [01:09:17]: host juju-7f2275-prod-proposed-migration-environment-3; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.k3watp4c/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:pytest,src:astropy --apt-upgrade translate-toolkit --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 '--env=ADT_TEST_TRIGGERS=pytest/8.2.2-1ubuntu1 astropy/6.0.1-4' -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-3@lcy02-91.secgroup --name adt-oracular-amd64-translate-toolkit-20240608-010917-juju-7f2275-prod-proposed-migration-environment-3-f5ac1732-46f2-479f-ac29-1c25d1bc86f2 --image adt/ubuntu-oracular-amd64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-3 --net-id=net_prod-proposed-migration -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 337s autopkgtest [01:14:54]: testbed dpkg architecture: amd64 337s autopkgtest [01:14:54]: testbed apt version: 2.9.3 337s autopkgtest [01:14:54]: @@@@@@@@@@@@@@@@@@@@ test bed setup 337s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 337s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 337s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [339 kB] 337s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 337s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2864 B] 337s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main amd64 Packages [66.4 kB] 337s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/main i386 Packages [38.1 kB] 337s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/restricted amd64 Packages [27.4 kB] 337s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/restricted i386 Packages [9340 B] 337s Get:10 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 Packages [315 kB] 337s Get:11 http://ftpmaster.internal/ubuntu oracular-proposed/universe i386 Packages [126 kB] 337s Get:12 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse amd64 Packages [11.7 kB] 337s Get:13 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse i386 Packages [3368 B] 338s Fetched 1102 kB in 0s (3671 kB/s) 338s Reading package lists... 339s Reading package lists... 340s Building dependency tree... 340s Reading state information... 340s Calculating upgrade... 341s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 341s Reading package lists... 341s Building dependency tree... 341s Reading state information... 342s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 342s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 342s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 342s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 342s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 344s Reading package lists... 344s Reading package lists... 344s Building dependency tree... 344s Reading state information... 345s Calculating upgrade... 345s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 345s Reading package lists... 345s Building dependency tree... 345s Reading state information... 346s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 347s autopkgtest [01:15:04]: testbed running kernel: Linux 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 347s autopkgtest [01:15:04]: @@@@@@@@@@@@@@@@@@@@ apt-source translate-toolkit 348s Get:1 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (dsc) [3172 B] 348s Get:2 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (tar) [1203 kB] 348s Get:3 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (diff) [24.4 kB] 349s gpgv: Signature made Wed Apr 10 14:04:46 2024 UTC 349s gpgv: using RSA key A62D2CFBD50B9B5BF360D54B159EB5C4EFC8774C 349s gpgv: Can't check signature: No public key 349s dpkg-source: warning: cannot verify inline signature for ./translate-toolkit_3.12.2-1ubuntu1.dsc: no acceptable signature found 349s autopkgtest [01:15:06]: testing package translate-toolkit version 3.12.2-1ubuntu1 349s autopkgtest [01:15:06]: build not needed 349s autopkgtest [01:15:06]: test translate-toolkit: preparing testbed 349s Reading package lists... 350s Building dependency tree... 350s Reading state information... 350s Starting pkgProblemResolver with broken count: 0 350s Starting 2 pkgProblemResolver with broken count: 0 350s Done 351s The following additional packages will be installed: 351s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 351s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 351s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 351s python3-aeidon python3-bs4 python3-cheroot python3-dateutil 351s python3-diff-match-patch python3-enchant python3-iniparse 351s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 351s python3-more-itertools python3-phply python3-ply python3-pycountry 351s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 351s python3-simplejson python3-soupsieve python3-translate python3-vobject 351s python3-xapian subversion translate-toolkit 351s Suggested packages: 351s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 351s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 351s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 351s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 351s db5.3-util libapache2-mod-svn subversion-tools 351s Recommended packages: 351s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 351s python3-cssselect python3-html5lib translate-toolkit-doc 351s The following NEW packages will be installed: 351s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 351s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 351s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 351s libxslt1.1 python3-aeidon python3-bs4 python3-cheroot python3-dateutil 351s python3-diff-match-patch python3-enchant python3-iniparse 351s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 351s python3-more-itertools python3-phply python3-ply python3-pycountry 351s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 351s python3-simplejson python3-soupsieve python3-translate python3-vobject 351s python3-xapian subversion translate-toolkit 351s 0 upgraded, 42 newly installed, 0 to remove and 0 not upgraded. 351s Need to get 11.1 MB/11.1 MB of archives. 351s After this operation, 50.2 MB of additional disk space will be used. 351s Get:1 /tmp/autopkgtest.hX7g8F/1-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [872 B] 351s Get:2 http://ftpmaster.internal/ubuntu oracular/main amd64 emacsen-common all 3.0.5 [12.1 kB] 351s Get:3 http://ftpmaster.internal/ubuntu oracular/main amd64 dictionaries-common all 1.29.7 [188 kB] 351s Get:4 http://ftpmaster.internal/ubuntu oracular/main amd64 libgomp1 amd64 14.1.0-1ubuntu1 [148 kB] 351s Get:5 http://ftpmaster.internal/ubuntu oracular/main amd64 gettext amd64 0.21-14ubuntu2 [864 kB] 351s Get:6 http://ftpmaster.internal/ubuntu oracular/main amd64 hunspell-en-us all 1:2020.12.07-2 [280 kB] 351s Get:7 http://ftpmaster.internal/ubuntu oracular/main amd64 libapr1t64 amd64 1.7.2-3.2 [106 kB] 351s Get:8 http://ftpmaster.internal/ubuntu oracular/main amd64 libaprutil1t64 amd64 1.6.3-1.1ubuntu7 [91.9 kB] 351s Get:9 http://ftpmaster.internal/ubuntu oracular/main amd64 libaspell15 amd64 0.60.8.1-1build1 [323 kB] 351s Get:10 http://ftpmaster.internal/ubuntu oracular/main amd64 libhunspell-1.7-0 amd64 1.7.2+really1.7.2-10build3 [294 kB] 351s Get:11 http://ftpmaster.internal/ubuntu oracular/main amd64 libenchant-2-2 amd64 2.3.3-2build2 [51.4 kB] 351s Get:12 http://ftpmaster.internal/ubuntu oracular/main amd64 libexttextcat-data all 3.4.7-1build1 [193 kB] 351s Get:13 http://ftpmaster.internal/ubuntu oracular/universe amd64 libserf-1-1 amd64 1.3.10-2 [48.0 kB] 351s Get:14 http://ftpmaster.internal/ubuntu oracular/universe amd64 libutf8proc3 amd64 2.9.0-1build1 [70.6 kB] 351s Get:15 http://ftpmaster.internal/ubuntu oracular/universe amd64 libsvn1 amd64 1.14.3-1build4 [1345 kB] 351s Get:16 http://ftpmaster.internal/ubuntu oracular/universe amd64 libxapian30 amd64 1.4.22-1build1 [716 kB] 351s Get:17 http://ftpmaster.internal/ubuntu oracular/main amd64 libxslt1.1 amd64 1.1.39-0exp1build1 [167 kB] 351s Get:18 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-aeidon all 1.11-2 [221 kB] 351s Get:19 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-soupsieve all 2.5-1 [33.0 kB] 351s Get:20 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-bs4 all 4.12.3-1 [109 kB] 351s Get:21 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-more-itertools all 10.2.0-1 [52.9 kB] 351s Get:22 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-jaraco.functools all 4.0.0-1 [10.7 kB] 351s Get:23 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 351s Get:24 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-dateutil all 2.9.0-2 [80.3 kB] 351s Get:25 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-diff-match-patch all 20230430-1 [33.1 kB] 351s Get:26 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-enchant all 3.2.2-1 [34.0 kB] 351s Get:27 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-rapidfuzz amd64 3.6.2+ds-3 [2021 kB] 351s Get:28 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-levenshtein amd64 0.25.1-3 [120 kB] 351s Get:29 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-lxml amd64 5.2.1-1 [1243 kB] 351s Get:30 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-mistletoe all 1.3.0-1 [38.0 kB] 351s Get:31 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-ply all 3.11-6 [46.5 kB] 351s Get:32 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-phply all 1.2.6-1 [50.5 kB] 351s Get:33 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-ruamel.yaml.clib amd64 0.2.8-1build1 [132 kB] 351s Get:34 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 351s Get:35 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-simplejson amd64 3.19.2-1build2 [54.5 kB] 351s Get:36 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-translate all 3.12.2-1ubuntu1 [318 kB] 351s Get:37 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-vobject all 0.9.6.1-2 [40.6 kB] 351s Get:38 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-xapian amd64 1.4.22-1build5 [373 kB] 351s Get:39 http://ftpmaster.internal/ubuntu oracular/universe amd64 subversion amd64 1.14.3-1build4 [908 kB] 351s Get:40 http://ftpmaster.internal/ubuntu oracular/universe amd64 translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 351s Get:41 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-iniparse all 0.5-2 [20.0 kB] 351s Get:42 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 351s Preconfiguring packages ... 352s Fetched 11.1 MB in 0s (69.6 MB/s) 352s Selecting previously unselected package emacsen-common. 352s (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 ... 74365 files and directories currently installed.) 352s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 352s Unpacking emacsen-common (3.0.5) ... 352s Selecting previously unselected package dictionaries-common. 352s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 352s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 352s Unpacking dictionaries-common (1.29.7) ... 352s Selecting previously unselected package libgomp1:amd64. 352s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_amd64.deb ... 352s Unpacking libgomp1:amd64 (14.1.0-1ubuntu1) ... 352s Selecting previously unselected package gettext. 352s Preparing to unpack .../03-gettext_0.21-14ubuntu2_amd64.deb ... 352s Unpacking gettext (0.21-14ubuntu2) ... 352s Selecting previously unselected package hunspell-en-us. 352s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 352s Unpacking hunspell-en-us (1:2020.12.07-2) ... 352s Selecting previously unselected package libapr1t64:amd64. 352s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_amd64.deb ... 352s Unpacking libapr1t64:amd64 (1.7.2-3.2) ... 352s Selecting previously unselected package libaprutil1t64:amd64. 352s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_amd64.deb ... 352s Unpacking libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 352s Selecting previously unselected package libaspell15:amd64. 352s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_amd64.deb ... 352s Unpacking libaspell15:amd64 (0.60.8.1-1build1) ... 352s Selecting previously unselected package libhunspell-1.7-0:amd64. 352s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_amd64.deb ... 352s Unpacking libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 352s Selecting previously unselected package libenchant-2-2:amd64. 352s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_amd64.deb ... 352s Unpacking libenchant-2-2:amd64 (2.3.3-2build2) ... 352s Selecting previously unselected package libexttextcat-data. 352s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 352s Unpacking libexttextcat-data (3.4.7-1build1) ... 352s Selecting previously unselected package libserf-1-1:amd64. 352s Preparing to unpack .../11-libserf-1-1_1.3.10-2_amd64.deb ... 352s Unpacking libserf-1-1:amd64 (1.3.10-2) ... 352s Selecting previously unselected package libutf8proc3:amd64. 352s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_amd64.deb ... 352s Unpacking libutf8proc3:amd64 (2.9.0-1build1) ... 352s Selecting previously unselected package libsvn1:amd64. 352s Preparing to unpack .../13-libsvn1_1.14.3-1build4_amd64.deb ... 352s Unpacking libsvn1:amd64 (1.14.3-1build4) ... 353s Selecting previously unselected package libxapian30:amd64. 353s Preparing to unpack .../14-libxapian30_1.4.22-1build1_amd64.deb ... 353s Unpacking libxapian30:amd64 (1.4.22-1build1) ... 353s Selecting previously unselected package libxslt1.1:amd64. 353s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_amd64.deb ... 353s Unpacking libxslt1.1:amd64 (1.1.39-0exp1build1) ... 353s Selecting previously unselected package python3-aeidon. 353s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 353s Unpacking python3-aeidon (1.11-2) ... 353s Selecting previously unselected package python3-soupsieve. 353s Preparing to unpack .../17-python3-soupsieve_2.5-1_all.deb ... 353s Unpacking python3-soupsieve (2.5-1) ... 353s Selecting previously unselected package python3-bs4. 353s Preparing to unpack .../18-python3-bs4_4.12.3-1_all.deb ... 353s Unpacking python3-bs4 (4.12.3-1) ... 353s Selecting previously unselected package python3-more-itertools. 353s Preparing to unpack .../19-python3-more-itertools_10.2.0-1_all.deb ... 353s Unpacking python3-more-itertools (10.2.0-1) ... 353s Selecting previously unselected package python3-jaraco.functools. 353s Preparing to unpack .../20-python3-jaraco.functools_4.0.0-1_all.deb ... 353s Unpacking python3-jaraco.functools (4.0.0-1) ... 353s Selecting previously unselected package python3-cheroot. 353s Preparing to unpack .../21-python3-cheroot_10.0.0+ds1-2_all.deb ... 353s Unpacking python3-cheroot (10.0.0+ds1-2) ... 353s Selecting previously unselected package python3-dateutil. 353s Preparing to unpack .../22-python3-dateutil_2.9.0-2_all.deb ... 353s Unpacking python3-dateutil (2.9.0-2) ... 353s Selecting previously unselected package python3-diff-match-patch. 353s Preparing to unpack .../23-python3-diff-match-patch_20230430-1_all.deb ... 353s Unpacking python3-diff-match-patch (20230430-1) ... 353s Selecting previously unselected package python3-enchant. 353s Preparing to unpack .../24-python3-enchant_3.2.2-1_all.deb ... 353s Unpacking python3-enchant (3.2.2-1) ... 353s Selecting previously unselected package python3-rapidfuzz. 353s Preparing to unpack .../25-python3-rapidfuzz_3.6.2+ds-3_amd64.deb ... 353s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 353s Selecting previously unselected package python3-levenshtein. 353s Preparing to unpack .../26-python3-levenshtein_0.25.1-3_amd64.deb ... 353s Unpacking python3-levenshtein (0.25.1-3) ... 353s Selecting previously unselected package python3-lxml:amd64. 353s Preparing to unpack .../27-python3-lxml_5.2.1-1_amd64.deb ... 353s Unpacking python3-lxml:amd64 (5.2.1-1) ... 353s Selecting previously unselected package python3-mistletoe. 353s Preparing to unpack .../28-python3-mistletoe_1.3.0-1_all.deb ... 353s Unpacking python3-mistletoe (1.3.0-1) ... 353s Selecting previously unselected package python3-ply. 353s Preparing to unpack .../29-python3-ply_3.11-6_all.deb ... 353s Unpacking python3-ply (3.11-6) ... 353s Selecting previously unselected package python3-phply. 353s Preparing to unpack .../30-python3-phply_1.2.6-1_all.deb ... 353s Unpacking python3-phply (1.2.6-1) ... 353s Selecting previously unselected package python3-ruamel.yaml.clib:amd64. 353s Preparing to unpack .../31-python3-ruamel.yaml.clib_0.2.8-1build1_amd64.deb ... 353s Unpacking python3-ruamel.yaml.clib:amd64 (0.2.8-1build1) ... 353s Selecting previously unselected package python3-ruamel.yaml. 353s Preparing to unpack .../32-python3-ruamel.yaml_0.17.21-1_all.deb ... 353s Unpacking python3-ruamel.yaml (0.17.21-1) ... 353s Selecting previously unselected package python3-simplejson. 353s Preparing to unpack .../33-python3-simplejson_3.19.2-1build2_amd64.deb ... 353s Unpacking python3-simplejson (3.19.2-1build2) ... 353s Selecting previously unselected package python3-translate. 353s Preparing to unpack .../34-python3-translate_3.12.2-1ubuntu1_all.deb ... 353s Unpacking python3-translate (3.12.2-1ubuntu1) ... 354s Selecting previously unselected package python3-vobject. 354s Preparing to unpack .../35-python3-vobject_0.9.6.1-2_all.deb ... 354s Unpacking python3-vobject (0.9.6.1-2) ... 354s Selecting previously unselected package python3-xapian. 354s Preparing to unpack .../36-python3-xapian_1.4.22-1build5_amd64.deb ... 354s Unpacking python3-xapian (1.4.22-1build5) ... 354s Selecting previously unselected package subversion. 354s Preparing to unpack .../37-subversion_1.14.3-1build4_amd64.deb ... 354s Unpacking subversion (1.14.3-1build4) ... 354s Selecting previously unselected package translate-toolkit. 354s Preparing to unpack .../38-translate-toolkit_3.12.2-1ubuntu1_all.deb ... 354s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 354s Selecting previously unselected package python3-iniparse. 354s Preparing to unpack .../39-python3-iniparse_0.5-2_all.deb ... 354s Unpacking python3-iniparse (0.5-2) ... 354s Selecting previously unselected package python3-pycountry. 354s Preparing to unpack .../40-python3-pycountry_23.12.11+ds1-2_all.deb ... 354s Unpacking python3-pycountry (23.12.11+ds1-2) ... 354s Selecting previously unselected package autopkgtest-satdep. 354s Preparing to unpack .../41-1-autopkgtest-satdep.deb ... 354s Unpacking autopkgtest-satdep (0) ... 354s Setting up python3-more-itertools (10.2.0-1) ... 354s Setting up libxapian30:amd64 (1.4.22-1build1) ... 354s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 354s Setting up python3-diff-match-patch (20230430-1) ... 355s Setting up python3-jaraco.functools (4.0.0-1) ... 355s Setting up python3-aeidon (1.11-2) ... 355s Setting up libutf8proc3:amd64 (2.9.0-1build1) ... 355s Setting up libaspell15:amd64 (0.60.8.1-1build1) ... 355s Setting up python3-ply (3.11-6) ... 355s Setting up python3-ruamel.yaml.clib:amd64 (0.2.8-1build1) ... 355s Setting up libgomp1:amd64 (14.1.0-1ubuntu1) ... 355s Setting up python3-simplejson (3.19.2-1build2) ... 356s Setting up emacsen-common (3.0.5) ... 356s Setting up python3-cheroot (10.0.0+ds1-2) ... 356s Setting up python3-pycountry (23.12.11+ds1-2) ... 356s Setting up python3-xapian (1.4.22-1build5) ... 356s Setting up python3-ruamel.yaml (0.17.21-1) ... 357s Setting up python3-mistletoe (1.3.0-1) ... 357s Setting up libexttextcat-data (3.4.7-1build1) ... 357s Setting up libapr1t64:amd64 (1.7.2-3.2) ... 357s Setting up libxslt1.1:amd64 (1.1.39-0exp1build1) ... 357s Setting up python3-dateutil (2.9.0-2) ... 357s Setting up python3-levenshtein (0.25.1-3) ... 357s Setting up libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 357s Setting up python3-soupsieve (2.5-1) ... 357s Setting up python3-iniparse (0.5-2) ... 357s Setting up libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 357s Setting up python3-vobject (0.9.6.1-2) ... 357s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 357s patterns['name'] = '[a-zA-Z0-9\-_]+' 358s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 358s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 358s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 358s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 358s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 358s """ 358s Setting up gettext (0.21-14ubuntu2) ... 358s Setting up python3-phply (1.2.6-1) ... 358s Setting up dictionaries-common (1.29.7) ... 358s Setting up libserf-1-1:amd64 (1.3.10-2) ... 358s Setting up python3-bs4 (4.12.3-1) ... 358s Setting up python3-lxml:amd64 (5.2.1-1) ... 359s Setting up hunspell-en-us (1:2020.12.07-2) ... 359s Setting up libsvn1:amd64 (1.14.3-1build4) ... 359s Setting up libenchant-2-2:amd64 (2.3.3-2build2) ... 359s Setting up subversion (1.14.3-1build4) ... 359s Setting up python3-enchant (3.2.2-1) ... 359s Setting up python3-translate (3.12.2-1ubuntu1) ... 359s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 359s Setting up autopkgtest-satdep (0) ... 359s Processing triggers for man-db (2.12.1-1) ... 361s Processing triggers for install-info (7.1-3build2) ... 361s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 361s Processing triggers for dictionaries-common (1.29.7) ... 365s (Reading database ... 77796 files and directories currently installed.) 365s Removing autopkgtest-satdep (0) ... 365s autopkgtest [01:15:22]: test translate-toolkit: [----------------------- 365s ========= SMOKE TEST: /usr/bin/android2po =========== 366s Usage: android2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 366s 366s Convert Android string files to Gettext PO localization files. See: 366s http://docs.translatehouse.org/projects/translate- 366s toolkit/en/latest/commands/android2po.html for examples and usage 366s instructions. 366s 366s Options: 366s --version show program's version number and exit 366s -h, --help show this help message and exit 366s --manpage output a manpage based on the help 366s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 366s --errorlevel=ERRORLEVEL 366s show errorlevel as: none, message, exception, 366s traceback 366s -i INPUT, --input=INPUT 366s read from INPUT in xml format 366s -x EXCLUDE, --exclude=EXCLUDE 366s exclude names matching EXCLUDE from input paths 366s -o OUTPUT, --output=OUTPUT 366s write to OUTPUT in po, pot formats 366s -t TEMPLATE, --template=TEMPLATE 366s read from TEMPLATE in xml format 366s -S, --timestamp skip conversion if the output file has newer timestamp 366s --duplicates=DUPLICATESTYLE 366s what to do with duplicate strings (identical source 366s text): merge, msgctxt (default: 'msgctxt') 366s ========= SMOKE TEST: /usr/bin/build_tmdb =========== 366s usage: build_tmdb [-h] [-d TMDB_FILE] [-s SOURCE_LANG] -t TARGET_LANG 366s input files [input files ...] 366s 366s positional arguments: 366s input files 366s 366s options: 366s -h, --help show this help message and exit 366s -d TMDB_FILE, --tmdb TMDB_FILE 366s translation memory database file (default: tm.db) 366s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 366s source language of translation files (default: en) 366s -t TARGET_LANG, --import-target-lang TARGET_LANG 366s target language of translation files 366s ========= SMOKE TEST: /usr/bin/buildxpi =========== 366s usage: Usage: buildxpi.py [] [ ...] 366s 366s positional arguments: 366s langs 366s 366s options: 366s -h, --help show this help message and exit 366s -L L10NBASE, --l10n-base L10NBASE 366s The directory containing the subdirectory. 366s -o OUTPUTDIR, --output-dir OUTPUTDIR 366s The directory to copy the built XPI to (default: 366s current directory). 366s -p MOZPRODUCT, --mozproduct MOZPRODUCT 366s The Mozilla product name (default: "browser"). 366s -s SRCDIR, --src SRCDIR 366s The directory containing the Mozilla l10n sources. 366s -d, --delete-dest Delete output XPI if it already exists. 366s -v, --verbose Be more noisy 366s --soft-max-version Override a fixed max version with one to cover the 366s whole cycle e.g. 24.0a1 becomes 24.0.* 366s ========= SMOKE TEST: /usr/bin/csv2po =========== 366s 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] 366s 366s Convert Comma-Separated Value (.csv) files to Gettext PO localization files. 366s See: http://docs.translatehouse.org/projects/translate- 366s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 366s 366s Options: 366s --version show program's version number and exit 366s -h, --help show this help message and exit 366s --manpage output a manpage based on the help 366s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 366s --errorlevel=ERRORLEVEL 366s show errorlevel as: none, message, exception, 366s traceback 366s -i INPUT, --input=INPUT 366s read from INPUT in csv format 366s -x EXCLUDE, --exclude=EXCLUDE 366s exclude names matching EXCLUDE from input paths 366s -o OUTPUT, --output=OUTPUT 366s write to OUTPUT in po, pot formats 366s -t TEMPLATE, --template=TEMPLATE 366s read from TEMPLATE in po, pot, pot formats 366s -S, --timestamp skip conversion if the output file has newer timestamp 366s -P, --pot output PO Templates (.pot) rather than PO files (.po) 366s --charset=CHARSET set charset to decode from csv files 366s --columnorder=COLUMNORDER 366s specify the order and position of columns 366s (location,source,target) 366s --duplicates=DUPLICATESTYLE 366s what to do with duplicate strings (identical source 366s text): merge, msgctxt (default: 'msgctxt') 366s ========= SMOKE TEST: /usr/bin/csv2tbx =========== 366s Usage: csv2tbx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 366s 366s Convert Comma-Separated Value (.csv) files to a TermBase eXchange (.tbx) 366s glossary file. See: http://docs.translatehouse.org/projects/translate- 366s toolkit/en/latest/commands/csv2tbx.html for examples and usage instructions 366s 366s Options: 366s --version show program's version number and exit 366s -h, --help show this help message and exit 366s --manpage output a manpage based on the help 366s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 366s --errorlevel=ERRORLEVEL 366s show errorlevel as: none, message, exception, 366s traceback 366s -i INPUT, --input=INPUT 366s read from INPUT in csv format 366s -x EXCLUDE, --exclude=EXCLUDE 366s exclude names matching EXCLUDE from input paths 366s -o OUTPUT, --output=OUTPUT 366s write to OUTPUT in tbx format 366s -S, --timestamp skip conversion if the output file has newer timestamp 366s --charset=CHARSET set charset to decode from csv files 366s --columnorder=COLUMNORDER 366s specify the order and position of columns 366s (comment,source,target) 366s ========= SMOKE TEST: /usr/bin/dtd2po =========== 366s 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] 366s 366s Convert a Mozilla .dtd UTF-8 localization format to a Gettext PO localization 366s file. Uses the po and dtd modules, and the dtd2po convertor class which is in 366s this module You can convert back to .dtd using po2dtd.py. 366s 366s Options: 366s --version show program's version number and exit 366s -h, --help show this help message and exit 366s --manpage output a manpage based on the help 366s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 366s --errorlevel=ERRORLEVEL 366s show errorlevel as: none, message, exception, 366s traceback 366s -i INPUT, --input=INPUT 366s read from INPUT in dtd format 366s -x EXCLUDE, --exclude=EXCLUDE 366s exclude names matching EXCLUDE from input paths 366s -o OUTPUT, --output=OUTPUT 366s write to OUTPUT in po, pot formats 366s -t TEMPLATE, --template=TEMPLATE 366s read from TEMPLATE in dtd format 366s -S, --timestamp skip conversion if the output file has newer timestamp 366s -P, --pot output PO Templates (.pot) rather than PO files (.po) 366s --duplicates=DUPLICATESTYLE 366s what to do with duplicate strings (identical source 366s text): merge, msgctxt (default: 'msgctxt') 367s ========= SMOKE TEST: /usr/bin/flatxml2po =========== 367s Usage: flatxml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 367s 367s Convert flat XML files to Gettext PO localization files. See: 367s http://docs.translatehouse.org/projects/translate- 367s toolkit/en/latest/commands/flatxml2po.html for examples and usage 367s instructions. 367s 367s Options: 367s --version show program's version number and exit 367s -h, --help show this help message and exit 367s --manpage output a manpage based on the help 367s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 367s --errorlevel=ERRORLEVEL 367s show errorlevel as: none, message, exception, 367s traceback 367s -i INPUT, --input=INPUT 367s read from INPUT in xml format 367s -x EXCLUDE, --exclude=EXCLUDE 367s exclude names matching EXCLUDE from input paths 367s -o OUTPUT, --output=OUTPUT 367s write to OUTPUT in po, pot formats 367s -S, --timestamp skip conversion if the output file has newer timestamp 367s -r ROOT, --root=ROOT name of the XML root element (default: "root") 367s -v VALUE, --value=VALUE 367s name of the XML value element (default: "str") 367s -k KEY, --key=KEY name of the XML key attribute (default: "key") 367s -n NS, --namespace=NS 367s XML namespace uri (default: None) 367s ========= SMOKE TEST: /usr/bin/get_moz_enUS =========== 367s usage: get_moz_enUS [-h] [-s SRCDIR] [-d DESTDIR] [-p MOZPRODUCT] 367s [--delete-dest] [-v] 367s 367s options: 367s -h, --help show this help message and exit 367s -s SRCDIR, --src SRCDIR 367s The directory containing the Mozilla l10n sources. 367s -d DESTDIR, --dest DESTDIR 367s The destination directory to copy the en-US locale 367s files to. 367s -p MOZPRODUCT, --mozproduct MOZPRODUCT 367s The Mozilla product name. 367s --delete-dest Delete the destination directory (if it exists). 367s -v, --verbose Be more noisy 367s ========= SMOKE TEST: /usr/bin/html2po =========== 367s Usage: html2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 367s 367s Convert HTML files to Gettext PO localization files. See: 367s http://docs.translatehouse.org/projects/translate- 367s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 367s 367s Options: 367s --version show program's version number and exit 367s -h, --help show this help message and exit 367s --manpage output a manpage based on the help 367s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 367s --errorlevel=ERRORLEVEL 367s show errorlevel as: none, message, exception, 367s traceback 367s -i INPUT, --input=INPUT 367s read from INPUT in htm, html, xhtml formats 367s -x EXCLUDE, --exclude=EXCLUDE 367s exclude names matching EXCLUDE from input paths 367s -o OUTPUT, --output=OUTPUT 367s write to OUTPUT in po, pot formats 367s -S, --timestamp skip conversion if the output file has newer timestamp 367s -P, --pot output PO Templates (.pot) rather than PO files (.po) 367s --keepcomments preserve html comments as translation notes in the 367s output 367s --duplicates=DUPLICATESTYLE 367s what to do with duplicate strings (identical source 367s text): merge, msgctxt (default: 'msgctxt') 367s --multifile=MULTIFILESTYLE 367s how to split po/pot files (single, toplevel or 367s onefile) 367s ========= SMOKE TEST: /usr/bin/ical2po =========== 367s 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] 367s 367s Convert iCalendar files to Gettext PO localization files. See: 367s http://docs.translatehouse.org/projects/translate- 367s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 367s 367s Options: 367s --version show program's version number and exit 367s -h, --help show this help message and exit 367s --manpage output a manpage based on the help 367s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 367s --errorlevel=ERRORLEVEL 367s show errorlevel as: none, message, exception, 367s traceback 367s -i INPUT, --input=INPUT 367s read from INPUT in ics format 367s -x EXCLUDE, --exclude=EXCLUDE 367s exclude names matching EXCLUDE from input paths 367s -o OUTPUT, --output=OUTPUT 367s write to OUTPUT in po, pot formats 367s -t TEMPLATE, --template=TEMPLATE 367s read from TEMPLATE in ics format 367s -S, --timestamp skip conversion if the output file has newer timestamp 367s -P, --pot output PO Templates (.pot) rather than PO files (.po) 367s --duplicates=DUPLICATESTYLE 367s what to do with duplicate strings (identical source 367s text): merge, msgctxt (default: 'msgctxt') 368s ========= SMOKE TEST: /usr/bin/idml2po =========== 368s Usage: idml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 368s 368s Convert IDML files to PO localization files. 368s 368s Options: 368s --version show program's version number and exit 368s -h, --help show this help message and exit 368s --manpage output a manpage based on the help 368s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 368s --errorlevel=ERRORLEVEL 368s show errorlevel as: none, message, exception, 368s traceback 368s -i INPUT, --input=INPUT 368s read from INPUT in idml format 368s -x EXCLUDE, --exclude=EXCLUDE 368s exclude names matching EXCLUDE from input paths 368s -o OUTPUT, --output=OUTPUT 368s write to OUTPUT in po, pot formats 368s -S, --timestamp skip conversion if the output file has newer timestamp 368s ========= SMOKE TEST: /usr/bin/ini2po =========== 368s 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] 368s 368s Convert .ini files to Gettext PO localization files. See: 368s http://docs.translatehouse.org/projects/translate- 368s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 368s 368s Options: 368s --version show program's version number and exit 368s -h, --help show this help message and exit 368s --manpage output a manpage based on the help 368s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 368s --errorlevel=ERRORLEVEL 368s show errorlevel as: none, message, exception, 368s traceback 368s -i INPUT, --input=INPUT 368s read from INPUT in ini, isl, iss formats 368s -x EXCLUDE, --exclude=EXCLUDE 368s exclude names matching EXCLUDE from input paths 368s -o OUTPUT, --output=OUTPUT 368s write to OUTPUT in po, pot formats 368s -t TEMPLATE, --template=TEMPLATE 368s read from TEMPLATE in ini, isl, iss formats 368s -S, --timestamp skip conversion if the output file has newer timestamp 368s -P, --pot output PO Templates (.pot) rather than PO files (.po) 368s --duplicates=DUPLICATESTYLE 368s what to do with duplicate strings (identical source 368s text): merge, msgctxt (default: 'msgctxt') 368s ========= SMOKE TEST: /usr/bin/json2po =========== 368s 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] 368s 368s Convert JSON files to Gettext PO localization files. See: 368s http://docs.translatehouse.org/projects/translate- 368s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 368s 368s Options: 368s --version show program's version number and exit 368s -h, --help show this help message and exit 368s --manpage output a manpage based on the help 368s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 368s --errorlevel=ERRORLEVEL 368s show errorlevel as: none, message, exception, 368s traceback 368s -i INPUT, --input=INPUT 368s read from INPUT in json format 368s -x EXCLUDE, --exclude=EXCLUDE 368s exclude names matching EXCLUDE from input paths 368s -o OUTPUT, --output=OUTPUT 368s write to OUTPUT in po, pot formats 368s -t TEMPLATE, --template=TEMPLATE 368s read from TEMPLATE in json format 368s -S, --timestamp skip conversion if the output file has newer timestamp 368s -P, --pot output PO Templates (.pot) rather than PO files (.po) 368s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 368s everything) 368s --duplicates=DUPLICATESTYLE 368s what to do with duplicate strings (identical source 368s text): merge, msgctxt (default: 'msgctxt') 368s ========= SMOKE TEST: /usr/bin/md2po =========== 368s Usage: md2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 368s 368s Convert Markdown files to Gettext PO localization files. See: 368s http://docs.translatehouse.org/projects/translate- 368s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 368s 368s Options: 368s --version show program's version number and exit 368s -h, --help show this help message and exit 368s --manpage output a manpage based on the help 368s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 368s --errorlevel=ERRORLEVEL 368s show errorlevel as: none, message, exception, 368s traceback 368s -i INPUT, --input=INPUT 368s read from INPUT in markdown, md, text, txt formats 368s -x EXCLUDE, --exclude=EXCLUDE 368s exclude names matching EXCLUDE from input paths 368s -o OUTPUT, --output=OUTPUT 368s write to OUTPUT in po, pot formats 368s -S, --timestamp skip conversion if the output file has newer timestamp 368s -P, --pot output PO Templates (.pot) rather than PO files (.po) 368s --duplicates=DUPLICATESTYLE 368s what to do with duplicate strings (identical source 368s text): merge, msgctxt (default: 'msgctxt') 368s --multifile=MULTIFILESTYLE 368s how to split po/pot files (single, toplevel or 368s onefile) 369s ========= SMOKE TEST: /usr/bin/moz2po =========== 369s 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] 369s 369s Convert Mozilla .dtd and .properties files to Gettext PO localization files. 369s See: http://docs.translatehouse.org/projects/translate- 369s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 369s 369s Options: 369s --version show program's version number and exit 369s -h, --help show this help message and exit 369s --manpage output a manpage based on the help 369s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 369s --errorlevel=ERRORLEVEL 369s show errorlevel as: none, message, exception, 369s traceback 369s -i INPUT, --input=INPUT 369s read from INPUT in *, dtd, inc, ini, it, js, lang, 369s manifest, properties, rdf formats 369s -x EXCLUDE, --exclude=EXCLUDE 369s exclude names matching EXCLUDE from input paths 369s -o OUTPUT, --output=OUTPUT 369s write to OUTPUT in *, dtd.po, dtd.pot, inc.po, 369s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 369s lang.pot, manifest, properties.po, properties.pot, rdf 369s formats 369s -t TEMPLATE, --template=TEMPLATE 369s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 369s manifest, properties, rdf formats 369s -S, --timestamp skip conversion if the output file has newer timestamp 369s -P, --pot output PO Templates (.pot) rather than PO files (.po) 369s --duplicates=DUPLICATESTYLE 369s what to do with duplicate strings (identical source 369s text): merge, msgctxt (default: 'msgctxt') 369s ========= SMOKE TEST: /usr/bin/mozlang2po =========== 369s Usage: mozlang2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 369s 369s Convert Mozilla .lang files to Gettext PO localization files. 369s 369s Options: 369s --version show program's version number and exit 369s -h, --help show this help message and exit 369s --manpage output a manpage based on the help 369s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 369s --errorlevel=ERRORLEVEL 369s show errorlevel as: none, message, exception, 369s traceback 369s -i INPUT, --input=INPUT 369s read from INPUT in lang format 369s -x EXCLUDE, --exclude=EXCLUDE 369s exclude names matching EXCLUDE from input paths 369s -o OUTPUT, --output=OUTPUT 369s write to OUTPUT in po, pot formats 369s -S, --timestamp skip conversion if the output file has newer timestamp 369s -P, --pot output PO Templates (.pot) rather than PO files (.po) 369s --encoding=ENCODING The encoding of the input file (default: UTF-8) 369s --duplicates=DUPLICATESTYLE 369s what to do with duplicate strings (identical source 369s text): merge, msgctxt (default: 'msgctxt') 369s ========= SMOKE TEST: /usr/bin/msghack =========== 369s Usage: /usr/bin/msghack [OPTION] file.po [ref.po] 369s This program can be used to alter .po files in ways no sane mind would think about. 369s -o result will be written to FILE 369s --invert invert a po file by switching msgid and msgstr 369s --master join any number of files in a master-formatted catalog 369s --empty empty the contents of the .po file, creating a .pot 369s --append append entries from ref.po that don't exist in file.po 369s 369s Note: It is just a replacement of msghack for backward support. 369s 369s ========= SMOKE TEST: /usr/bin/odf2xliff =========== 369s Usage: odf2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 369s 369s Convert OpenDocument (ODF) files to XLIFF localization files. See: 369s http://docs.translatehouse.org/projects/translate- 369s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 369s 369s Options: 369s --version show program's version number and exit 369s -h, --help show this help message and exit 369s --manpage output a manpage based on the help 369s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 369s --errorlevel=ERRORLEVEL 369s show errorlevel as: none, message, exception, 369s traceback 369s -i INPUT, --input=INPUT 369s read from INPUT in odc, odf, odg, odi, odm, odp, ods, 369s odt, otc, otf, otg, oth, oti, otp, ots, ott, sxw 369s formats 369s -x EXCLUDE, --exclude=EXCLUDE 369s exclude names matching EXCLUDE from input paths 369s -o OUTPUT, --output=OUTPUT 369s write to OUTPUT in xlf, xliff formats 369s -S, --timestamp skip conversion if the output file has newer timestamp 369s ========= SMOKE TEST: /usr/bin/oo2po =========== 369s Usage: oo2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 369s 369s Convert an OpenOffice.org (SDF) localization file to Gettext PO localization 369s files. See: http://docs.translatehouse.org/projects/translate- 369s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 369s 369s Options: 369s --version show program's version number and exit 369s -h, --help show this help message and exit 369s --manpage output a manpage based on the help 369s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 369s --errorlevel=ERRORLEVEL 369s show errorlevel as: none, message, exception, 369s traceback 369s -i INPUT, --input=INPUT 369s read from INPUT in oo, sdf formats 369s -x EXCLUDE, --exclude=EXCLUDE 369s exclude names matching EXCLUDE from input paths 369s -o OUTPUT, --output=OUTPUT 369s write to OUTPUT in po, pot formats 369s -S, --timestamp skip conversion if the output file has newer timestamp 369s -P, --pot output PO Templates (.pot) rather than PO files (.po) 369s -l LANG, --language=LANG 369s set target language to extract from oo file (e.g. af- 369s ZA) 369s --source-language=LANG 369s set source language code (default en-US) 369s --nonrecursiveinput don't treat the input oo as a recursive store 369s --duplicates=DUPLICATESTYLE 369s what to do with duplicate strings (identical source 369s text): merge, msgctxt (default: 'msgctxt') 369s --multifile=MULTIFILESTYLE 369s how to split po/pot files (single, toplevel or 369s onefile) 370s ========= SMOKE TEST: /usr/bin/oo2xliff =========== 370s Usage: oo2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 370s 370s Convert an OpenOffice.org (SDF) localization file to XLIFF localization 370s files. See: http://docs.translatehouse.org/projects/translate- 370s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 370s 370s Options: 370s --version show program's version number and exit 370s -h, --help show this help message and exit 370s --manpage output a manpage based on the help 370s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 370s --errorlevel=ERRORLEVEL 370s show errorlevel as: none, message, exception, 370s traceback 370s -i INPUT, --input=INPUT 370s read from INPUT in oo, sdf formats 370s -x EXCLUDE, --exclude=EXCLUDE 370s exclude names matching EXCLUDE from input paths 370s -o OUTPUT, --output=OUTPUT 370s write to OUTPUT in xlf, xliff formats 370s -S, --timestamp skip conversion if the output file has newer timestamp 370s -l LANG, --language=LANG 370s set target language to extract from oo file (e.g. af- 370s ZA) 370s --source-language=LANG 370s set source language code (default en-US) 370s --nonrecursiveinput don't treat the input oo as a recursive store 370s --duplicates=DUPLICATESTYLE 370s what to do with duplicate strings (identical source 370s text): merge, msgctxt (default: 'msgctxt') 370s --multifile=MULTIFILESTYLE 370s how to split po/pot files (single, toplevel or 370s onefile) 370s ========= SMOKE TEST: /usr/bin/php2po =========== 370s 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] 370s 370s Convert PHP localization files to Gettext PO localization files. See: 370s http://docs.translatehouse.org/projects/translate- 370s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 370s 370s Options: 370s --version show program's version number and exit 370s -h, --help show this help message and exit 370s --manpage output a manpage based on the help 370s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 370s --errorlevel=ERRORLEVEL 370s show errorlevel as: none, message, exception, 370s traceback 370s -i INPUT, --input=INPUT 370s read from INPUT in html, php formats 370s -x EXCLUDE, --exclude=EXCLUDE 370s exclude names matching EXCLUDE from input paths 370s -o OUTPUT, --output=OUTPUT 370s write to OUTPUT in po, pot formats 370s -t TEMPLATE, --template=TEMPLATE 370s read from TEMPLATE in html, php formats 370s -S, --timestamp skip conversion if the output file has newer timestamp 370s -P, --pot output PO Templates (.pot) rather than PO files (.po) 370s --duplicates=DUPLICATESTYLE 370s what to do with duplicate strings (identical source 370s text): merge, msgctxt (default: 'msgctxt') 370s ========= SMOKE TEST: /usr/bin/phppo2pypo =========== 370s Usage: phppo2pypo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 370s 370s Convert PHP format .po files to Python format .po files. 370s 370s Options: 370s --version show program's version number and exit 370s -h, --help show this help message and exit 370s --manpage output a manpage based on the help 370s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 370s --errorlevel=ERRORLEVEL 370s show errorlevel as: none, message, exception, 370s traceback 370s -i INPUT, --input=INPUT 370s read from INPUT in po, pot formats 370s -x EXCLUDE, --exclude=EXCLUDE 370s exclude names matching EXCLUDE from input paths 370s -o OUTPUT, --output=OUTPUT 370s write to OUTPUT in po, pot formats 370s -S, --timestamp skip conversion if the output file has newer timestamp 370s ========= SMOKE TEST: /usr/bin/po2csv =========== 370s Usage: po2csv [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 370s 370s Convert Gettext PO localization files to Comma-Separated Value (.csv) files. 370s See: http://docs.translatehouse.org/projects/translate- 370s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 370s 370s Options: 370s --version show program's version number and exit 370s -h, --help show this help message and exit 370s --manpage output a manpage based on the help 370s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 370s --errorlevel=ERRORLEVEL 370s show errorlevel as: none, message, exception, 370s traceback 370s -i INPUT, --input=INPUT 370s read from INPUT in po, pot formats 370s -x EXCLUDE, --exclude=EXCLUDE 370s exclude names matching EXCLUDE from input paths 370s -o OUTPUT, --output=OUTPUT 370s write to OUTPUT in csv format 370s -S, --timestamp skip conversion if the output file has newer timestamp 370s --columnorder=COLUMNORDER 370s specify the order and position of columns 370s (location,source,target) 370s ========= SMOKE TEST: /usr/bin/po2dtd =========== 370s Usage: po2dtd [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 370s 370s Converts a Gettext PO file to a UTF-8 encoded Mozilla .dtd file. .. note: 370s Conversion is either done using a template plus PO file or just using the 370s .po file. 370s 370s Options: 370s --version show program's version number and exit 370s -h, --help show this help message and exit 370s --manpage output a manpage based on the help 370s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 370s --errorlevel=ERRORLEVEL 370s show errorlevel as: none, message, exception, 370s traceback 370s -i INPUT, --input=INPUT 370s read from INPUT in po, pot formats 370s -x EXCLUDE, --exclude=EXCLUDE 370s exclude names matching EXCLUDE from input paths 370s -o OUTPUT, --output=OUTPUT 370s write to OUTPUT in dtd format 370s -t TEMPLATE, --template=TEMPLATE 370s read from TEMPLATE in dtd format 370s -S, --timestamp skip conversion if the output file has newer timestamp 370s --threshold=PERCENT only convert files where the translation completion is 370s above PERCENT 370s --fuzzy use translations marked fuzzy 370s --nofuzzy don't use translations marked fuzzy (default) 370s --removeuntranslated remove untranslated strings from output 370s ========= SMOKE TEST: /usr/bin/po2flatxml =========== 370s Usage: po2flatxml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 370s 370s Convert Gettext PO localization files to flat XML files. See: 370s http://docs.translatehouse.org/projects/translate- 370s toolkit/en/latest/commands/flatxml2po.html for examples and usage 370s instructions. 370s 370s Options: 370s --version show program's version number and exit 370s -h, --help show this help message and exit 370s --manpage output a manpage based on the help 370s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 370s --errorlevel=ERRORLEVEL 370s show errorlevel as: none, message, exception, 370s traceback 370s -i INPUT, --input=INPUT 370s read from INPUT in po, pot formats 370s -x EXCLUDE, --exclude=EXCLUDE 370s exclude names matching EXCLUDE from input paths 370s -o OUTPUT, --output=OUTPUT 370s write to OUTPUT in xml format 370s -t TEMPLATE, --template=TEMPLATE 370s read from TEMPLATE in xml format 370s -S, --timestamp skip conversion if the output file has newer timestamp 370s -r ROOT, --root=ROOT name of the XML root element (default: "root") 370s -v VALUE, --value=VALUE 370s name of the XML value element (default: "str") 370s -k KEY, --key=KEY name of the XML key attribute (default: "key") 370s -n NS, --namespace=NS 370s XML namespace uri (default: None) 370s -w INDENT, --indent=INDENT 370s indent width in spaces, 0 for no indent (default: 2) 371s ========= SMOKE TEST: /usr/bin/po2html =========== 371s Usage: po2html [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 371s 371s Translate HTML files using Gettext PO localization files. See: 371s http://docs.translatehouse.org/projects/translate- 371s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 371s 371s Options: 371s --version show program's version number and exit 371s -h, --help show this help message and exit 371s --manpage output a manpage based on the help 371s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 371s --errorlevel=ERRORLEVEL 371s show errorlevel as: none, message, exception, 371s traceback 371s -i INPUT, --input=INPUT 371s read from INPUT in po, pot formats 371s -x EXCLUDE, --exclude=EXCLUDE 371s exclude names matching EXCLUDE from input paths 371s -o OUTPUT, --output=OUTPUT 371s write to OUTPUT in htm, html, xhtml formats 371s -t TEMPLATE, --template=TEMPLATE 371s read from TEMPLATE in htm, html, xhtml formats 371s -S, --timestamp skip conversion if the output file has newer timestamp 371s --threshold=PERCENT only convert files where the translation completion is 371s above PERCENT 371s --fuzzy use translations marked fuzzy 371s --nofuzzy don't use translations marked fuzzy (default) 371s ========= SMOKE TEST: /usr/bin/po2ical =========== 371s Usage: po2ical [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 371s 371s Convert Gettext PO localization files to iCalendar files. See: 371s http://docs.translatehouse.org/projects/translate- 371s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 371s 371s Options: 371s --version show program's version number and exit 371s -h, --help show this help message and exit 371s --manpage output a manpage based on the help 371s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 371s --errorlevel=ERRORLEVEL 371s show errorlevel as: none, message, exception, 371s traceback 371s -i INPUT, --input=INPUT 371s read from INPUT in po, pot formats 371s -x EXCLUDE, --exclude=EXCLUDE 371s exclude names matching EXCLUDE from input paths 371s -o OUTPUT, --output=OUTPUT 371s write to OUTPUT in ics format 371s -t TEMPLATE, --template=TEMPLATE 371s read from TEMPLATE in ics format 371s -S, --timestamp skip conversion if the output file has newer timestamp 371s --threshold=PERCENT only convert files where the translation completion is 371s above PERCENT 371s --fuzzy use translations marked fuzzy 371s --nofuzzy don't use translations marked fuzzy (default) 371s ========= SMOKE TEST: /usr/bin/po2idml =========== 371s Usage: po2idml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 371s 371s Takes an IDML template file and a PO file containing translations of strings 371s in the IDML template. It creates a new IDML file using the translations of the 371s PO file. 371s 371s Options: 371s --version show program's version number and exit 371s -h, --help show this help message and exit 371s --manpage output a manpage based on the help 371s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 371s --errorlevel=ERRORLEVEL 371s show errorlevel as: none, message, exception, 371s traceback 371s -i INPUT, --input=INPUT 371s read from INPUT in po, pot formats 371s -x EXCLUDE, --exclude=EXCLUDE 371s exclude names matching EXCLUDE from input paths 371s -o OUTPUT, --output=OUTPUT 371s write to OUTPUT in idml format 371s -t TEMPLATE, --template=TEMPLATE 371s read from TEMPLATE in idml format 371s -S, --timestamp skip conversion if the output file has newer timestamp 371s ========= SMOKE TEST: /usr/bin/po2ini =========== 371s Usage: po2ini [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 371s 371s Convert Gettext PO localization files to .ini files. See: 371s http://docs.translatehouse.org/projects/translate- 371s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 371s 371s Options: 371s --version show program's version number and exit 371s -h, --help show this help message and exit 371s --manpage output a manpage based on the help 371s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 371s --errorlevel=ERRORLEVEL 371s show errorlevel as: none, message, exception, 371s traceback 371s -i INPUT, --input=INPUT 371s read from INPUT in po, pot formats 371s -x EXCLUDE, --exclude=EXCLUDE 371s exclude names matching EXCLUDE from input paths 371s -o OUTPUT, --output=OUTPUT 371s write to OUTPUT in ini, isl formats 371s -t TEMPLATE, --template=TEMPLATE 371s read from TEMPLATE in ini, isl formats 371s -S, --timestamp skip conversion if the output file has newer timestamp 371s --threshold=PERCENT only convert files where the translation completion is 371s above PERCENT 371s --fuzzy use translations marked fuzzy 371s --nofuzzy don't use translations marked fuzzy (default) 371s ========= SMOKE TEST: /usr/bin/po2json =========== 371s Usage: po2json [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 371s 371s Convert Gettext PO localization files to JSON files. See: 371s http://docs.translatehouse.org/projects/translate- 371s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 371s 371s Options: 371s --version show program's version number and exit 371s -h, --help show this help message and exit 371s --manpage output a manpage based on the help 371s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 371s --errorlevel=ERRORLEVEL 371s show errorlevel as: none, message, exception, 371s traceback 371s -i INPUT, --input=INPUT 371s read from INPUT in po, pot formats 371s -x EXCLUDE, --exclude=EXCLUDE 371s exclude names matching EXCLUDE from input paths 371s -o OUTPUT, --output=OUTPUT 371s write to OUTPUT in json format 371s -t TEMPLATE, --template=TEMPLATE 371s read from TEMPLATE in json format 371s -S, --timestamp skip conversion if the output file has newer timestamp 371s --threshold=PERCENT only convert files where the translation completion is 371s above PERCENT 371s --fuzzy use translations marked fuzzy 371s --nofuzzy don't use translations marked fuzzy (default) 371s --removeuntranslated remove untranslated strings from output 371s ========= SMOKE TEST: /usr/bin/po2md =========== 372s Usage: po2md [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 372s 372s Translate Markdown files using Gettext PO localization files. See: 372s http://docs.translatehouse.org/projects/translate- 372s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 372s 372s Options: 372s --version show program's version number and exit 372s -h, --help show this help message and exit 372s --manpage output a manpage based on the help 372s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 372s --errorlevel=ERRORLEVEL 372s show errorlevel as: none, message, exception, 372s traceback 372s -i INPUT, --input=INPUT 372s read from INPUT in po, pot formats 372s -x EXCLUDE, --exclude=EXCLUDE 372s exclude names matching EXCLUDE from input paths 372s -o OUTPUT, --output=OUTPUT 372s write to OUTPUT in markdown, md, text, txt formats 372s -t TEMPLATE, --template=TEMPLATE 372s read from TEMPLATE in markdown, md, text, txt formats 372s -S, --timestamp skip conversion if the output file has newer timestamp 372s -m MAXLENGTH, --maxlinelength=MAXLENGTH 372s reflow (word wrap) the output to the given maximum 372s line length. set to 0 to disable 372s --threshold=PERCENT only convert files where the translation completion is 372s above PERCENT 372s --fuzzy use translations marked fuzzy 372s --nofuzzy don't use translations marked fuzzy (default) 372s ========= SMOKE TEST: /usr/bin/po2moz =========== 372s Usage: po2moz [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 372s 372s Convert Gettext PO localization files to Mozilla .dtd and .properties files. 372s See: http://docs.translatehouse.org/projects/translate- 372s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 372s 372s Options: 372s --version show program's version number and exit 372s -h, --help show this help message and exit 372s --manpage output a manpage based on the help 372s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 372s --errorlevel=ERRORLEVEL 372s show errorlevel as: none, message, exception, 372s traceback 372s -i INPUT, --input=INPUT 372s read from INPUT in *, dtd.po, dtd.pot, inc.po, 372s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 372s lang.pot, manifest, properties.po, properties.pot, rdf 372s formats 372s -x EXCLUDE, --exclude=EXCLUDE 372s exclude names matching EXCLUDE from input paths 372s -o OUTPUT, --output=OUTPUT 372s write to OUTPUT in *, dtd, inc, ini, it, js, lang, 372s manifest, properties, rdf formats 372s -t TEMPLATE, --template=TEMPLATE 372s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 372s manifest, properties, rdf formats 372s -S, --timestamp skip conversion if the output file has newer timestamp 372s -l LOCALE, --locale=LOCALE 372s set output locale (required as this sets the directory 372s names) 372s --threshold=PERCENT only convert files where the translation completion is 372s above PERCENT 372s --fuzzy use translations marked fuzzy 372s --nofuzzy don't use translations marked fuzzy (default) 372s --removeuntranslated remove untranslated strings from output 372s ========= SMOKE TEST: /usr/bin/po2mozlang =========== 372s Usage: po2mozlang [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 372s 372s Convert Gettext PO localization files to Mozilla .lang files. 372s 372s Options: 372s --version show program's version number and exit 372s -h, --help show this help message and exit 372s --manpage output a manpage based on the help 372s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 372s --errorlevel=ERRORLEVEL 372s show errorlevel as: none, message, exception, 372s traceback 372s -i INPUT, --input=INPUT 372s read from INPUT in po, pot formats 372s -x EXCLUDE, --exclude=EXCLUDE 372s exclude names matching EXCLUDE from input paths 372s -o OUTPUT, --output=OUTPUT 372s write to OUTPUT in lang format 372s -t TEMPLATE, --template=TEMPLATE 372s read from TEMPLATE in lang format 372s -S, --timestamp skip conversion if the output file has newer timestamp 372s --mark-active mark the file as active 372s --threshold=PERCENT only convert files where the translation completion is 372s above PERCENT 372s --fuzzy use translations marked fuzzy 372s --nofuzzy don't use translations marked fuzzy (default) 372s ========= SMOKE TEST: /usr/bin/po2oo =========== 373s Usage: po2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 373s 373s Convert Gettext PO localization files to an OpenOffice.org (SDF) localization 373s file. See: http://docs.translatehouse.org/projects/translate- 373s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 373s 373s Options: 373s --version show program's version number and exit 373s -h, --help show this help message and exit 373s --manpage output a manpage based on the help 373s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 373s --errorlevel=ERRORLEVEL 373s show errorlevel as: none, message, exception, 373s traceback 373s -i INPUT, --input=INPUT 373s read from INPUT in po, pot, xlf, xliff formats 373s -x EXCLUDE, --exclude=EXCLUDE 373s exclude names matching EXCLUDE from input paths 373s -o OUTPUT, --output=OUTPUT 373s write to OUTPUT in oo, sdf formats 373s -t TEMPLATE, --template=TEMPLATE 373s read from TEMPLATE in oo, sdf formats 373s -S, --timestamp skip conversion if the output file has newer timestamp 373s -l LANG, --language=LANG 373s set target language code (e.g. af-ZA) [required] 373s --source-language=LANG 373s set source language code (default en-US) 373s -T, --keeptimestamp don't change the timestamps of the strings 373s --nonrecursiveoutput don't treat the output oo as a recursive store 373s --nonrecursivetemplate 373s don't treat the template oo as a recursive store 373s --skipsource don't output the source language, but fallback to it 373s where needed 373s --filteraction=ACTION 373s action on pofilter failure: none (default), warn, 373s exclude-serious, exclude-all 373s --threshold=PERCENT only convert files where the translation completion is 373s above PERCENT 373s --fuzzy use translations marked fuzzy 373s --nofuzzy don't use translations marked fuzzy (default) 373s --multifile=MULTIFILESTYLE 373s how to split po/pot files (single, toplevel or 373s onefile) 373s ========= SMOKE TEST: /usr/bin/po2php =========== 373s Usage: po2php [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 373s 373s Convert Gettext PO localization files to PHP localization files. See: 373s http://docs.translatehouse.org/projects/translate- 373s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 373s 373s Options: 373s --version show program's version number and exit 373s -h, --help show this help message and exit 373s --manpage output a manpage based on the help 373s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 373s --errorlevel=ERRORLEVEL 373s show errorlevel as: none, message, exception, 373s traceback 373s -i INPUT, --input=INPUT 373s read from INPUT in po, pot formats 373s -x EXCLUDE, --exclude=EXCLUDE 373s exclude names matching EXCLUDE from input paths 373s -o OUTPUT, --output=OUTPUT 373s write to OUTPUT in html, php formats 373s -t TEMPLATE, --template=TEMPLATE 373s read from TEMPLATE in html, php formats 373s -S, --timestamp skip conversion if the output file has newer timestamp 373s --threshold=PERCENT only convert files where the translation completion is 373s above PERCENT 373s --fuzzy use translations marked fuzzy 373s --nofuzzy don't use translations marked fuzzy (default) 373s ========= SMOKE TEST: /usr/bin/po2prop =========== 373s Usage: po2prop [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 373s 373s Convert Gettext PO localization files to Java/Mozilla .properties files. 373s See: http://docs.translatehouse.org/projects/translate- 373s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 373s 373s Options: 373s --version show program's version number and exit 373s -h, --help show this help message and exit 373s --manpage output a manpage based on the help 373s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 373s --errorlevel=ERRORLEVEL 373s show errorlevel as: none, message, exception, 373s traceback 373s -i INPUT, --input=INPUT 373s read from INPUT in po, pot formats 373s -x EXCLUDE, --exclude=EXCLUDE 373s exclude names matching EXCLUDE from input paths 373s -o OUTPUT, --output=OUTPUT 373s write to OUTPUT in lang, properties, strings formats 373s -t TEMPLATE, --template=TEMPLATE 373s read from TEMPLATE in lang, properties, strings 373s formats 373s -S, --timestamp skip conversion if the output file has newer timestamp 373s --personality=TYPE override the input file format: java, java-utf8, java- 373s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 373s strings, strings-utf8, joomla (for .properties files, 373s default: java) 373s --encoding=ENCODING override the encoding set by the personality 373s --threshold=PERCENT only convert files where the translation completion is 373s above PERCENT 373s --fuzzy use translations marked fuzzy 373s --nofuzzy don't use translations marked fuzzy (default) 373s --removeuntranslated remove untranslated strings from output 373s ========= SMOKE TEST: /usr/bin/po2rc =========== 373s Usage: po2rc [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 373s 373s Convert Gettext PO localization files back to Windows Resource (.rc) files. 373s See: http://docs.translatehouse.org/projects/translate- 373s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 373s 373s Options: 373s --version show program's version number and exit 373s -h, --help show this help message and exit 373s --manpage output a manpage based on the help 373s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 373s --errorlevel=ERRORLEVEL 373s show errorlevel as: none, message, exception, 373s traceback 373s -i INPUT, --input=INPUT 373s read from INPUT in po, pot formats 373s -x EXCLUDE, --exclude=EXCLUDE 373s exclude names matching EXCLUDE from input paths 373s -o OUTPUT, --output=OUTPUT 373s write to OUTPUT in rc format 373s -t TEMPLATE, --template=TEMPLATE 373s read from TEMPLATE in rc format 373s -S, --timestamp skip conversion if the output file has newer timestamp 373s --charset=CHARSET charset to use to decode the RC files (default: utf-8) 373s -l LANG, --lang=LANG LANG entry 373s --sublang=SUBLANG SUBLANG entry (default: SUBLANG_DEFAULT) 373s --threshold=PERCENT only convert files where the translation completion is 373s above PERCENT 373s --fuzzy use translations marked fuzzy 373s --nofuzzy don't use translations marked fuzzy (default) 373s ========= SMOKE TEST: /usr/bin/po2resx =========== 373s Usage: po2resx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 373s 373s Convert Gettext PO localisation files to .Net Resource (.resx) files. See: 373s http://docs.translatehouse.org/projects/translate- 373s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 373s 373s Options: 373s --version show program's version number and exit 373s -h, --help show this help message and exit 373s --manpage output a manpage based on the help 373s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 373s --errorlevel=ERRORLEVEL 373s show errorlevel as: none, message, exception, 373s traceback 373s -i INPUT, --input=INPUT 373s read from INPUT in po, pot formats 373s -x EXCLUDE, --exclude=EXCLUDE 373s exclude names matching EXCLUDE from input paths 373s -o OUTPUT, --output=OUTPUT 373s write to OUTPUT in resx format 373s -t TEMPLATE, --template=TEMPLATE 373s read from TEMPLATE in resx format 373s -S, --timestamp skip conversion if the output file has newer timestamp 373s --fuzzy use translations marked fuzzy 373s --nofuzzy don't use translations marked fuzzy (default) 373s ========= SMOKE TEST: /usr/bin/po2sub =========== 374s Usage: po2sub [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 374s 374s Convert Gettext PO localization files to subtitle files. See: 374s http://docs.translatehouse.org/projects/translate- 374s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 374s 374s Options: 374s --version show program's version number and exit 374s -h, --help show this help message and exit 374s --manpage output a manpage based on the help 374s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 374s --errorlevel=ERRORLEVEL 374s show errorlevel as: none, message, exception, 374s traceback 374s -i INPUT, --input=INPUT 374s read from INPUT in po, pot formats 374s -x EXCLUDE, --exclude=EXCLUDE 374s exclude names matching EXCLUDE from input paths 374s -o OUTPUT, --output=OUTPUT 374s write to OUTPUT in ass, srt, ssa, sub formats 374s -t TEMPLATE, --template=TEMPLATE 374s read from TEMPLATE in ass, srt, ssa, sub formats 374s -S, --timestamp skip conversion if the output file has newer timestamp 374s --threshold=PERCENT only convert files where the translation completion is 374s above PERCENT 374s --fuzzy use translations marked fuzzy 374s --nofuzzy don't use translations marked fuzzy (default) 374s ========= SMOKE TEST: /usr/bin/po2symb =========== 374s Usage: po2symb [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 374s 374s Convert Gettext PO localization files to Symbian translation files. See: 374s http://docs.translatehouse.org/projects/translate- 374s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 374s 374s Options: 374s --version show program's version number and exit 374s -h, --help show this help message and exit 374s --manpage output a manpage based on the help 374s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 374s --errorlevel=ERRORLEVEL 374s show errorlevel as: none, message, exception, 374s traceback 374s -i INPUT, --input=INPUT 374s read from INPUT in po, pot formats 374s -x EXCLUDE, --exclude=EXCLUDE 374s exclude names matching EXCLUDE from input paths 374s -o OUTPUT, --output=OUTPUT 374s write to OUTPUT in r0 format 374s -t TEMPLATE, --template=TEMPLATE 374s read from TEMPLATE in 374s -S, --timestamp skip conversion if the output file has newer timestamp 374s --duplicates=DUPLICATESTYLE 374s what to do with duplicate strings (identical source 374s text): merge, msgctxt (default: 'msgctxt') 374s ========= SMOKE TEST: /usr/bin/po2tiki =========== 374s Usage: po2tiki [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 374s 374s Convert Gettext PO files to TikiWiki's language.php files. See: 374s http://docs.translatehouse.org/projects/translate- 374s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 374s 374s Options: 374s --version show program's version number and exit 374s -h, --help show this help message and exit 374s --manpage output a manpage based on the help 374s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 374s --errorlevel=ERRORLEVEL 374s show errorlevel as: none, message, exception, 374s traceback 374s -i INPUT, --input=INPUT 374s read from INPUT in po, pot formats 374s -x EXCLUDE, --exclude=EXCLUDE 374s exclude names matching EXCLUDE from input paths 374s -o OUTPUT, --output=OUTPUT 374s write to OUTPUT in tiki format 374s -S, --timestamp skip conversion if the output file has newer timestamp 374s ========= SMOKE TEST: /usr/bin/po2tmx =========== 374s Usage: po2tmx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 374s 374s Convert Gettext PO localization files to a TMX (Translation Memory eXchange) 374s file. See: http://docs.translatehouse.org/projects/translate- 374s toolkit/en/latest/commands/po2tmx.html for examples and usage instructions. 374s 374s Options: 374s --version show program's version number and exit 374s -h, --help show this help message and exit 374s --manpage output a manpage based on the help 374s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 374s --errorlevel=ERRORLEVEL 374s show errorlevel as: none, message, exception, 374s traceback 374s -i INPUT, --input=INPUT 374s read from INPUT in po, pot formats 374s -x EXCLUDE, --exclude=EXCLUDE 374s exclude names matching EXCLUDE from input paths 374s -o OUTPUT, --output=OUTPUT 374s write to OUTPUT in tmx format 374s -S, --timestamp skip conversion if the output file has newer timestamp 374s -l LANG, --language=LANG 374s set target language code (e.g. af-ZA) [required] 374s --source-language=LANG 374s set source language code (default: en) 374s --comments=COMMENT set default comment import: none, source, type or 374s others (default: none) 374s ========= SMOKE TEST: /usr/bin/po2ts =========== 374s Usage: po2ts [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 374s 374s Convert Gettext PO localization files to Qt Linguist (.ts) files. See: 374s http://docs.translatehouse.org/projects/translate- 374s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 374s 374s Options: 374s --version show program's version number and exit 374s -h, --help show this help message and exit 374s --manpage output a manpage based on the help 374s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 374s --errorlevel=ERRORLEVEL 374s show errorlevel as: none, message, exception, 374s traceback 374s -i INPUT, --input=INPUT 374s read from INPUT in po, pot formats 374s -x EXCLUDE, --exclude=EXCLUDE 374s exclude names matching EXCLUDE from input paths 374s -o OUTPUT, --output=OUTPUT 374s write to OUTPUT in ts format 374s -t TEMPLATE, --template=TEMPLATE 374s read from TEMPLATE in ts format 374s -S, --timestamp skip conversion if the output file has newer timestamp 374s -c CONTEXT, --context=CONTEXT 374s use supplied context instead of the one in the .po 374s file comment 374s ========= SMOKE TEST: /usr/bin/po2txt =========== 374s Usage: po2txt [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 374s 374s Convert Gettext PO localization files to plain text (.txt) files. See: 374s http://docs.translatehouse.org/projects/translate- 374s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 374s 374s Options: 374s --version show program's version number and exit 374s -h, --help show this help message and exit 374s --manpage output a manpage based on the help 374s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 374s --errorlevel=ERRORLEVEL 374s show errorlevel as: none, message, exception, 374s traceback 374s -i INPUT, --input=INPUT 374s read from INPUT in po, pot, xlf, xliff formats 374s -x EXCLUDE, --exclude=EXCLUDE 374s exclude names matching EXCLUDE from input paths 374s -o OUTPUT, --output=OUTPUT 374s write to OUTPUT in txt format 374s -t TEMPLATE, --template=TEMPLATE 374s read from TEMPLATE in txt format 374s -S, --timestamp skip conversion if the output file has newer timestamp 374s --encoding=ENCODING The encoding of the template file (default: UTF-8) 374s -w WRAP, --wrap=WRAP set number of columns to wrap text at 374s --threshold=PERCENT only convert files where the translation completion is 374s above PERCENT 374s --fuzzy use translations marked fuzzy 374s --nofuzzy don't use translations marked fuzzy (default) 374s ========= SMOKE TEST: /usr/bin/po2web2py =========== 374s Usage: po2web2py [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 374s 374s Convert GNU/gettext PO files to web2py translation dictionaries (.py). See: 374s http://docs.translatehouse.org/projects/translate- 374s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 374s 374s Options: 374s --version show program's version number and exit 374s -h, --help show this help message and exit 374s --manpage output a manpage based on the help 374s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 374s --errorlevel=ERRORLEVEL 374s show errorlevel as: none, message, exception, 374s traceback 374s -i INPUT, --input=INPUT 374s read from INPUT in po, pot formats 374s -x EXCLUDE, --exclude=EXCLUDE 374s exclude names matching EXCLUDE from input paths 374s -o OUTPUT, --output=OUTPUT 374s write to OUTPUT in py format 374s -S, --timestamp skip conversion if the output file has newer timestamp 374s --threshold=PERCENT only convert files where the translation completion is 374s above PERCENT 374s --fuzzy use translations marked fuzzy 374s --nofuzzy don't use translations marked fuzzy (default) 374s ========= SMOKE TEST: /usr/bin/po2wordfast =========== 374s Usage: po2wordfast [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 374s 374s Convert Gettext PO localization files to a Wordfast translation memory file. 374s See: http://docs.translatehouse.org/projects/translate- 374s toolkit/en/latest/commands/po2wordfast.html for examples and usage 374s instructions. 374s 374s Options: 374s --version show program's version number and exit 374s -h, --help show this help message and exit 374s --manpage output a manpage based on the help 374s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 374s --errorlevel=ERRORLEVEL 374s show errorlevel as: none, message, exception, 374s traceback 374s -i INPUT, --input=INPUT 374s read from INPUT in po, pot formats 374s -x EXCLUDE, --exclude=EXCLUDE 374s exclude names matching EXCLUDE from input paths 374s -o OUTPUT, --output=OUTPUT 374s write to OUTPUT in txt format 374s -S, --timestamp skip conversion if the output file has newer timestamp 374s -l LANG, --language=LANG 374s set target language code (e.g. af-ZA) [required] 374s --source-language=LANG 374s set source language code (default: en) 375s ========= SMOKE TEST: /usr/bin/po2xliff =========== 375s Usage: po2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 375s 375s Convert Gettext PO localization files to XLIFF localization files. See: 375s http://docs.translatehouse.org/projects/translate- 375s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 375s 375s Options: 375s --version show program's version number and exit 375s -h, --help show this help message and exit 375s --manpage output a manpage based on the help 375s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 375s --errorlevel=ERRORLEVEL 375s show errorlevel as: none, message, exception, 375s traceback 375s -i INPUT, --input=INPUT 375s read from INPUT in po, pot formats 375s -x EXCLUDE, --exclude=EXCLUDE 375s exclude names matching EXCLUDE from input paths 375s -o OUTPUT, --output=OUTPUT 375s write to OUTPUT in xlf, xliff formats 375s -t TEMPLATE, --template=TEMPLATE 375s read from TEMPLATE in xlf, xliff formats 375s -S, --timestamp skip conversion if the output file has newer timestamp 375s ========= SMOKE TEST: /usr/bin/po2yaml =========== 375s Usage: po2yaml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 375s 375s Convert Gettext PO localization files to YAML files. See: 375s http://docs.translatehouse.org/projects/translate- 375s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 375s 375s Options: 375s --version show program's version number and exit 375s -h, --help show this help message and exit 375s --manpage output a manpage based on the help 375s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 375s --errorlevel=ERRORLEVEL 375s show errorlevel as: none, message, exception, 375s traceback 375s -i INPUT, --input=INPUT 375s read from INPUT in po, pot formats 375s -x EXCLUDE, --exclude=EXCLUDE 375s exclude names matching EXCLUDE from input paths 375s -o OUTPUT, --output=OUTPUT 375s write to OUTPUT in yaml, yml formats 375s -t TEMPLATE, --template=TEMPLATE 375s read from TEMPLATE in yaml, yml formats 375s -S, --timestamp skip conversion if the output file has newer timestamp 375s --threshold=PERCENT only convert files where the translation completion is 375s above PERCENT 375s --fuzzy use translations marked fuzzy 375s --nofuzzy don't use translations marked fuzzy (default) 375s ========= SMOKE TEST: /usr/bin/poclean =========== 375s Usage: poclean [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 375s 375s Produces a clean file from an unclean file (Trados/Wordfast) by stripping out 375s the tw4win indicators. This does not convert an RTF file to PO/XLIFF, but 375s produces the target file with only the target text in from a text version of 375s the RTF. 375s 375s Options: 375s --version show program's version number and exit 375s -h, --help show this help message and exit 375s --manpage output a manpage based on the help 375s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 375s --errorlevel=ERRORLEVEL 375s show errorlevel as: none, message, exception, 375s traceback 375s -i INPUT, --input=INPUT 375s read from INPUT in po, pot, xlf, xliff formats 375s -x EXCLUDE, --exclude=EXCLUDE 375s exclude names matching EXCLUDE from input paths 375s -o OUTPUT, --output=OUTPUT 375s write to OUTPUT in po, pot, xlf, xliff formats 375s -S, --timestamp skip conversion if the output file has newer timestamp 375s ========= SMOKE TEST: /usr/bin/pocompendium =========== 375s Usage: pocompendium [options] output.po <-d directory(s)|file(s)> 375s The first parameter is the output file, standard output if the output file is '-'. 375s Any number of directories may be specified for input files. 375s Options: 375s --invert|v Creates an inverse compendium with msgid and msgstr swapped 375s --errors|e Only ouput msg bundles that have errors 375s --correct|c Only ouput msg bundles that are correctly translated 375s --ignore-case|i Drops all strings to lowercase 375s --strip-accel-tilde|-st Strip all tilde (~) accelerator characters 375s --strip-accel-amp|-sa Strip all ampersand (&) accelerator characters 375s --strip-accel-under|-su Strip all underscore (_) accelerator characters 375s ========= SMOKE TEST: /usr/bin/pocompile =========== 375s Usage: pocompile [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 375s 375s Compile XLIFF and Gettext PO localization files into Gettext MO (Machine 375s Object) files. See: http://docs.translatehouse.org/projects/translate- 375s toolkit/en/latest/commands/pocompile.html for examples and usage instructions. 375s 375s Options: 375s --version show program's version number and exit 375s -h, --help show this help message and exit 375s --manpage output a manpage based on the help 375s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 375s --errorlevel=ERRORLEVEL 375s show errorlevel as: none, message, exception, 375s traceback 375s -i INPUT, --input=INPUT 375s read from INPUT in po, pot, xlf, xliff formats 375s -x EXCLUDE, --exclude=EXCLUDE 375s exclude names matching EXCLUDE from input paths 375s -o OUTPUT, --output=OUTPUT 375s write to OUTPUT in mo format 375s -S, --timestamp skip conversion if the output file has newer timestamp 375s --fuzzy use translations marked fuzzy 375s --nofuzzy don't use translations marked fuzzy (default) 375s ========= SMOKE TEST: /usr/bin/poconflicts =========== 375s 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] 375s input directory is searched for PO files, PO files with name of conflicting string are output in output directory 375s 375s Conflict finder for Gettext PO localization files. See: 375s http://docs.translatehouse.org/projects/translate- 375s toolkit/en/latest/commands/poconflicts.html for examples and usage 375s instructions. 375s 375s Options: 375s --version show program's version number and exit 375s -h, --help show this help message and exit 375s --manpage output a manpage based on the help 375s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 375s --errorlevel=ERRORLEVEL 375s show errorlevel as: none, message, exception, 375s traceback 375s -i INPUT, --input=INPUT 375s read from INPUT in po format 375s -x EXCLUDE, --exclude=EXCLUDE 375s exclude names matching EXCLUDE from input paths 375s -o OUTPUT, --output=OUTPUT 375s write to OUTPUT in po format 375s -I, --ignore-case ignore case distinctions 375s -v, --invert invert the conflicts thus extracting conflicting 375s destination words 375s --accelerator=ACCELERATORS 375s ignores the given accelerator characters when matching 375s ========= SMOKE TEST: /usr/bin/pocount =========== 375s usage: pocount [-h] [--incomplete] 375s [--full | --csv | --short | --short-strings | --short-words] 375s [--no-color] 375s files [files ...] 375s 375s positional arguments: 375s files 375s 375s options: 375s -h, --help show this help message and exit 375s --incomplete skip 100% translated files. 375s 375s Output format: 375s --full (default) statistics in full, verbose format 375s --csv statistics in CSV format 375s --short same as --short-strings 375s --short-strings statistics of strings in short format - one line per file 375s --short-words statistics of words in short format - one line per file 375s --no-color show output without color 375s ========= SMOKE TEST: /usr/bin/podebug =========== 376s Usage: podebug [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 376s 376s Insert debug messages into XLIFF and Gettext PO localization files. See: 376s http://docs.translatehouse.org/projects/translate- 376s toolkit/en/latest/commands/podebug.html for examples and usage instructions. 376s 376s Options: 376s --version show program's version number and exit 376s -h, --help show this help message and exit 376s --manpage output a manpage based on the help 376s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 376s --errorlevel=ERRORLEVEL 376s show errorlevel as: none, message, exception, 376s traceback 376s -i INPUT, --input=INPUT 376s read from INPUT in po, pot, pot, tmx, xlf, xliff 376s formats 376s -x EXCLUDE, --exclude=EXCLUDE 376s exclude names matching EXCLUDE from input paths 376s -o OUTPUT, --output=OUTPUT 376s write to OUTPUT in po, pot, tmx, xlf, xliff formats 376s -S, --timestamp skip conversion if the output file has newer timestamp 376s -f FORMAT, --format=FORMAT 376s specify format string 376s --rewrite=STYLE the translation rewrite style: blank, bracket, chef, 376s classified, en, flipped, unicode, xxx 376s --ignore=APPLICATION apply tagging ignore rules for the given application: 376s gtk, kde, libreoffice, mozilla, openoffice 376s --preserveplaceholders 376s attempt to exclude characters that are part of 376s placeholders when performing character-level rewrites 376s so that consuming applications can still use the 376s placeholders to generate final output 376s ========= SMOKE TEST: /usr/bin/pofilter =========== 376s Usage: pofilter [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 376s 376s Perform quality checks on Gettext PO, XLIFF and TMX localization files. 376s Snippet files are created whenever a test fails. These can be examined, 376s corrected and merged back into the originals using pomerge. See: 376s http://docs.translatehouse.org/projects/translate- 376s toolkit/en/latest/commands/pofilter.html for examples and usage instructions 376s and http://docs.translatehouse.org/projects/translate- 376s toolkit/en/latest/commands/pofilter_tests.html for full descriptions of all 376s tests. 376s 376s Options: 376s --version show program's version number and exit 376s -h, --help show this help message and exit 376s --manpage output a manpage based on the help 376s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 376s --errorlevel=ERRORLEVEL 376s show errorlevel as: none, message, exception, 376s traceback 376s -i INPUT, --input=INPUT 376s read from INPUT in po, pot, tmx, xlf, xliff formats 376s -x EXCLUDE, --exclude=EXCLUDE 376s exclude names matching EXCLUDE from input paths 376s -o OUTPUT, --output=OUTPUT 376s write to OUTPUT in po, pot, tmx, xlf, xliff formats 376s -l, --listfilters list filters available 376s --review include units marked for review (default) 376s --noreview exclude units marked for review 376s --fuzzy include units marked fuzzy (default) 376s --nofuzzy exclude units marked fuzzy 376s --nonotes don't add notes about the errors 376s --autocorrect output automatic corrections where possible rather 376s than describing issues 376s --language=LANG set target language code (e.g. af-ZA) [required for 376s spell check and recommended in general] 376s --openoffice use the standard checks for OpenOffice translations 376s --libreoffice use the standard checks for LibreOffice translations 376s --mozilla use the standard checks for Mozilla translations 376s --drupal use the standard checks for Drupal translations 376s --gnome use the standard checks for Gnome translations 376s --kde use the standard checks for KDE translations 376s --wx use the standard checks for wxWidgets translations 376s --excludefilter=FILTER 376s don't use FILTER when filtering 376s -t FILTER, --test=FILTER 376s only use test FILTERs specified with this option when 376s filtering 376s --notranslatefile=FILE 376s read list of untranslatable words from FILE (must not 376s be translated) 376s --musttranslatefile=FILE 376s read list of translatable words from FILE (must be 376s translated) 376s --validcharsfile=FILE 376s read list of all valid characters from FILE (must be 376s in UTF-8) 376s ========= SMOKE TEST: /usr/bin/pogrep =========== 376s 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] 376s 376s Grep XLIFF, Gettext PO and TMX localization files. Matches are output to 376s snippet files of the same type which can then be reviewed and later merged 376s using :doc:`pomerge `. See: 376s http://docs.translatehouse.org/projects/translate- 376s toolkit/en/latest/commands/pogrep.html for examples and usage instructions. 376s 376s Options: 376s --version show program's version number and exit 376s -h, --help show this help message and exit 376s --manpage output a manpage based on the help 376s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 376s --errorlevel=ERRORLEVEL 376s show errorlevel as: none, message, exception, 376s traceback 376s -i INPUT, --input=INPUT 376s read from INPUT in gmo, mo, po, pot, tmx, xlf, xlff, 376s xliff formats 376s -x EXCLUDE, --exclude=EXCLUDE 376s exclude names matching EXCLUDE from input paths 376s -o OUTPUT, --output=OUTPUT 376s write to OUTPUT in gmo, mo, po, pot, tmx, xlf, xlff, 376s xliff formats 376s --search=SEARCHPARTS searches the given parts (source, target, notes and 376s locations) 376s -I, --ignore-case ignore case distinctions 376s -e, --regexp use regular expression matching 376s -v, --invert-match select non-matching lines 376s --accelerator=ACCELERATOR 376s ignores the given accelerator when matching 376s -k, --keep-translations 376s always extract units with translations 376s ========= SMOKE TEST: /usr/bin/pomerge =========== 376s Usage: pomerge [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 376s 376s Merges XLIFF and Gettext PO localization files. Snippet file produced by 376s e.g. :doc:`pogrep ` and updated by a translator can be 376s merged back into the original files. See: 376s http://docs.translatehouse.org/projects/translate- 376s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 376s 376s Options: 376s --version show program's version number and exit 376s -h, --help show this help message and exit 376s --manpage output a manpage based on the help 376s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 376s --errorlevel=ERRORLEVEL 376s show errorlevel as: none, message, exception, 376s traceback 376s -i INPUT, --input=INPUT 376s read from INPUT in po, pot, pot, xlf, xliff formats 376s -x EXCLUDE, --exclude=EXCLUDE 376s exclude names matching EXCLUDE from input paths 376s -o OUTPUT, --output=OUTPUT 376s write to OUTPUT in po, pot, pot, xlf, xliff formats 376s -t TEMPLATE, --template=TEMPLATE 376s read from TEMPLATE in po, pot, pot, xlf, xliff formats 376s -S, --timestamp skip conversion if the output file has newer timestamp 376s --mergeblanks=MERGEBLANKS 376s whether to overwrite existing translations with blank 376s translations (yes/no). Default is yes. 376s --mergefuzzy=MERGEFUZZY 376s whether to consider fuzzy translations from input 376s (yes/no). Default is yes. 376s --mergecomments=MERGECOMMENTS 376s whether to merge comments as well as translations 376s (yes/no). Default is yes. 376s ========= SMOKE TEST: /usr/bin/pomigrate2 =========== 376s Usage pomigrate2 [options] 376s 376s Options: 376s -F|--use-fuzzy-matching - use fuzzy algorithms when merging to attempt to match strings 376s -C|--use-compendium - create and use a compendium built from the migrating files 376s -C|--use-compendium=some-compendium.po 376s - use an external compendium during the migration 376s --no-wrap - do not wrap long lines 376s --locale=lang - set locale for newly born files 376s -q|--quiet - suppress most output 376s -p|--pot2po - use pot2po instead of msgmerge to migrate 376s ========= SMOKE TEST: /usr/bin/popuretext =========== 376s Usage: popuretext ( -P pot-dir | po-dir ) file.txt [accelerator] 376s ========= SMOKE TEST: /usr/bin/poreencode =========== 376s Usage: poreencode 376s eg: poreencode UTF-8 af/ 376s ========= SMOKE TEST: /usr/bin/porestructure =========== 376s Usage: porestructure [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 376s input directory is searched for PO files with (poconflicts) comments, all entries are written to files in a directory structure for pomerge 376s 376s Restructure Gettxt PO files produced by :doc:`poconflicts 376s ` into the original directory tree for merging using 376s :doc:`pomerge `. See: 376s http://docs.translatehouse.org/projects/translate- 376s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 376s 376s Options: 376s --version show program's version number and exit 376s -h, --help show this help message and exit 376s --manpage output a manpage based on the help 376s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 376s --errorlevel=ERRORLEVEL 376s show errorlevel as: none, message, exception, 376s traceback 376s -i INPUT, --input=INPUT 376s read from INPUT in po format 376s -x EXCLUDE, --exclude=EXCLUDE 376s exclude names matching EXCLUDE from input paths 376s -o OUTPUT, --output=OUTPUT 376s write to OUTPUT in po format 376s ========= SMOKE TEST: /usr/bin/posegment =========== 376s Usage: posegment [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 376s 376s Segment Gettext PO, XLIFF and TMX localization files at the sentence level. 376s See: http://docs.translatehouse.org/projects/translate- 376s toolkit/en/latest/commands/posegment.html for examples and usage instructions. 376s 376s Options: 376s --version show program's version number and exit 376s -h, --help show this help message and exit 376s --manpage output a manpage based on the help 376s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 376s --errorlevel=ERRORLEVEL 376s show errorlevel as: none, message, exception, 376s traceback 376s -i INPUT, --input=INPUT 376s read from INPUT in po, pot, tmx, xlf, xliff formats 376s -x EXCLUDE, --exclude=EXCLUDE 376s exclude names matching EXCLUDE from input paths 376s -o OUTPUT, --output=OUTPUT 376s write to OUTPUT in po, pot, tmx, xlf, xliff formats 376s -S, --timestamp skip conversion if the output file has newer timestamp 376s -P, --pot output PO Templates (.pot) rather than PO files (.po) 376s -l LANG, --language=LANG 376s the target language code 376s --source-language=LANG 376s the source language code (default 'en') 376s --keepspaces Disable automatic stripping of whitespace 376s --only-aligned Removes units where sentence number does not 376s correspond 376s ========= SMOKE TEST: /usr/bin/poswap =========== 376s Usage: poswap [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 376s 376s Builds a new translation file with the target of the input language as source 376s language. .. note:: Ensure that the two po files correspond 100% to the same 376s pot file before using this. To translate Kurdish (ku) through French:: 376s poswap -i fr/ -t ku -o fr-ku To convert the fr-ku files back to en-ku:: 376s poswap --reverse -i fr/ -t fr-ku -o en-ku See: 376s http://docs.translatehouse.org/projects/translate- 376s toolkit/en/latest/commands/poswap.html for examples and usage instructions. 376s 376s Options: 376s --version show program's version number and exit 376s -h, --help show this help message and exit 376s --manpage output a manpage based on the help 376s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 376s --errorlevel=ERRORLEVEL 376s show errorlevel as: none, message, exception, 376s traceback 376s -i INPUT, --input=INPUT 376s read from INPUT in po, pot formats 376s -x EXCLUDE, --exclude=EXCLUDE 376s exclude names matching EXCLUDE from input paths 376s -o OUTPUT, --output=OUTPUT 376s write to OUTPUT in po, pot formats 376s -t TEMPLATE, --template=TEMPLATE 376s read from TEMPLATE in po, pot, pot formats 376s -S, --timestamp skip conversion if the output file has newer timestamp 376s --reverse reverse the process of intermediate language 376s conversion 377s ========= SMOKE TEST: /usr/bin/pot2po =========== 377s 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] 377s 377s Convert template files (like .pot or template .xlf files) to translation 377s files, preserving existing translations. See: 377s http://docs.translatehouse.org/projects/translate- 377s toolkit/en/latest/commands/pot2po.html for examples and usage instructions. 377s 377s Options: 377s --version show program's version number and exit 377s -h, --help show this help message and exit 377s --manpage output a manpage based on the help 377s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 377s --errorlevel=ERRORLEVEL 377s show errorlevel as: none, message, exception, 377s traceback 377s -i INPUT, --input=INPUT 377s read from INPUT in catkeys, lang, pot, ts, xlf, xliff 377s formats 377s -x EXCLUDE, --exclude=EXCLUDE 377s exclude names matching EXCLUDE from input paths 377s -o OUTPUT, --output=OUTPUT 377s write to OUTPUT in catkeys, lang, po, pot, ts, xlf, 377s xliff formats 377s -t TEMPLATE, --template=TEMPLATE 377s read from TEMPLATE in catkeys, lang, po, pot, ts, xlf, 377s xliff formats 377s -S, --timestamp skip conversion if the output file has newer timestamp 377s -P, --pot output PO Templates (.pot) rather than PO files (.po) 377s --tm=TM The file to use as translation memory when fuzzy 377s matching 377s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 377s The minimum similarity for inclusion (default: 75%) 377s --nofuzzymatching Disable fuzzy matching 377s ========= SMOKE TEST: /usr/bin/poterminology =========== 377s 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] 377s input directory is searched for PO files, terminology PO file is output file 377s 377s Create a terminology file by reading a set of .po or .pot files to produce a 377s pootle-terminology.pot. See: 377s http://docs.translatehouse.org/projects/translate- 377s toolkit/en/latest/commands/poterminology.html for examples and usage 377s instructions. 377s 377s Options: 377s --version show program's version number and exit 377s -h, --help show this help message and exit 377s --manpage output a manpage based on the help 377s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 377s --errorlevel=ERRORLEVEL 377s show errorlevel as: none, message, exception, 377s traceback 377s -i INPUT, --input=INPUT 377s read from INPUT in po, pot formats 377s -x EXCLUDE, --exclude=EXCLUDE 377s exclude names matching EXCLUDE from input paths 377s -o OUTPUT, --output=OUTPUT 377s write to OUTPUT in po, pot formats 377s -u UPDATEFILE, --update=UPDATEFILE 377s update terminology in UPDATEFILE 377s -S STOPFILE, --stopword-list=STOPFILE 377s read stopword (term exclusion) list from STOPFILE 377s (default /usr/share/pyshared/translate/share/stoplist- 377s en) 377s -F, --fold-titlecase fold "Title Case" to lowercase (default) 377s -C, --preserve-case preserve all uppercase/lowercase 377s -I, --ignore-case make all terms lowercase 377s --accelerator=ACCELERATORS 377s ignore the given accelerator characters when matching 377s -t LENGTH, --term-words=LENGTH 377s generate terms of up to LENGTH words (default 3) 377s --nonstop-needed=MIN omit terms with less than MIN nonstop words (default 377s 1) 377s --inputs-needed=MIN omit terms appearing in less than MIN input files 377s (default 2, or 1 if only one input file) 377s --fullmsg-needed=MIN omit full message terms appearing in less than MIN 377s different messages (default 1) 377s --substr-needed=MIN omit substring-only terms appearing in less than MIN 377s different messages (default 2) 377s --locs-needed=MIN omit terms appearing in less than MIN different 377s original source files (default 2) 377s --sort=ORDER output sort order(s): frequency, dictionary, length 377s (may repeat option, default is all in above order) 377s --source-language=LANG 377s the source language code (default 'en') 377s -v, --invert invert the source and target languages for terminology 377s ========= SMOKE TEST: /usr/bin/pretranslate =========== 377s Usage: pretranslate [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 377s 377s Fill localization files with suggested translations based on translation 377s memory and existing translations. See: 377s http://docs.translatehouse.org/projects/translate- 377s toolkit/en/latest/commands/pretranslate.html for examples and usage 377s instructions. 377s 377s Options: 377s --version show program's version number and exit 377s -h, --help show this help message and exit 377s --manpage output a manpage based on the help 377s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 377s --errorlevel=ERRORLEVEL 377s show errorlevel as: none, message, exception, 377s traceback 377s -i INPUT, --input=INPUT 377s read from INPUT in po, pot, pot, xlf, xliff formats 377s -x EXCLUDE, --exclude=EXCLUDE 377s exclude names matching EXCLUDE from input paths 377s -o OUTPUT, --output=OUTPUT 377s write to OUTPUT in po, pot, xlf, xliff formats 377s -t TEMPLATE, --template=TEMPLATE 377s read from TEMPLATE in po, pot, xlf, xliff formats 377s -S, --timestamp skip conversion if the output file has newer timestamp 377s --tm=TM The file to use as translation memory when fuzzy 377s matching 377s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 377s The minimum similarity for inclusion (default: 75%) 377s --nofuzzymatching Disable fuzzy matching 377s ========= SMOKE TEST: /usr/bin/prop2po =========== 377s 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] 377s 377s Convert Java/Mozilla .properties files to Gettext PO localization files. 377s See: http://docs.translatehouse.org/projects/translate- 377s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 377s 377s Options: 377s --version show program's version number and exit 377s -h, --help show this help message and exit 377s --manpage output a manpage based on the help 377s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 377s --errorlevel=ERRORLEVEL 377s show errorlevel as: none, message, exception, 377s traceback 377s -i INPUT, --input=INPUT 377s read from INPUT in lang, properties, strings formats 377s -x EXCLUDE, --exclude=EXCLUDE 377s exclude names matching EXCLUDE from input paths 377s -o OUTPUT, --output=OUTPUT 377s write to OUTPUT in po, pot formats 377s -t TEMPLATE, --template=TEMPLATE 377s read from TEMPLATE in lang, properties, strings 377s formats 377s -S, --timestamp skip conversion if the output file has newer timestamp 377s -P, --pot output PO Templates (.pot) rather than PO files (.po) 377s --personality=TYPE override the input file format: java, java-utf8, java- 377s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 377s strings, strings-utf8, joomla (for .properties files, 377s default: java) 377s --encoding=ENCODING override the encoding set by the personality 377s --duplicates=DUPLICATESTYLE 377s what to do with duplicate strings (identical source 377s text): merge, msgctxt (default: 'msgctxt') 377s ========= SMOKE TEST: /usr/bin/pydiff =========== 377s usage: pydiff [-h] [-i] [-U NUM] [-r] [-N] [--unidirectional-new-file] [-s] 377s [-x PAT] [--fromcontains TEXT] [--tocontains TEXT] 377s [--contains TEXT] [-I] [--accelerator ACCELERATORS] 377s fromfile tofile 377s 377s positional arguments: 377s fromfile 377s tofile 377s 377s options: 377s -h, --help show this help message and exit 377s -i, --ignore-case Ignore case differences in file contents. 377s -U NUM, --unified NUM 377s Output NUM (default 3) lines of unified context 377s -r, --recursive Recursively compare any subdirectories found. 377s -N, --new-file Treat absent files as empty. 377s --unidirectional-new-file 377s Treat absent first files as empty. 377s -s, --report-identical-files 377s Report when two files are the same. 377s -x PAT, --exclude PAT 377s Exclude files that match PAT. 377s --fromcontains TEXT Only show changes where fromfile contains TEXT 377s --tocontains TEXT Only show changes where tofile contains TEXT 377s --contains TEXT Only show changes where fromfile or tofile contains 377s TEXT 377s -I, --ignore-case-contains 377s Ignore case differences when matching any of the 377s changes 377s --accelerator ACCELERATORS 377s ignores the given accelerator characters when matching 377s ========= SMOKE TEST: /usr/bin/pypo2phppo =========== 377s Usage: pypo2phppo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 377s 377s Convert Python format .po files to PHP format .po files. 377s 377s Options: 377s --version show program's version number and exit 377s -h, --help show this help message and exit 377s --manpage output a manpage based on the help 377s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 377s --errorlevel=ERRORLEVEL 377s show errorlevel as: none, message, exception, 377s traceback 377s -i INPUT, --input=INPUT 377s read from INPUT in po, pot formats 377s -x EXCLUDE, --exclude=EXCLUDE 377s exclude names matching EXCLUDE from input paths 377s -o OUTPUT, --output=OUTPUT 377s write to OUTPUT in po, pot formats 377s -S, --timestamp skip conversion if the output file has newer timestamp 378s ========= SMOKE TEST: /usr/bin/rc2po =========== 378s 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] 378s 378s Convert Windows RC files to Gettext PO localization files. See: 378s http://docs.translatehouse.org/projects/translate- 378s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 378s 378s Options: 378s --version show program's version number and exit 378s -h, --help show this help message and exit 378s --manpage output a manpage based on the help 378s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 378s --errorlevel=ERRORLEVEL 378s show errorlevel as: none, message, exception, 378s traceback 378s -i INPUT, --input=INPUT 378s read from INPUT in nls, rc formats 378s -x EXCLUDE, --exclude=EXCLUDE 378s exclude names matching EXCLUDE from input paths 378s -o OUTPUT, --output=OUTPUT 378s write to OUTPUT in po, pot formats 378s -t TEMPLATE, --template=TEMPLATE 378s read from TEMPLATE in nls, rc formats 378s -S, --timestamp skip conversion if the output file has newer timestamp 378s -P, --pot output PO Templates (.pot) rather than PO files (.po) 378s --charset=CHARSET charset to use to decode the RC files (autodetection 378s is used by default) 378s -l LANG, --lang=LANG LANG entry (default: None) 378s --sublang=SUBLANG SUBLANG entry (default: None) 378s --duplicates=DUPLICATESTYLE 378s what to do with duplicate strings (identical source 378s text): merge, msgctxt (default: 'msgctxt') 378s ========= SMOKE TEST: /usr/bin/resx2po =========== 378s 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] 378s 378s Convert .Net Resource (.resx) to Gettext PO localisation files. See: 378s http://docs.translatehouse.org/projects/translate- 378s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 378s 378s Options: 378s --version show program's version number and exit 378s -h, --help show this help message and exit 378s --manpage output a manpage based on the help 378s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 378s --errorlevel=ERRORLEVEL 378s show errorlevel as: none, message, exception, 378s traceback 378s -i INPUT, --input=INPUT 378s read from INPUT in resx format 378s -x EXCLUDE, --exclude=EXCLUDE 378s exclude names matching EXCLUDE from input paths 378s -o OUTPUT, --output=OUTPUT 378s write to OUTPUT in po, pot formats 378s -t TEMPLATE, --template=TEMPLATE 378s read from TEMPLATE in resx format 378s -S, --timestamp skip conversion if the output file has newer timestamp 378s -P, --pot output PO Templates (.pot) rather than PO files (.po) 378s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 378s everything) 378s --duplicates=DUPLICATESTYLE 378s what to do with duplicate strings (identical source 378s text): merge, msgctxt (default: 'msgctxt') 378s ========= SMOKE TEST: /usr/bin/sub2po =========== 378s 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] 378s 378s Convert subtitle files to Gettext PO localization files. See: 378s http://docs.translatehouse.org/projects/translate- 378s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 378s 378s Options: 378s --version show program's version number and exit 378s -h, --help show this help message and exit 378s --manpage output a manpage based on the help 378s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 378s --errorlevel=ERRORLEVEL 378s show errorlevel as: none, message, exception, 378s traceback 378s -i INPUT, --input=INPUT 378s read from INPUT in ass, srt, ssa, sub formats 378s -x EXCLUDE, --exclude=EXCLUDE 378s exclude names matching EXCLUDE from input paths 378s -o OUTPUT, --output=OUTPUT 378s write to OUTPUT in po, pot formats 378s -t TEMPLATE, --template=TEMPLATE 378s read from TEMPLATE in ass, srt, ssa, sub formats 378s -S, --timestamp skip conversion if the output file has newer timestamp 378s -P, --pot output PO Templates (.pot) rather than PO files (.po) 378s --duplicates=DUPLICATESTYLE 378s what to do with duplicate strings (identical source 378s text): merge, msgctxt (default: 'msgctxt') 378s ========= SMOKE TEST: /usr/bin/symb2po =========== 378s 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] 378s 378s Convert Symbian localisation files to Gettext PO localization files. See: 378s http://docs.translatehouse.org/projects/translate- 378s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 378s 378s Options: 378s --version show program's version number and exit 378s -h, --help show this help message and exit 378s --manpage output a manpage based on the help 378s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 378s --errorlevel=ERRORLEVEL 378s show errorlevel as: none, message, exception, 378s traceback 378s -i INPUT, --input=INPUT 378s read from INPUT in r01 format 378s -x EXCLUDE, --exclude=EXCLUDE 378s exclude names matching EXCLUDE from input paths 378s -o OUTPUT, --output=OUTPUT 378s write to OUTPUT in po, pot formats 378s -t TEMPLATE, --template=TEMPLATE 378s read from TEMPLATE in 378s -S, --timestamp skip conversion if the output file has newer timestamp 378s -P, --pot output PO Templates (.pot) rather than PO files (.po) 378s --duplicates=DUPLICATESTYLE 378s what to do with duplicate strings (identical source 378s text): merge, msgctxt (default: 'msgctxt') 378s ========= SMOKE TEST: /usr/bin/tbx2po =========== 378s Usage: tbx2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 378s 378s Convert TermBase eXchange (.tbx) glossary file into a Gettext PO file. See: 378s http://docs.translatehouse.org/projects/translate- 378s toolkit/en/latest/commands/tbx2po.html for examples and usage instructions 378s 378s Options: 378s --version show program's version number and exit 378s -h, --help show this help message and exit 378s --manpage output a manpage based on the help 378s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 378s --errorlevel=ERRORLEVEL 378s show errorlevel as: none, message, exception, 378s traceback 378s -i INPUT, --input=INPUT 378s read from INPUT in tbx format 378s -x EXCLUDE, --exclude=EXCLUDE 378s exclude names matching EXCLUDE from input paths 378s -o OUTPUT, --output=OUTPUT 378s write to OUTPUT in po, pot formats 378s -S, --timestamp skip conversion if the output file has newer timestamp 378s ========= SMOKE TEST: /usr/bin/tiki2po =========== 378s Usage: tiki2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 378s 378s Convert TikiWiki's language.php files to Gettext PO localization files. See: 378s http://docs.translatehouse.org/projects/translate- 378s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 378s 378s Options: 378s --version show program's version number and exit 378s -h, --help show this help message and exit 378s --manpage output a manpage based on the help 378s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 378s --errorlevel=ERRORLEVEL 378s show errorlevel as: none, message, exception, 378s traceback 378s -i INPUT, --input=INPUT 378s read from INPUT in php format 378s -x EXCLUDE, --exclude=EXCLUDE 378s exclude names matching EXCLUDE from input paths 378s -o OUTPUT, --output=OUTPUT 378s write to OUTPUT in po, pot formats 378s -S, --timestamp skip conversion if the output file has newer timestamp 378s --include-unused Include strings in the unused section 378s ========= SMOKE TEST: /usr/bin/tmserver =========== 379s usage: tmserver [-h] [-d TMDBFILE] [-f TMFILES] [-t TARGET_LANG] 379s [-s SOURCE_LANG] [-b BIND] [-p PORT] 379s [--max-candidates MAX_CANDIDATES] 379s [--min-similarity MIN_SIMILARITY] [--max-length MAX_LENGTH] 379s [--debug] 379s 379s options: 379s -h, --help show this help message and exit 379s -d TMDBFILE, --tmdb TMDBFILE 379s translation memory database file 379s -f TMFILES, --import-translation-file TMFILES 379s translation file to import into the database 379s -t TARGET_LANG, --import-target-lang TARGET_LANG 379s target language of translation files 379s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 379s source language of translation files 379s -b BIND, --bind BIND address to bind server to (default: localhost) 379s -p PORT, --port PORT port to listen on (default: 8888) 379s --max-candidates MAX_CANDIDATES 379s Maximum number of candidates 379s --min-similarity MIN_SIMILARITY 379s minimum similarity 379s --max-length MAX_LENGTH 379s Maxmimum string length 379s --debug enable debugging features 379s ========= SMOKE TEST: /usr/bin/ts2po =========== 379s Usage: ts2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 379s 379s Convert Qt Linguist (.ts) files to Gettext PO localization files. See: 379s http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in ts format 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in po, pot formats 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s -P, --pot output PO Templates (.pot) rather than PO files (.po) 379s --duplicates=DUPLICATESTYLE 379s what to do with duplicate strings (identical source 379s text): merge, msgctxt (default: 'msgctxt') 379s ========= SMOKE TEST: /usr/bin/txt2po =========== 379s Usage: txt2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 379s 379s Convert plain text (.txt) files to Gettext PO localization files. See: 379s http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in *, txt formats 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in po, pot formats 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s -P, --pot output PO Templates (.pot) rather than PO files (.po) 379s --encoding=ENCODING The encoding of the input file (default: UTF-8) 379s --flavour=FLAVOUR The flavour of text file: plain (default), dokuwiki, 379s mediawiki 379s --no-segmentation Don't segment the file, treat it like a single message 379s --duplicates=DUPLICATESTYLE 379s what to do with duplicate strings (identical source 379s text): merge, msgctxt (default: 'msgctxt') 379s ========= SMOKE TEST: /usr/bin/web2py2po =========== 379s Usage: web2py2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 379s 379s Convert web2py translation dictionaries (.py) to GNU/gettext PO files. See: 379s http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in py format 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in po, pot formats 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s -P, --pot output PO Templates (.pot) rather than PO files (.po) 379s --duplicates=DUPLICATESTYLE 379s what to do with duplicate strings (identical source 379s text): merge, msgctxt (default: 'msgctxt') 379s ========= SMOKE TEST: /usr/bin/xliff2odf =========== 379s Usage: xliff2odf [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 379s 379s Convert XLIFF translation files to OpenDocument (ODF) files. See: 379s http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in xlf format 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in odc, odf, odg, odi, odm, odp, ods, 379s odt, otc, otf, otg, oth, oti, otp, ots, ott formats 379s -t TEMPLATE, --template=TEMPLATE 379s read from TEMPLATE in odc, odf, odg, odi, odm, odp, 379s ods, odt, otc, otf, otg, oth, oti, otp, ots, ott 379s formats 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s ========= SMOKE TEST: /usr/bin/xliff2oo =========== 379s Usage: xliff2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 379s 379s Convert XLIFF localization files to an OpenOffice.org (SDF) localization 379s file. See: http://docs.translatehouse.org/projects/translate- 379s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 379s 379s Options: 379s --version show program's version number and exit 379s -h, --help show this help message and exit 379s --manpage output a manpage based on the help 379s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 379s --errorlevel=ERRORLEVEL 379s show errorlevel as: none, message, exception, 379s traceback 379s -i INPUT, --input=INPUT 379s read from INPUT in po, pot, xlf, xliff formats 379s -x EXCLUDE, --exclude=EXCLUDE 379s exclude names matching EXCLUDE from input paths 379s -o OUTPUT, --output=OUTPUT 379s write to OUTPUT in oo, sdf formats 379s -t TEMPLATE, --template=TEMPLATE 379s read from TEMPLATE in oo, sdf formats 379s -S, --timestamp skip conversion if the output file has newer timestamp 379s -l LANG, --language=LANG 379s set target language code (e.g. af-ZA) [required] 379s --source-language=LANG 379s set source language code (default en-US) 379s -T, --keeptimestamp don't change the timestamps of the strings 379s --nonrecursiveoutput don't treat the output oo as a recursive store 379s --nonrecursivetemplate 379s don't treat the template oo as a recursive store 379s --skipsource don't output the source language, but fallback to it 379s where needed 379s --filteraction=ACTION 379s action on pofilter failure: none (default), warn, 379s exclude-serious, exclude-all 379s --fuzzy use translations marked fuzzy 379s --nofuzzy don't use translations marked fuzzy (default) 379s --multifile=MULTIFILESTYLE 379s how to split po/pot files (single, toplevel or 379s onefile) 379s ========= SMOKE TEST: /usr/bin/xliff2po =========== 380s Usage: xliff2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 380s 380s Convert XLIFF localization files to Gettext PO localization files. See: 380s http://docs.translatehouse.org/projects/translate- 380s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 380s 380s Options: 380s --version show program's version number and exit 380s -h, --help show this help message and exit 380s --manpage output a manpage based on the help 380s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 380s --errorlevel=ERRORLEVEL 380s show errorlevel as: none, message, exception, 380s traceback 380s -i INPUT, --input=INPUT 380s read from INPUT in xlf, xliff formats 380s -x EXCLUDE, --exclude=EXCLUDE 380s exclude names matching EXCLUDE from input paths 380s -o OUTPUT, --output=OUTPUT 380s write to OUTPUT in po, pot formats 380s -S, --timestamp skip conversion if the output file has newer timestamp 380s -P, --pot output PO Templates (.pot) rather than PO files (.po) 380s --duplicates=DUPLICATESTYLE 380s what to do with duplicate strings (identical source 380s text): merge, msgctxt (default: 'msgctxt') 380s ========= SMOKE TEST: /usr/bin/yaml2po =========== 380s 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] 380s 380s Convert YAML files to Gettext PO localization files. See: 380s http://docs.translatehouse.org/projects/translate- 380s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 380s 380s Options: 380s --version show program's version number and exit 380s -h, --help show this help message and exit 380s --manpage output a manpage based on the help 380s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 380s --errorlevel=ERRORLEVEL 380s show errorlevel as: none, message, exception, 380s traceback 380s -i INPUT, --input=INPUT 380s read from INPUT in yaml, yml formats 380s -x EXCLUDE, --exclude=EXCLUDE 380s exclude names matching EXCLUDE from input paths 380s -o OUTPUT, --output=OUTPUT 380s write to OUTPUT in po, pot formats 380s -t TEMPLATE, --template=TEMPLATE 380s read from TEMPLATE in yaml, yml formats 380s -S, --timestamp skip conversion if the output file has newer timestamp 380s -P, --pot output PO Templates (.pot) rather than PO files (.po) 380s --duplicates=DUPLICATESTYLE 380s what to do with duplicate strings (identical source 380s text): merge, msgctxt (default: 'msgctxt') 380s autopkgtest [01:15:37]: test translate-toolkit: -----------------------] 380s autopkgtest [01:15:37]: test translate-toolkit: - - - - - - - - - - results - - - - - - - - - - 380s translate-toolkit PASS 380s autopkgtest [01:15:37]: test python3-translate: preparing testbed 535s autopkgtest [01:18:12]: testbed dpkg architecture: amd64 535s autopkgtest [01:18:12]: testbed apt version: 2.9.3 535s autopkgtest [01:18:12]: @@@@@@@@@@@@@@@@@@@@ test bed setup 535s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 535s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 535s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [339 kB] 535s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2864 B] 535s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 535s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main amd64 Packages [66.4 kB] 535s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/main i386 Packages [38.1 kB] 535s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/restricted amd64 Packages [27.4 kB] 535s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/restricted i386 Packages [9340 B] 535s Get:10 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 Packages [315 kB] 535s Get:11 http://ftpmaster.internal/ubuntu oracular-proposed/universe i386 Packages [126 kB] 535s Get:12 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse i386 Packages [3368 B] 535s Get:13 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse amd64 Packages [11.7 kB] 536s Fetched 1102 kB in 0s (3674 kB/s) 536s Reading package lists... 538s Reading package lists... 538s Building dependency tree... 538s Reading state information... 539s Calculating upgrade... 539s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 539s Reading package lists... 539s Building dependency tree... 539s Reading state information... 540s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 540s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 540s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 540s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 540s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 542s Reading package lists... 542s Reading package lists... 542s Building dependency tree... 542s Reading state information... 543s Calculating upgrade... 544s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 544s Reading package lists... 544s Building dependency tree... 544s Reading state information... 545s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 546s Reading package lists... 546s Building dependency tree... 546s Reading state information... 547s Starting pkgProblemResolver with broken count: 0 547s Starting 2 pkgProblemResolver with broken count: 0 547s Done 547s The following additional packages will be installed: 547s dictionaries-common emacsen-common gettext hunspell-en-us libapr1t64 547s libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data libgomp1 547s libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 libxslt1.1 547s python3-aeidon python3-all python3-bs4 python3-cheroot python3-dateutil 547s python3-diff-match-patch python3-enchant python3-iniconfig python3-iniparse 547s python3-jaraco.functools python3-levenshtein python3-lxml python3-mistletoe 547s python3-more-itertools python3-packaging python3-phply python3-pluggy 547s python3-ply python3-pycountry python3-pytest python3-rapidfuzz 547s python3-ruamel.yaml python3-ruamel.yaml.clib python3-simplejson 547s python3-soupsieve python3-syrupy python3-translate python3-vobject 547s python3-xapian subversion 547s Suggested packages: 547s ispell | aspell | hunspell wordlist autopoint gettext-doc libasprintf-dev 547s libgettextpo-dev hunspell openoffice.org-hunspell | openoffice.org-core 547s aspell libenchant-2-voikko xapian-tools python-lxml-doc python-ply-doc 547s python-rapidfuzz-doc python3-subversion translate-toolkit-doc xapian-doc 547s db5.3-util libapache2-mod-svn subversion-tools 547s Recommended packages: 547s aspell-en | aspell-dictionary | aspell6a-dictionary enchant-2 547s python3-cssselect python3-html5lib 548s The following NEW packages will be installed: 548s autopkgtest-satdep dictionaries-common emacsen-common gettext hunspell-en-us 548s libapr1t64 libaprutil1t64 libaspell15 libenchant-2-2 libexttextcat-data 548s libgomp1 libhunspell-1.7-0 libserf-1-1 libsvn1 libutf8proc3 libxapian30 548s libxslt1.1 python3-aeidon python3-all python3-bs4 python3-cheroot 548s python3-dateutil python3-diff-match-patch python3-enchant python3-iniconfig 548s python3-iniparse python3-jaraco.functools python3-levenshtein python3-lxml 548s python3-mistletoe python3-more-itertools python3-packaging python3-phply 548s python3-pluggy python3-ply python3-pycountry python3-pytest 548s python3-rapidfuzz python3-ruamel.yaml python3-ruamel.yaml.clib 548s python3-simplejson python3-soupsieve python3-syrupy python3-translate 548s python3-vobject python3-xapian subversion 548s 0 upgraded, 47 newly installed, 0 to remove and 0 not upgraded. 548s Need to get 11.4 MB/11.4 MB of archives. 548s After this operation, 51.7 MB of additional disk space will be used. 548s Get:1 /tmp/autopkgtest.hX7g8F/2-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [880 B] 548s Get:2 http://ftpmaster.internal/ubuntu oracular/main amd64 emacsen-common all 3.0.5 [12.1 kB] 548s Get:3 http://ftpmaster.internal/ubuntu oracular/main amd64 dictionaries-common all 1.29.7 [188 kB] 548s Get:4 http://ftpmaster.internal/ubuntu oracular/main amd64 libgomp1 amd64 14.1.0-1ubuntu1 [148 kB] 548s Get:5 http://ftpmaster.internal/ubuntu oracular/main amd64 gettext amd64 0.21-14ubuntu2 [864 kB] 548s Get:6 http://ftpmaster.internal/ubuntu oracular/main amd64 hunspell-en-us all 1:2020.12.07-2 [280 kB] 548s Get:7 http://ftpmaster.internal/ubuntu oracular/main amd64 libapr1t64 amd64 1.7.2-3.2 [106 kB] 548s Get:8 http://ftpmaster.internal/ubuntu oracular/main amd64 libaprutil1t64 amd64 1.6.3-1.1ubuntu7 [91.9 kB] 548s Get:9 http://ftpmaster.internal/ubuntu oracular/main amd64 libaspell15 amd64 0.60.8.1-1build1 [323 kB] 548s Get:10 http://ftpmaster.internal/ubuntu oracular/main amd64 libhunspell-1.7-0 amd64 1.7.2+really1.7.2-10build3 [294 kB] 548s Get:11 http://ftpmaster.internal/ubuntu oracular/main amd64 libenchant-2-2 amd64 2.3.3-2build2 [51.4 kB] 548s Get:12 http://ftpmaster.internal/ubuntu oracular/main amd64 libexttextcat-data all 3.4.7-1build1 [193 kB] 548s Get:13 http://ftpmaster.internal/ubuntu oracular/universe amd64 libserf-1-1 amd64 1.3.10-2 [48.0 kB] 548s Get:14 http://ftpmaster.internal/ubuntu oracular/universe amd64 libutf8proc3 amd64 2.9.0-1build1 [70.6 kB] 548s Get:15 http://ftpmaster.internal/ubuntu oracular/universe amd64 libsvn1 amd64 1.14.3-1build4 [1345 kB] 548s Get:16 http://ftpmaster.internal/ubuntu oracular/universe amd64 libxapian30 amd64 1.4.22-1build1 [716 kB] 548s Get:17 http://ftpmaster.internal/ubuntu oracular/main amd64 libxslt1.1 amd64 1.1.39-0exp1build1 [167 kB] 548s Get:18 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-aeidon all 1.11-2 [221 kB] 548s Get:19 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-all amd64 3.12.3-0ubuntu1 [888 B] 548s Get:20 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-soupsieve all 2.5-1 [33.0 kB] 548s Get:21 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-bs4 all 4.12.3-1 [109 kB] 548s Get:22 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-more-itertools all 10.2.0-1 [52.9 kB] 548s Get:23 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-jaraco.functools all 4.0.0-1 [10.7 kB] 548s Get:24 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 548s Get:25 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-dateutil all 2.9.0-2 [80.3 kB] 548s Get:26 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-diff-match-patch all 20230430-1 [33.1 kB] 548s Get:27 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-enchant all 3.2.2-1 [34.0 kB] 548s Get:28 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-iniconfig all 1.1.1-2 [6024 B] 548s Get:29 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-rapidfuzz amd64 3.6.2+ds-3 [2021 kB] 548s Get:30 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-levenshtein amd64 0.25.1-3 [120 kB] 548s Get:31 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-lxml amd64 5.2.1-1 [1243 kB] 548s Get:32 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-mistletoe all 1.3.0-1 [38.0 kB] 548s Get:33 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-packaging all 24.0-1 [41.1 kB] 548s Get:34 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-ply all 3.11-6 [46.5 kB] 548s Get:35 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-phply all 1.2.6-1 [50.5 kB] 548s Get:36 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-pluggy all 1.5.0-1 [21.0 kB] 548s Get:37 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 python3-pytest all 8.2.2-1ubuntu1 [250 kB] 548s Get:38 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-ruamel.yaml.clib amd64 0.2.8-1build1 [132 kB] 548s Get:39 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 548s Get:40 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-simplejson amd64 3.19.2-1build2 [54.5 kB] 548s Get:41 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-syrupy all 4.6.1-1 [42.8 kB] 548s Get:42 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-translate all 3.12.2-1ubuntu1 [318 kB] 548s Get:43 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-vobject all 0.9.6.1-2 [40.6 kB] 548s Get:44 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-xapian amd64 1.4.22-1build5 [373 kB] 548s Get:45 http://ftpmaster.internal/ubuntu oracular/universe amd64 subversion amd64 1.14.3-1build4 [908 kB] 548s Get:46 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-iniparse all 0.5-2 [20.0 kB] 548s Get:47 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 548s Preconfiguring packages ... 548s Fetched 11.4 MB in 0s (77.5 MB/s) 548s Selecting previously unselected package emacsen-common. 549s (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 ... 74365 files and directories currently installed.) 549s Preparing to unpack .../00-emacsen-common_3.0.5_all.deb ... 549s Unpacking emacsen-common (3.0.5) ... 549s Selecting previously unselected package dictionaries-common. 549s Preparing to unpack .../01-dictionaries-common_1.29.7_all.deb ... 549s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 549s Unpacking dictionaries-common (1.29.7) ... 549s Selecting previously unselected package libgomp1:amd64. 549s Preparing to unpack .../02-libgomp1_14.1.0-1ubuntu1_amd64.deb ... 549s Unpacking libgomp1:amd64 (14.1.0-1ubuntu1) ... 549s Selecting previously unselected package gettext. 549s Preparing to unpack .../03-gettext_0.21-14ubuntu2_amd64.deb ... 549s Unpacking gettext (0.21-14ubuntu2) ... 549s Selecting previously unselected package hunspell-en-us. 549s Preparing to unpack .../04-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 549s Unpacking hunspell-en-us (1:2020.12.07-2) ... 549s Selecting previously unselected package libapr1t64:amd64. 549s Preparing to unpack .../05-libapr1t64_1.7.2-3.2_amd64.deb ... 549s Unpacking libapr1t64:amd64 (1.7.2-3.2) ... 549s Selecting previously unselected package libaprutil1t64:amd64. 549s Preparing to unpack .../06-libaprutil1t64_1.6.3-1.1ubuntu7_amd64.deb ... 549s Unpacking libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 549s Selecting previously unselected package libaspell15:amd64. 549s Preparing to unpack .../07-libaspell15_0.60.8.1-1build1_amd64.deb ... 549s Unpacking libaspell15:amd64 (0.60.8.1-1build1) ... 549s Selecting previously unselected package libhunspell-1.7-0:amd64. 549s Preparing to unpack .../08-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_amd64.deb ... 549s Unpacking libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 549s Selecting previously unselected package libenchant-2-2:amd64. 549s Preparing to unpack .../09-libenchant-2-2_2.3.3-2build2_amd64.deb ... 549s Unpacking libenchant-2-2:amd64 (2.3.3-2build2) ... 549s Selecting previously unselected package libexttextcat-data. 549s Preparing to unpack .../10-libexttextcat-data_3.4.7-1build1_all.deb ... 549s Unpacking libexttextcat-data (3.4.7-1build1) ... 549s Selecting previously unselected package libserf-1-1:amd64. 549s Preparing to unpack .../11-libserf-1-1_1.3.10-2_amd64.deb ... 549s Unpacking libserf-1-1:amd64 (1.3.10-2) ... 549s Selecting previously unselected package libutf8proc3:amd64. 549s Preparing to unpack .../12-libutf8proc3_2.9.0-1build1_amd64.deb ... 549s Unpacking libutf8proc3:amd64 (2.9.0-1build1) ... 549s Selecting previously unselected package libsvn1:amd64. 549s Preparing to unpack .../13-libsvn1_1.14.3-1build4_amd64.deb ... 549s Unpacking libsvn1:amd64 (1.14.3-1build4) ... 549s Selecting previously unselected package libxapian30:amd64. 549s Preparing to unpack .../14-libxapian30_1.4.22-1build1_amd64.deb ... 549s Unpacking libxapian30:amd64 (1.4.22-1build1) ... 549s Selecting previously unselected package libxslt1.1:amd64. 549s Preparing to unpack .../15-libxslt1.1_1.1.39-0exp1build1_amd64.deb ... 549s Unpacking libxslt1.1:amd64 (1.1.39-0exp1build1) ... 549s Selecting previously unselected package python3-aeidon. 549s Preparing to unpack .../16-python3-aeidon_1.11-2_all.deb ... 549s Unpacking python3-aeidon (1.11-2) ... 550s Selecting previously unselected package python3-all. 550s Preparing to unpack .../17-python3-all_3.12.3-0ubuntu1_amd64.deb ... 550s Unpacking python3-all (3.12.3-0ubuntu1) ... 550s Selecting previously unselected package python3-soupsieve. 550s Preparing to unpack .../18-python3-soupsieve_2.5-1_all.deb ... 550s Unpacking python3-soupsieve (2.5-1) ... 550s Selecting previously unselected package python3-bs4. 550s Preparing to unpack .../19-python3-bs4_4.12.3-1_all.deb ... 550s Unpacking python3-bs4 (4.12.3-1) ... 550s Selecting previously unselected package python3-more-itertools. 550s Preparing to unpack .../20-python3-more-itertools_10.2.0-1_all.deb ... 550s Unpacking python3-more-itertools (10.2.0-1) ... 550s Selecting previously unselected package python3-jaraco.functools. 550s Preparing to unpack .../21-python3-jaraco.functools_4.0.0-1_all.deb ... 550s Unpacking python3-jaraco.functools (4.0.0-1) ... 550s Selecting previously unselected package python3-cheroot. 550s Preparing to unpack .../22-python3-cheroot_10.0.0+ds1-2_all.deb ... 550s Unpacking python3-cheroot (10.0.0+ds1-2) ... 550s Selecting previously unselected package python3-dateutil. 550s Preparing to unpack .../23-python3-dateutil_2.9.0-2_all.deb ... 550s Unpacking python3-dateutil (2.9.0-2) ... 550s Selecting previously unselected package python3-diff-match-patch. 550s Preparing to unpack .../24-python3-diff-match-patch_20230430-1_all.deb ... 550s Unpacking python3-diff-match-patch (20230430-1) ... 550s Selecting previously unselected package python3-enchant. 550s Preparing to unpack .../25-python3-enchant_3.2.2-1_all.deb ... 550s Unpacking python3-enchant (3.2.2-1) ... 550s Selecting previously unselected package python3-iniconfig. 550s Preparing to unpack .../26-python3-iniconfig_1.1.1-2_all.deb ... 550s Unpacking python3-iniconfig (1.1.1-2) ... 550s Selecting previously unselected package python3-rapidfuzz. 550s Preparing to unpack .../27-python3-rapidfuzz_3.6.2+ds-3_amd64.deb ... 550s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 550s Selecting previously unselected package python3-levenshtein. 550s Preparing to unpack .../28-python3-levenshtein_0.25.1-3_amd64.deb ... 550s Unpacking python3-levenshtein (0.25.1-3) ... 550s Selecting previously unselected package python3-lxml:amd64. 550s Preparing to unpack .../29-python3-lxml_5.2.1-1_amd64.deb ... 550s Unpacking python3-lxml:amd64 (5.2.1-1) ... 550s Selecting previously unselected package python3-mistletoe. 550s Preparing to unpack .../30-python3-mistletoe_1.3.0-1_all.deb ... 550s Unpacking python3-mistletoe (1.3.0-1) ... 550s Selecting previously unselected package python3-packaging. 550s Preparing to unpack .../31-python3-packaging_24.0-1_all.deb ... 550s Unpacking python3-packaging (24.0-1) ... 550s Selecting previously unselected package python3-ply. 550s Preparing to unpack .../32-python3-ply_3.11-6_all.deb ... 550s Unpacking python3-ply (3.11-6) ... 550s Selecting previously unselected package python3-phply. 550s Preparing to unpack .../33-python3-phply_1.2.6-1_all.deb ... 550s Unpacking python3-phply (1.2.6-1) ... 550s Selecting previously unselected package python3-pluggy. 550s Preparing to unpack .../34-python3-pluggy_1.5.0-1_all.deb ... 550s Unpacking python3-pluggy (1.5.0-1) ... 550s Selecting previously unselected package python3-pytest. 550s Preparing to unpack .../35-python3-pytest_8.2.2-1ubuntu1_all.deb ... 550s Unpacking python3-pytest (8.2.2-1ubuntu1) ... 550s Selecting previously unselected package python3-ruamel.yaml.clib:amd64. 550s Preparing to unpack .../36-python3-ruamel.yaml.clib_0.2.8-1build1_amd64.deb ... 550s Unpacking python3-ruamel.yaml.clib:amd64 (0.2.8-1build1) ... 550s Selecting previously unselected package python3-ruamel.yaml. 550s Preparing to unpack .../37-python3-ruamel.yaml_0.17.21-1_all.deb ... 550s Unpacking python3-ruamel.yaml (0.17.21-1) ... 550s Selecting previously unselected package python3-simplejson. 550s Preparing to unpack .../38-python3-simplejson_3.19.2-1build2_amd64.deb ... 550s Unpacking python3-simplejson (3.19.2-1build2) ... 550s Selecting previously unselected package python3-syrupy. 550s Preparing to unpack .../39-python3-syrupy_4.6.1-1_all.deb ... 550s Unpacking python3-syrupy (4.6.1-1) ... 550s Selecting previously unselected package python3-translate. 550s Preparing to unpack .../40-python3-translate_3.12.2-1ubuntu1_all.deb ... 550s Unpacking python3-translate (3.12.2-1ubuntu1) ... 550s Selecting previously unselected package python3-vobject. 550s Preparing to unpack .../41-python3-vobject_0.9.6.1-2_all.deb ... 550s Unpacking python3-vobject (0.9.6.1-2) ... 550s Selecting previously unselected package python3-xapian. 551s Preparing to unpack .../42-python3-xapian_1.4.22-1build5_amd64.deb ... 551s Unpacking python3-xapian (1.4.22-1build5) ... 551s Selecting previously unselected package subversion. 551s Preparing to unpack .../43-subversion_1.14.3-1build4_amd64.deb ... 551s Unpacking subversion (1.14.3-1build4) ... 551s Selecting previously unselected package python3-iniparse. 551s Preparing to unpack .../44-python3-iniparse_0.5-2_all.deb ... 551s Unpacking python3-iniparse (0.5-2) ... 551s Selecting previously unselected package python3-pycountry. 551s Preparing to unpack .../45-python3-pycountry_23.12.11+ds1-2_all.deb ... 551s Unpacking python3-pycountry (23.12.11+ds1-2) ... 551s Selecting previously unselected package autopkgtest-satdep. 551s Preparing to unpack .../46-2-autopkgtest-satdep.deb ... 551s Unpacking autopkgtest-satdep (0) ... 551s Setting up python3-more-itertools (10.2.0-1) ... 551s Setting up python3-iniconfig (1.1.1-2) ... 551s Setting up libxapian30:amd64 (1.4.22-1build1) ... 551s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 551s Setting up python3-diff-match-patch (20230430-1) ... 552s Setting up python3-jaraco.functools (4.0.0-1) ... 552s Setting up python3-aeidon (1.11-2) ... 552s Setting up libutf8proc3:amd64 (2.9.0-1build1) ... 552s Setting up libaspell15:amd64 (0.60.8.1-1build1) ... 552s Setting up python3-ply (3.11-6) ... 552s Setting up python3-ruamel.yaml.clib:amd64 (0.2.8-1build1) ... 552s Setting up python3-all (3.12.3-0ubuntu1) ... 552s Setting up libgomp1:amd64 (14.1.0-1ubuntu1) ... 552s Setting up python3-simplejson (3.19.2-1build2) ... 552s Setting up python3-packaging (24.0-1) ... 553s Setting up emacsen-common (3.0.5) ... 553s Setting up python3-cheroot (10.0.0+ds1-2) ... 553s Setting up python3-pycountry (23.12.11+ds1-2) ... 553s Setting up python3-xapian (1.4.22-1build5) ... 553s Setting up python3-pluggy (1.5.0-1) ... 553s Setting up python3-ruamel.yaml (0.17.21-1) ... 554s Setting up python3-mistletoe (1.3.0-1) ... 554s Setting up libexttextcat-data (3.4.7-1build1) ... 554s Setting up libapr1t64:amd64 (1.7.2-3.2) ... 554s Setting up libxslt1.1:amd64 (1.1.39-0exp1build1) ... 554s Setting up python3-dateutil (2.9.0-2) ... 554s Setting up python3-levenshtein (0.25.1-3) ... 554s Setting up libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 554s Setting up python3-soupsieve (2.5-1) ... 554s Setting up python3-iniparse (0.5-2) ... 554s Setting up libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 554s Setting up python3-vobject (0.9.6.1-2) ... 555s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 555s patterns['name'] = '[a-zA-Z0-9\-_]+' 555s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 555s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 555s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 555s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 555s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 555s """ 555s Setting up gettext (0.21-14ubuntu2) ... 555s Setting up python3-phply (1.2.6-1) ... 555s Setting up dictionaries-common (1.29.7) ... 555s Setting up python3-pytest (8.2.2-1ubuntu1) ... 556s Setting up python3-syrupy (4.6.1-1) ... 556s Setting up libserf-1-1:amd64 (1.3.10-2) ... 556s Setting up python3-bs4 (4.12.3-1) ... 556s Setting up python3-lxml:amd64 (5.2.1-1) ... 556s Setting up hunspell-en-us (1:2020.12.07-2) ... 556s Setting up libsvn1:amd64 (1.14.3-1build4) ... 556s Setting up libenchant-2-2:amd64 (2.3.3-2build2) ... 556s Setting up subversion (1.14.3-1build4) ... 556s Setting up python3-enchant (3.2.2-1) ... 557s Setting up python3-translate (3.12.2-1ubuntu1) ... 557s Setting up autopkgtest-satdep (0) ... 557s Processing triggers for man-db (2.12.1-1) ... 559s Processing triggers for install-info (7.1-3build2) ... 559s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 559s Processing triggers for dictionaries-common (1.29.7) ... 574s (Reading database ... 77822 files and directories currently installed.) 574s Removing autopkgtest-satdep (0) ... 576s autopkgtest [01:18:53]: test python3-translate: [----------------------- 577s ============================= test session starts ============================== 577s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 577s cachedir: .pytest_cache 577s rootdir: /tmp/autopkgtest.hX7g8F/autopkgtest_tmp 577s plugins: syrupy-4.6.1 583s collecting ... collected 3313 items / 2 skipped 583s 583s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 583s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 583s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 583s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 583s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 583s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 583s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 583s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 583s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 583s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 583s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 583s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 583s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 583s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 583s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 583s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 583s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 583s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 583s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 583s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 583s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 583s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 583s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 583s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 583s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 583s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 583s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 583s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 583s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 583s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 583s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 583s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 583s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 583s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 583s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 583s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 583s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 583s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 583s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 583s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 583s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 583s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 583s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 583s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 583s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 583s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 583s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 583s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 583s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 583s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 583s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 584s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 584s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 584s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 584s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 584s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 584s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 584s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 584s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 584s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 584s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 584s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 584s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 584s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 584s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 584s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 584s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 584s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 584s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 584s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 584s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 584s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 584s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 584s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 584s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 584s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 584s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 584s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 584s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 584s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 584s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 584s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 584s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 584s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 585s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 585s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 585s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 585s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 585s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 585s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 585s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 585s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 585s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 585s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 585s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 585s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 585s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 585s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 585s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 585s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 585s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 585s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 585s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 585s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 585s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 585s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 585s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 585s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 586s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 586s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 586s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 586s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 586s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 586s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 586s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 586s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 586s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 586s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 586s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 586s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 586s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 586s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 586s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 586s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 586s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 586s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 586s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 586s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 586s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 586s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 586s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 586s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 586s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 586s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 586s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 586s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 586s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 586s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 586s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 586s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 586s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 586s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 586s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 586s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 586s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 586s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 586s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 586s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 586s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 586s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 586s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 586s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 586s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 586s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 586s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 586s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 586s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 586s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 586s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 586s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 586s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 586s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 586s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 586s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 586s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 586s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 586s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 586s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 587s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 587s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 587s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 587s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 587s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 587s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 587s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 587s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 587s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 587s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 587s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 587s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 587s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 587s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 587s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 587s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 587s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 587s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 587s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 587s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 587s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 587s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 587s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 587s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 587s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 587s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 587s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 587s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 587s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 587s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 587s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 587s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 587s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 587s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 587s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 587s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 587s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 587s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 587s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 587s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 587s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 587s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 587s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 587s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 587s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 587s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 587s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 587s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 587s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 587s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 587s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 587s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 587s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 587s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 587s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 587s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 587s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 587s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 587s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 587s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 587s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 587s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 587s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 587s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 587s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 587s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 587s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 587s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 587s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 587s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 587s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 587s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 587s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 587s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 587s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 587s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 587s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 587s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 587s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 587s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 587s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 587s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 587s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 587s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 587s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 587s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 587s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 587s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 587s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 587s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 587s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 587s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 587s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 587s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 587s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 587s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 587s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 587s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 587s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 587s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 587s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 587s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 587s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 587s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 587s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 588s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 588s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 588s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 588s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 588s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 588s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 588s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 588s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 588s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 588s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 588s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 588s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 588s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 588s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 588s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 588s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 588s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 588s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 588s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 588s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 588s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 588s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 588s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 588s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 588s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 588s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 588s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 588s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 588s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 588s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 588s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 588s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 588s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 588s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 588s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 588s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 589s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 589s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 589s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 589s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 589s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 589s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 589s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 589s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 589s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 589s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 589s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 589s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 589s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 589s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 589s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 589s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 589s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 589s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 589s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 589s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 589s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 589s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 589s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 589s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 589s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 589s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 589s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 589s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 589s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 589s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 589s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 589s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 589s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 589s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 589s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 589s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 589s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 589s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 589s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 589s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 589s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 589s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 589s tests/translate/storage/test_mo.py::TestMOFile::test_output SKIPPED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 589s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 589s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 589s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 589s 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%] 589s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 589s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 589s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 589s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 589s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 589s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 589s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 589s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 589s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 589s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 589s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 589s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 589s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 589s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 590s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 590s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 590s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 590s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 590s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 590s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 590s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 590s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 590s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 590s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 590s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 590s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 590s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 590s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 590s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 590s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 590s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 590s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 591s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 591s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 591s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 591s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 591s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 591s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 591s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 591s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 591s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 591s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 591s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 591s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 591s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 591s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 591s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 591s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 591s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 591s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 591s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 591s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 591s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 591s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 591s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 591s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 591s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 591s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 591s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 591s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 591s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 591s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 592s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 592s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 592s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 592s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 592s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 592s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 592s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 592s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 592s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 592s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 592s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 592s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 592s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 592s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 592s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 592s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 592s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 592s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 592s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 592s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 592s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 592s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 592s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 592s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 593s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 593s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 593s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 594s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 594s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 594s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 594s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 594s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 594s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 594s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 594s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 594s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 594s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 594s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 594s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 594s tests/translate/tools/test_help.py::test_help[build_tmdb] SKIPPED (S...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[phppo2pypo] SKIPPED (S...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[poclean] SKIPPED (Skip...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[pocompile] SKIPPED (Sk...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[poconflicts] SKIPPED (...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[pocount] SKIPPED (Skip...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[podebug] SKIPPED (Skip...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[pogrep] SKIPPED (Skip ...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[pomerge] SKIPPED (Skip...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[porestructure] SKIPPED [ 94%] 594s tests/translate/tools/test_help.py::test_help[posegment] SKIPPED (Sk...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[poswap] SKIPPED (Skip ...) [ 94%] 594s tests/translate/tools/test_help.py::test_help[poterminology] SKIPPED [ 95%] 594s tests/translate/tools/test_help.py::test_help[pretranslate] SKIPPED [ 95%] 594s tests/translate/tools/test_help.py::test_help[pydiff] SKIPPED (Skip ...) [ 95%] 594s tests/translate/tools/test_help.py::test_help[pypo2phppo] SKIPPED (S...) [ 95%] 594s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 594s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 594s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 594s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 594s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 594s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 594s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 594s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 594s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 594s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 594s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 594s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 594s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 594s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 594s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 594s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 594s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 595s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 595s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 595s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 595s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 595s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 595s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 595s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff SKIPPED [ 99%] 595s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff SKIPPED [100%] 595s 595s ================================== XFAILURES =================================== 595s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 595s 595s self = 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_accelerator_keys_not_in_sentence(self): 595s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 595s dtdtemplate = """ 595s """ 595s dtdlanguage = """ 595s """ 595s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 595s print(pofile) 595s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 595s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 595s 595s tests/translate/convert/test_dtd2po.py:348: AttributeError 595s ----------------------------- Captured stdout call ----------------------------- 595s 595s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 595s 595s self = 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_accelerator_keys_not_in_sentence(self): 595s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 595s dtdtemplate = """ 595s """ 595s dtdlanguage = """ 595s """ 595s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 595s print(pofile) 595s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 595s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 595s 595s tests/translate/convert/test_dtd2po.py:348: AttributeError 595s ----------------------------- Captured stdout call ----------------------------- 595s 595s ________________ TestPO2Php.test_merging_propertyless_template _________________ 595s 595s self = 595s 595s @mark.xfail(reason="Need to review if we want this behaviour") 595s def test_merging_propertyless_template(self): 595s """Check that when merging with a template with no property values that we copy the template.""" 595s posource = "" 595s proptemplate = "# A comment\n" 595s propexpected = proptemplate 595s > propfile = self.merge2prop(proptemplate, posource) 595s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 595s 595s tests/translate/convert/test_po2php.py:386: AttributeError 595s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 595s 595s self = 595s 595s @mark.xfail(reason="Need to review if we want this behaviour") 595s def test_merging_propertyless_template(self): 595s """Check that when merging with a template with no property values that we copy the template.""" 595s posource = "" 595s proptemplate = "# A comment\n" 595s propexpected = proptemplate 595s > propfile = self.merge2prop(proptemplate, posource) 595s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 595s 595s tests/translate/convert/test_po2php.py:386: AttributeError 595s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 595s 595s self = 595s 595s @mark.xfail(reason="Not implemented - review if this is even correct") 595s def test_merging_msgid_change(self): 595s """Tests that if the msgid changes but the location stays the same that we merge.""" 595s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 595s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 595s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 595s newpo = self.convertpot(potsource, posource) 595s print(newpo) 595s > assert str(self.singleunit(newpo)) == poexpected 595s 595s tests/translate/convert/test_pot2po.py:121: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s pofile = 595s 595s @staticmethod 595s def singleunit(pofile): 595s """Checks that the pofile contains a single non-header unit, and returns it.""" 595s > assert len(pofile.units) == 2 595s E assert 3 == 2 595s E + where 3 = len([, , ]) 595s E + where [, , ] = .units 595s 595s tests/translate/convert/test_pot2po.py:25: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s 595s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 595s 595s self = 595s 595s @mark.xfail(reason="Not Implemented - needs review") 595s def test_merging_accelerator_changes(self): 595s """Test that a change in the accelerator localtion still allows merging.""" 595s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 595s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 595s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 595s newpo = self.convertpot(potsource, posource) 595s print(newpo) 595s > assert str(self.singleunit(newpo)) == poexpected 595s 595s tests/translate/convert/test_pot2po.py:190: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s pofile = 595s 595s @staticmethod 595s def singleunit(pofile): 595s """Checks that the pofile contains a single non-header unit, and returns it.""" 595s > assert len(pofile.units) == 2 595s E assert 3 == 2 595s E + where 3 = len([, , ]) 595s E + where [, , ] = .units 595s 595s tests/translate/convert/test_pot2po.py:25: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s 595s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 595s 595s self = 595s 595s @mark.xfail(reason="Not Implemented - review if this is even correct") 595s def test_lines_cut_differently(self): 595s """Checks that the correct formatting is preserved when pot an po lines differ.""" 595s potsource = ( 595s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 595s ) 595s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 595s newpo = self.convertpot(potsource, posource) 595s newpounit = self.singleunit(newpo) 595s > assert str(newpounit) == posource 595s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 595s E 595s E #: simple.label 595s E - msgid "Line" 595s E + msgid "Line split " 595s E ? +++++++ 595s E - " split differently" 595s E ? ------- 595s E + "differently" 595s E msgstr "Lyne verskillend gesny" 595s 595s tests/translate/convert/test_pot2po.py:201: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s #: simple.label 595s msgid "Line split " 595s "differently" 595s msgstr "Lyne verskillend gesny" 595s 595s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 595s 595s self = 595s 595s @mark.xfail(reason="Not implemented - review if this is even correct") 595s def test_merging_msgid_change(self): 595s """Tests that if the msgid changes but the location stays the same that we merge.""" 595s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 595s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 595s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 595s newpo = self.convertpot(potsource, posource) 595s print(newpo) 595s > assert str(self.singleunit(newpo)) == poexpected 595s 595s tests/translate/convert/test_pot2po.py:121: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s pofile = 595s 595s @staticmethod 595s def singleunit(pofile): 595s """Checks that the pofile contains a single non-header unit, and returns it.""" 595s > assert len(pofile.units) == 2 595s E assert 3 == 2 595s E + where 3 = len([, , ]) 595s E + where [, , ] = .units 595s 595s tests/translate/convert/test_pot2po.py:25: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s 595s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 595s 595s self = 595s 595s @mark.xfail(reason="Not Implemented - needs review") 595s def test_merging_accelerator_changes(self): 595s """Test that a change in the accelerator localtion still allows merging.""" 595s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 595s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 595s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 595s newpo = self.convertpot(potsource, posource) 595s print(newpo) 595s > assert str(self.singleunit(newpo)) == poexpected 595s 595s tests/translate/convert/test_pot2po.py:190: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s pofile = 595s 595s @staticmethod 595s def singleunit(pofile): 595s """Checks that the pofile contains a single non-header unit, and returns it.""" 595s > assert len(pofile.units) == 2 595s E assert 3 == 2 595s E + where 3 = len([, , ]) 595s E + where [, , ] = .units 595s 595s tests/translate/convert/test_pot2po.py:25: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s 595s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 595s 595s self = 595s 595s @mark.xfail(reason="Not Implemented - review if this is even correct") 595s def test_lines_cut_differently(self): 595s """Checks that the correct formatting is preserved when pot an po lines differ.""" 595s potsource = ( 595s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 595s ) 595s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 595s newpo = self.convertpot(potsource, posource) 595s newpounit = self.singleunit(newpo) 595s > assert str(newpounit) == posource 595s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 595s E 595s E #: simple.label 595s E - msgid "Line" 595s E + msgid "Line split " 595s E ? +++++++ 595s E - " split differently" 595s E ? ------- 595s E + "differently" 595s E msgstr "Lyne verskillend gesny" 595s 595s tests/translate/convert/test_pot2po.py:201: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s #: simple.label 595s msgid "Line split " 595s "differently" 595s msgstr "Lyne verskillend gesny" 595s 595s ________________________ TestYAML2PO.test_no_duplicates ________________________ 595s 595s self = 595s input = '\nfoo: bar\nfoo: baz\n' 595s 595s def parse(self, input): 595s """Parse the given file or file source string.""" 595s if hasattr(input, "name"): 595s self.filename = input.name 595s elif not getattr(self, "filename", ""): 595s self.filename = "" 595s if hasattr(input, "read"): 595s src = input.read() 595s input.close() 595s input = src 595s if isinstance(input, bytes): 595s input = input.decode("utf-8") 595s try: 595s > self._original = self.yaml.load(input) 595s 595s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 595s return constructor.get_single_data() 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 595s return self.construct_document(node) 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 595s for _dummy in generator: 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 595s self.construct_mapping(node, data, deep=True) 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 595s if self.check_mapping_key(node, key_node, maptyp, key, value): 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s self = 595s 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'))]) 595s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 595s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 595s 595s def check_mapping_key(self, node, key_node, mapping, key, value): 595s # type: (Any, Any, Any, Any, Any) -> bool 595s """return True if key is unique""" 595s if key in mapping: 595s if not self.allow_duplicate_keys: 595s mk = mapping.get(key) 595s args = [ 595s 'while constructing a mapping', 595s node.start_mark, 595s 'found duplicate key "{}" with value "{}" ' 595s '(original value: "{}")'.format(key, value, mk), 595s key_node.start_mark, 595s """ 595s To suppress this check see: 595s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 595s """, 595s """\ 595s Duplicate keys will become an error in future releases, and are errors 595s by default when using the new API. 595s """, 595s ] 595s if self.allow_duplicate_keys is None: 595s warnings.warn(DuplicateKeyFutureWarning(*args)) 595s else: 595s > raise DuplicateKeyError(*args) 595s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 595s E in "", line 2, column 1: 595s E foo: bar 595s E ^ (line: 2) 595s E found duplicate key "foo" with value "baz" (original value: "bar") 595s E in "", line 3, column 1: 595s E foo: baz 595s E ^ (line: 3) 595s E 595s E To suppress this check see: 595s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 595s 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 595s 595s During handling of the above exception, another exception occurred: 595s 595s self = 595s 595s @pytest.mark.xfail(reason="This is invalid YAML document") 595s def test_no_duplicates(self): 595s """Check converting drops duplicates.""" 595s input_string = """ 595s foo: bar 595s foo: baz 595s """ 595s > target_store = self._convert_to_store(input_string) 595s 595s tests/translate/convert/test_yaml2po.py:112: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 595s return self._convert(*args, **kwargs)[0] 595s tests/translate/convert/test_yaml2po.py:28: in _convert 595s converter = self.ConverterClass( 595s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 595s self.source_store = self.SourceStoreClass(input_file) 595s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 595s self.parse(inputfile) 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s self = 595s input = '\nfoo: bar\nfoo: baz\n' 595s 595s def parse(self, input): 595s """Parse the given file or file source string.""" 595s if hasattr(input, "name"): 595s self.filename = input.name 595s elif not getattr(self, "filename", ""): 595s self.filename = "" 595s if hasattr(input, "read"): 595s src = input.read() 595s input.close() 595s input = src 595s if isinstance(input, bytes): 595s input = input.decode("utf-8") 595s try: 595s self._original = self.yaml.load(input) 595s except YAMLError as e: 595s message = getattr(e, "problem", getattr(e, "message", str(e))) 595s if hasattr(e, "problem_mark"): 595s message += f" {e.problem_mark}" 595s > raise base.ParseError(message) 595s 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)' 595s 595s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 595s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 595s 595s self = 595s input = '\nfoo: bar\nfoo: baz\n' 595s 595s def parse(self, input): 595s """Parse the given file or file source string.""" 595s if hasattr(input, "name"): 595s self.filename = input.name 595s elif not getattr(self, "filename", ""): 595s self.filename = "" 595s if hasattr(input, "read"): 595s src = input.read() 595s input.close() 595s input = src 595s if isinstance(input, bytes): 595s input = input.decode("utf-8") 595s try: 595s > self._original = self.yaml.load(input) 595s 595s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 595s return constructor.get_single_data() 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 595s return self.construct_document(node) 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 595s for _dummy in generator: 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 595s self.construct_mapping(node, data, deep=True) 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 595s if self.check_mapping_key(node, key_node, maptyp, key, value): 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s self = 595s 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'))]) 595s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 595s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 595s 595s def check_mapping_key(self, node, key_node, mapping, key, value): 595s # type: (Any, Any, Any, Any, Any) -> bool 595s """return True if key is unique""" 595s if key in mapping: 595s if not self.allow_duplicate_keys: 595s mk = mapping.get(key) 595s args = [ 595s 'while constructing a mapping', 595s node.start_mark, 595s 'found duplicate key "{}" with value "{}" ' 595s '(original value: "{}")'.format(key, value, mk), 595s key_node.start_mark, 595s """ 595s To suppress this check see: 595s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 595s """, 595s """\ 595s Duplicate keys will become an error in future releases, and are errors 595s by default when using the new API. 595s """, 595s ] 595s if self.allow_duplicate_keys is None: 595s warnings.warn(DuplicateKeyFutureWarning(*args)) 595s else: 595s > raise DuplicateKeyError(*args) 595s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 595s E in "", line 2, column 1: 595s E foo: bar 595s E ^ (line: 2) 595s E found duplicate key "foo" with value "baz" (original value: "bar") 595s E in "", line 3, column 1: 595s E foo: baz 595s E ^ (line: 3) 595s E 595s E To suppress this check see: 595s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 595s 595s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 595s 595s During handling of the above exception, another exception occurred: 595s 595s self = 595s 595s @pytest.mark.xfail(reason="This is invalid YAML document") 595s def test_no_duplicates(self): 595s """Check converting drops duplicates.""" 595s input_string = """ 595s foo: bar 595s foo: baz 595s """ 595s > target_store = self._convert_to_store(input_string) 595s 595s tests/translate/convert/test_yaml2po.py:112: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 595s return self._convert(*args, **kwargs)[0] 595s tests/translate/convert/test_yaml2po.py:28: in _convert 595s converter = self.ConverterClass( 595s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 595s self.source_store = self.SourceStoreClass(input_file) 595s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 595s self.parse(inputfile) 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s self = 595s input = '\nfoo: bar\nfoo: baz\n' 595s 595s def parse(self, input): 595s """Parse the given file or file source string.""" 595s if hasattr(input, "name"): 595s self.filename = input.name 595s elif not getattr(self, "filename", ""): 595s self.filename = "" 595s if hasattr(input, "read"): 595s src = input.read() 595s input.close() 595s input = src 595s if isinstance(input, bytes): 595s input = input.decode("utf-8") 595s try: 595s self._original = self.yaml.load(input) 595s except YAMLError as e: 595s message = getattr(e, "problem", getattr(e, "message", str(e))) 595s if hasattr(e, "problem_mark"): 595s message += f" {e.problem_mark}" 595s > raise base.ParseError(message) 595s 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)' 595s 595s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 595s __________________________ test_acceleratedvariables ___________________________ 595s 595s @mark.xfail(reason="Accelerated variables needs a better implementation") 595s def test_acceleratedvariables(): 595s """Test for accelerated variables.""" 595s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 595s mozillachecker = checks.MozillaChecker() 595s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 595s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 595s 595s tests/translate/filters/test_checks.py:206: AttributeError 595s ___________________________ test_musttranslatewords ____________________________ 595s 595s @mark.xfail(reason="FIXME: All fails() tests are not working") 595s def test_musttranslatewords(): 595s """Tests stopwords.""" 595s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 595s assert passes( 595s stdchecker.musttranslatewords, 595s "This uses Mozilla of course", 595s "hierdie gebruik le mozille natuurlik", 595s ) 595s stdchecker = checks.StandardChecker( 595s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 595s ) 595s assert passes( 595s stdchecker.musttranslatewords, 595s "This uses Mozilla of course", 595s "hierdie gebruik le mozille natuurlik", 595s ) 595s > assert fails( 595s stdchecker.musttranslatewords, 595s "This uses Mozilla of course", 595s "hierdie gebruik Mozilla natuurlik", 595s ) 595s E AssertionError: assert False 595s E + where False = fails(>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 595s E + where > = .musttranslatewords 595s 595s tests/translate/filters/test_checks.py:612: AssertionError 595s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 595s 595s @mark.xfail(reason="Bug #3408") 595s def test_persian_single_and_double_quote_fail_at_the_same_time(): 595s """Test Persian single and double quote failures in string with single quotes.""" 595s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 595s 595s # With single quote check. 595s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 595s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 595s E assert False 595s E + where False = fails(>, "Path: '%S'", 'مسیر: "%S"\u200e') 595s E + where > = .singlequoting 595s 595s tests/translate/filters/test_checks.py:1271: AssertionError 595s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 595s 595s @mark.xfail(reason="Bug #3506") 595s def test_bengali_mozilla_inverted_xmltags(): 595s """Test Bengali Mozilla XML tags.""" 595s bn_mozilla_checker = checks.MozillaChecker( 595s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 595s ) 595s str_en = """We co-founded the WHAT-WG to.""" 595s str_bn = """এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।""" 595s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 595s E assert False 595s E + where False = passes(>, 'We co-founded the WHAT-WG to.', 'এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।') 595s E + where > = .xmltags 595s 595s tests/translate/filters/test_checks.py:2065: AssertionError 595s _______________________________ test_word_khmer ________________________________ 595s 595s @mark.xfail( 595s reason="ZWS is not considered a space in Python 2.6+. Khmer " 595s "should extend words() to include \\u200b in addition to " 595s "other word breakers." 595s ) 595s def test_word_khmer(): 595s language = common.Common 595s # Let's test Khmer with zero width space (\u200b) 595s words = language.words("ផ្ដល់\u200bយោបល់") 595s print("ផ្ដល់\u200bយោបល់") 595s print(language.words("ផ្ដល់<200b>យោបល់")) 595s print(["ផ្ដល់", "យោបល់"]) 595s > assert words == ["ផ្ដល់", "យោបល់"] 595s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 595s E 595s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 595s E Right contains one more item: 'យោបល់' 595s E 595s E Full diff: 595s E [ 595s E + 'ផ្ដល់\u200bយោបល់',... 595s E 595s E ...Full output truncated (3 lines hidden), use '-vv' to show 595s 595s tests/translate/lang/test_common.py:47: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s ផ្ដល់​យោបល់ 595s ['ផ្ដល់<200b>យោបល់'] 595s ['ផ្ដល់', 'យោបល់'] 595s __________________ TestConverters.test_to_general_placeables ___________________ 595s 595s self = 595s 595s @mark.xfail(reason="Test needs fixing, disabled for now") 595s def test_to_general_placeables(self): 595s basetree = base.to_base_placeables(self.elem) 595s gentree = general.to_general_placeables(basetree) 595s > assert gentree == self.elem 595s E assert '])>])> == '])>])> 595s E 595s E Full diff: 595s E - , '])>, , '])>])> 595s E ? ^^^ 595s E + , '])>, , '])>])> 595s E ? ^^^^^^ 595s 595s tests/translate/storage/placeables/test_base.py:210: AssertionError 595s ___________________ TestConverters.test_to_xliff_placeables ____________________ 595s 595s self = 595s 595s @mark.xfail(reason="Test needs fixing, disabled for now") 595s def test_to_xliff_placeables(self): 595s basetree = base.to_base_placeables(self.elem) 595s xliff_from_base = xliff.to_xliff_placeables(basetree) 595s > assert str(xliff_from_base) != str(self.elem) 595s E assert 'Ģët &brandLong;' != 'Ģët &brandLong;' 595s E + where 'Ģët &brandLong;' = str(, '])>, , '])>])>) 595s E + and 'Ģët &brandLong;' = str(, '])>, , '])>])>) 595s E + where , '])>, , '])>])> = .elem 595s 595s tests/translate/storage/placeables/test_base.py:216: AssertionError 595s _____________________ test_quotefordtd_unimplemented_cases _____________________ 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_quotefordtd_unimplemented_cases(): 595s """Test unimplemented quoting DTD cases.""" 595s > assert dtd.quotefordtd("Between

and

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

and

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

and

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

and

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

and

' 595s E 595s E -

and

595s E + <p> and </p> 595s 595s tests/translate/storage/test_dtd.py:103: AssertionError 595s ________________________ TestDTD.test_comment_following ________________________ 595s 595s self = 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_comment_following(self): 595s """Check that comments that appear after and entity are not pushed onto another line.""" 595s dtdsource = ' ' 595s dtdregen = self.dtdregen(dtdsource) 595s > assert dtdsource == dtdregen 595s E assert '' == ' 595s E - 595s E - 595s 595s tests/translate/storage/test_dtd.py:344: AssertionError 595s _________________________ TestDTD.test_invalid_quoting _________________________ 595s 595s self = 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_invalid_quoting(self): 595s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 595s # TODO: we should rather raise an error 595s dtdsource = '\n' 595s assert ( 595s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 595s ) 595s dtdfile = self.dtdparse(dtdsource) 595s assert len(dtdfile.units) == 1 595s dtdunit = dtdfile.units[0] 595s assert dtdunit.definition == '"bananas for sale"' 595s > assert bytes(dtdfile) == b'\n' 595s E assert b'' == b'\n' 595s E 595s E Full diff: 595s E - (b'\n') 595s E + b'' 595s 595s tests/translate/storage/test_dtd.py:364: AssertionError 595s __________________________ TestOtFile.test_extensions __________________________ 595s 595s self = 595s 595s @mark.xfail( 595s reason="This doesn't work, due to two store classes handling different " 595s "extensions, but factory listing it as one supported file type" 595s ) 595s def test_extensions(self): 595s > super().test_extensions() 595s 595s tests/translate/storage/test_omegat.py:20: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s self = 595s 595s def test_extensions(self): 595s """Test that the factory knows the extensions for this class.""" 595s supported = factory.supported_files() 595s supported_dict = { 595s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 595s } 595s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 595s return 595s detail = supported_dict[ 595s self.StoreClass.Name 595s ] # will start to get problematic once translated 595s print("Factory:", detail[0]) 595s print("StoreClass:", self.StoreClass.Extensions) 595s for ext in detail[0]: 595s > assert ext in self.StoreClass.Extensions 595s E AssertionError: assert 'tab' in ['utf8'] 595s E + where ['utf8'] = .Extensions 595s E + where = .StoreClass 595s 595s tests/translate/storage/test_base.py:386: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s Factory: ['utf8', 'tab'] 595s StoreClass: ['utf8'] 595s _________________________ TestPOFile.test_kde_plurals __________________________ 595s 595s self = 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_kde_plurals(self): 595s """Tests kde-style plurals. (Bug: 191).""" 595s posource = r"""msgid "_n Singular\n" 595s "Plural" 595s msgstr "Een\n" 595s "Twee\n" 595s "Drie" 595s """ 595s pofile = self.poparse(posource) 595s assert len(pofile.units) == 1 595s unit = pofile.units[0] 595s > assert unit.hasplural() 595s E assert False 595s E + where False = >() 595s E + where > = .hasplural 595s 595s tests/translate/storage/test_po.py:374: AssertionError 595s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 595s 595s self = 595s 595s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 595s def test_makeobsolete_untranslated(self): 595s """Tests making an untranslated unit obsolete.""" 595s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 595s pofile = self.poparse(posource) 595s unit = pofile.units[0] 595s print(bytes(pofile)) 595s assert not unit.isobsolete() 595s unit.makeobsolete() 595s > assert str(unit) == "" 595s E assert '#~ msgid "te...~ msgstr ""\n' == '' 595s E 595s E + #~ msgid "test" 595s E + #~ msgstr "" 595s 595s tests/translate/storage/test_po.py:449: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 595s ________________________ TestXWikiFullPage.test_remove _________________________ 595s 595s self = 595s 595s @mark.xfail(reason="removal not working in full page") 595s def test_remove(self): 595s > super().test_remove() 595s 595s tests/translate/storage/test_properties.py:1614: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s self = 595s 595s def test_remove(self): 595s """Tests removing a unit with a source string.""" 595s store = self.StoreClass() 595s unit = store.addsourceunit("Test String") 595s # Some storages (MO, OmegaT) serialize only translated units 595s unit.target = "Test target" 595s assert headerless_len(store.units) == 1 595s withunit = bytes(store) 595s print(withunit) 595s store.removeunit(unit) 595s assert headerless_len(store.units) == 0 595s withoutunit = bytes(store) 595s print(withoutunit) 595s > assert withoutunit != withunit 595s 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' 595s 595s tests/translate/storage/test_base.py:278: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s 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' 595s 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' 595s ________________________ TestPYPOFile.test_kde_plurals _________________________ 595s 595s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7eb2e09a18e0> 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_kde_plurals(self): 595s """Tests kde-style plurals. (Bug: 191).""" 595s posource = r"""msgid "_n Singular\n" 595s "Plural" 595s msgstr "Een\n" 595s "Twee\n" 595s "Drie" 595s """ 595s pofile = self.poparse(posource) 595s assert len(pofile.units) == 1 595s unit = pofile.units[0] 595s > assert unit.hasplural() 595s E assert False 595s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7eb2dc63bce0>>() 595s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7eb2dc63bce0>> = <translate.storage.pypo.pounit object at 0x7eb2dc63bce0>.hasplural 595s 595s tests/translate/storage/test_po.py:374: AssertionError 595s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 595s 595s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7eb2e09a17f0> 595s 595s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 595s def test_makeobsolete_untranslated(self): 595s """Tests making an untranslated unit obsolete.""" 595s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 595s pofile = self.poparse(posource) 595s unit = pofile.units[0] 595s print(bytes(pofile)) 595s assert not unit.isobsolete() 595s unit.makeobsolete() 595s > assert str(unit) == "" 595s E assert '#~ msgid "te...~ msgstr ""\n' == '' 595s E 595s E + #~ msgid "test" 595s E + #~ msgstr "" 595s 595s tests/translate/storage/test_po.py:449: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 595s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 595s 595s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7eb2e09a0560> 595s 595s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 595s def test_mixed_newlines_typecomment(self): 595s """Checks that mixed newlines in typecomments are properly parsed.""" 595s # This was generated by translate-tookit prior to 595s # issue that test_dos_newlines_write is covering was fixed. 595s posource = b"""#, fuzzy 595s msgid "test me"\r 595s msgstr ""\r 595s """ 595s > pofile = self.poparse(posource) 595s 595s tests/translate/storage/test_pypo.py:620: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s tests/translate/storage/test_po.py:214: in poparse 595s return self.StoreClass(dummyfile) 595s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 595s super().__init__(inputfile, **kwargs) 595s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 595s self.parse(inputfile) 595s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 595s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s parse_state = <translate.storage.poparser.ParseState object at 0x7eb2dc63b710> 595s store = <translate.storage.pypo.pofile object at 0x7eb2dc63ba40> 595s 595s def parse_units(parse_state, store): 595s unit = parse_header(parse_state, store) 595s while unit: 595s unit.infer_state() 595s store.addunit(unit) 595s unit = parse_unit(parse_state) 595s if not parse_state.eof: 595s > raise PoParseError(parse_state) 595s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 595s 595s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 595s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 595s 595s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7eb2e09c8920> 595s 595s @pytest.mark.xfail(reason="Not Implemented") 595s def test_note_sanity(self): 595s > super().test_note_sanity() 595s 595s tests/translate/storage/test_subtitles.py:13: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7eb2e09c8920> 595s 595s def test_note_sanity(self): 595s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 595s unit = self.unit 595s 595s unit.addnote("Test note 1", origin="translator") 595s unit.addnote("Test note 2", origin="translator") 595s unit.addnote("Test note 3", origin="translator") 595s expected_notes = "Test note 1\nTest note 2\nTest note 3" 595s actual_notes = unit.getnotes(origin="translator") 595s > assert actual_notes == expected_notes 595s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 595s E 595s E - Test note 1 595s E - Test note 2 595s E - Test note 3 595s 595s tests/translate/storage/test_base.py:180: AssertionError 595s __________________________ TestCount.test_plurals_kde __________________________ 595s 595s self = <tests.translate.tools.test_pocount.TestCount object at 0x7eb2dee734d0> 595s 595s @mark.xfail(reason="Support commented out pending removal") 595s def test_plurals_kde(self): 595s """Test that we correcly count old style KDE plurals.""" 595s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 595s 595s tests/translate/tools/test_pocount.py:91: 595s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 595s 595s source = '_n: Singular\\n\nPlural', expectedsource = 2 595s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 595s 595s @staticmethod 595s def count(source, expectedsource, target=None, expectedtarget=None): 595s """Simple helper to check the respective word counts.""" 595s poelement = po.pounit(source) 595s if target is not None: 595s poelement.target = target 595s wordssource, wordstarget = pocount.wordsinunit(poelement) 595s print( 595s 'Source (expected=%d; actual=%d): "%s"' 595s % (expectedsource, wordssource, source) 595s ) 595s > assert wordssource == expectedsource 595s E assert 3 == 2 595s 595s tests/translate/tools/test_pocount.py:33: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s Source (expected=2; actual=3): "_n: Singular\n 595s Plural" 595s _________________________ TestPOMerge.test_escape_tabs _________________________ 595s 595s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x7eb2df81a5d0> 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_escape_tabs(self): 595s """Ensure that input tabs are escaped in the output, like gettext does.""" 595s # The strings below contains the tab character, not spaces. 595s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 595s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 595s expectedpo = r"""msgid "First\tSecond" 595s msgstr "Eerste\tTweede" 595s """ 595s pofile = self.mergestore(templatepo, mergepo) 595s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 595s > assert bytes(pofile).decode("utf-8") == expectedpo 595s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 595s E 595s E - msgid "First\tSecond" 595s E ? ^^ 595s E + msgid "First Second" 595s E ? ^ 595s E msgstr "Eerste\tTweede" 595s 595s tests/translate/tools/test_pomerge.py:349: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s Expected: 595s msgid "First\tSecond" 595s msgstr "Eerste\tTweede" 595s 595s 595s Merged: 595s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 595s __________________ TestPretranslate.test_merging_msgid_change __________________ 595s 595s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7eb2df7d6cc0> 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_merging_msgid_change(self): 595s """ 595s tests that if the msgid changes but the location stays the same that 595s we merge. 595s """ 595s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 595s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 595s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 595s newpo = self.pretranslatepo(input_source, template_source) 595s print(bytes(newpo)) 595s > assert bytes(newpo).decode("utf-8") == poexpected 595s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 595s E 595s E #: simple.label 595s E #: simple.accesskey 595s E - #, fuzzy 595s E msgid "Its &hard coding a newline.\n" 595s E - msgstr "&Hart gekoeerde nuwe lyne\n" 595s E + msgstr "" 595s 595s tests/translate/tools/test_pretranslate.py:130: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 595s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 595s 595s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7eb2df7d4200> 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_merging_accelerator_changes(self): 595s """ 595s test that a change in the accelerator localtion still allows 595s merging. 595s """ 595s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 595s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 595s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 595s newpo = self.pretranslatepo(input_source, template_source) 595s print(bytes(newpo)) 595s > assert bytes(newpo).decode("utf-8") == poexpected 595s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 595s E 595s E #: someline.c 595s E msgid "A&bout" 595s E - msgstr "&Info" 595s E ? ----- 595s E + msgstr "" 595s 595s tests/translate/tools/test_pretranslate.py:185: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 595s _________________ TestPretranslate.test_lines_cut_differently __________________ 595s 595s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7eb2df7d5a90> 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_lines_cut_differently(self): 595s """ 595s Checks that the correct formatting is preserved when pot an po lines 595s differ. 595s """ 595s input_source = ( 595s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 595s ) 595s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 595s newpo = self.pretranslatepo(input_source, template_source) 595s newpounit = self.singleunit(newpo) 595s > assert str(newpounit) == template_source 595s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 595s E 595s E #: simple.label 595s E - msgid "Line" 595s E + msgid "Line split " 595s E ? +++++++ 595s E - " split differently" 595s E ? ------- 595s E + "differently" 595s E msgstr "Lyne verskillend gesny" 595s 595s tests/translate/tools/test_pretranslate.py:199: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s #: simple.label 595s msgid "Line split " 595s "differently" 595s msgstr "Lyne verskillend gesny" 595s 595s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 595s 595s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7eb2df7d5d30> 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_merging_msgid_change(self): 595s """ 595s tests that if the msgid changes but the location stays the same that 595s we merge. 595s """ 595s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 595s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 595s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 595s newpo = self.pretranslatepo(input_source, template_source) 595s print(bytes(newpo)) 595s > assert bytes(newpo).decode("utf-8") == poexpected 595s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 595s E 595s E #: simple.label 595s E #: simple.accesskey 595s E - #, fuzzy 595s E msgid "Its &hard coding a newline.\n" 595s E - msgstr "&Hart gekoeerde nuwe lyne\n" 595s E + msgstr "" 595s 595s tests/translate/tools/test_pretranslate.py:130: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 595s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 595s 595s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7eb2df7d44a0> 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_merging_accelerator_changes(self): 595s """ 595s test that a change in the accelerator localtion still allows 595s merging. 595s """ 595s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 595s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 595s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 595s newpo = self.pretranslatepo(input_source, template_source) 595s print(bytes(newpo)) 595s > assert bytes(newpo).decode("utf-8") == poexpected 595s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 595s E 595s E #: someline.c 595s E msgid "A&bout" 595s E - msgstr "&Info" 595s E ? ----- 595s E + msgstr "" 595s 595s tests/translate/tools/test_pretranslate.py:185: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 595s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 595s 595s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7eb2df7d43e0> 595s 595s @mark.xfail(reason="Not Implemented") 595s def test_lines_cut_differently(self): 595s """ 595s Checks that the correct formatting is preserved when pot an po lines 595s differ. 595s """ 595s input_source = ( 595s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 595s ) 595s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 595s newpo = self.pretranslatepo(input_source, template_source) 595s newpounit = self.singleunit(newpo) 595s > assert str(newpounit) == template_source 595s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 595s E 595s E #: simple.label 595s E - msgid "Line" 595s E + msgid "Line split " 595s E ? +++++++ 595s E - " split differently" 595s E ? ------- 595s E + "differently" 595s E msgstr "Lyne verskillend gesny" 595s 595s tests/translate/tools/test_pretranslate.py:199: AssertionError 595s ----------------------------- Captured stdout call ----------------------------- 595s #: simple.label 595s msgid "Line split " 595s "differently" 595s msgstr "Lyne verskillend gesny" 595s 595s =============================== warnings summary =============================== 595s tests/translate/storage/test_cpo.py:15 595s Warning: 595s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 595s ImportError('gettext PO library not found') 595s In pytest 9.1 this warning will become an error by default. 595s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 595s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 595s 595s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 595s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.hX7g8F/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 595s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 595s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 595s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 595s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 595s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 595s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 595s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 595s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 595s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 595s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 595s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 595s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 595s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 595s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 595s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 595s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 595s Warning: Could not find accesskey for key.accesskey 595s 595s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 595s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 595s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 595s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 595s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 595s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.hX7g8F/autopkgtest_tmp/tests/translate/convert/test.idml'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 595s Warning: unclosed file <_io.BufferedReader name='translation.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 595s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 595s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 595s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 595s Warning: Could not find accesskey for prop.accesskey 595s 595s tests/translate/convert/test_po2tmx.py: 26 warnings 595s tests/translate/filters/test_pofilter.py: 13 warnings 595s tests/translate/storage/test_tbx.py: 17 warnings 595s tests/translate/storage/test_tmx.py: 24 warnings 595s 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' 595s 595s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 595s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 595s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 595s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 595s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 595s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 595s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 595s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 595s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 595s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 595s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 595s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 595s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.hX7g8F/autopkgtest_tmp/tests/translate/convert/test.odt'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 595s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 595s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 595s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 595s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 595s Enable tracemalloc to get traceback where the object was allocated. 595s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 595s 595s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 595s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 595s 595s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 595s Warning: DTD file '' does not validate 595s 595s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 595s --------------------------- snapshot report summary ---------------------------- 595s 23 snapshots passed. 595s =========================== short test summary info ============================ 595s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 595s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 595s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 595s SKIPPED [1] tests/translate/storage/test_mo.py:498: Skip testing command line tools 595s SKIPPED [16] tests/translate/tools/test_help.py:16: Skip testing command line tools 595s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:49: Skip testing command line tools 595s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:58: Skip testing command line tools 595s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 595s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 595s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 595s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 595s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 595s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 595s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 595s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 595s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 595s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 595s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 595s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 595s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 595s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 595s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 595s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 595s 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. 595s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 595s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 595s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 595s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 595s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 595s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 595s 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 595s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 595s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 595s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 595s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 595s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 595s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 595s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 595s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 595s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 595s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 595s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 595s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 595s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 595s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 595s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 595s ========= 3254 passed, 22 skipped, 39 xfailed, 127 warnings in 18.62s ========== 596s autopkgtest [01:19:13]: test python3-translate: -----------------------] 596s python3-translate PASS 596s autopkgtest [01:19:13]: test python3-translate: - - - - - - - - - - results - - - - - - - - - - 596s autopkgtest [01:19:13]: test python3-translate-commands: preparing testbed 597s Reading package lists... 597s Building dependency tree... 597s Reading state information... 597s Starting pkgProblemResolver with broken count: 0 597s Starting 2 pkgProblemResolver with broken count: 0 597s Done 598s The following additional packages will be installed: 598s translate-toolkit 598s Recommended packages: 598s translate-toolkit-doc 598s The following NEW packages will be installed: 598s autopkgtest-satdep translate-toolkit 598s 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. 598s Need to get 88.2 kB/89.1 kB of archives. 598s After this operation, 253 kB of additional disk space will be used. 598s Get:1 /tmp/autopkgtest.hX7g8F/3-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [888 B] 598s Get:2 http://ftpmaster.internal/ubuntu oracular/universe amd64 translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 598s Fetched 88.2 kB in 0s (2454 kB/s) 598s Selecting previously unselected package translate-toolkit. 598s (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 ... 77822 files and directories currently installed.) 598s Preparing to unpack .../translate-toolkit_3.12.2-1ubuntu1_all.deb ... 598s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 599s Selecting previously unselected package autopkgtest-satdep. 599s Preparing to unpack .../3-autopkgtest-satdep.deb ... 599s Unpacking autopkgtest-satdep (0) ... 599s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 599s Setting up autopkgtest-satdep (0) ... 599s Processing triggers for man-db (2.12.1-1) ... 601s (Reading database ... 77995 files and directories currently installed.) 601s Removing autopkgtest-satdep (0) ... 602s autopkgtest [01:19:19]: test python3-translate-commands: [----------------------- 602s ============================= test session starts ============================== 602s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 602s cachedir: .pytest_cache 602s rootdir: /tmp/autopkgtest.hX7g8F/autopkgtest_tmp 602s plugins: syrupy-4.6.1 608s collecting ... collected 3313 items / 2 skipped 608s 608s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 608s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 608s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 608s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 608s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 608s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 608s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 608s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 608s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 608s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 608s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 608s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 608s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 608s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 608s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 608s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 608s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 608s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 608s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 608s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 608s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 608s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 608s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 608s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 608s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 608s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 608s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 608s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 608s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 608s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 608s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 608s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 608s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 608s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 608s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 608s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 608s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 608s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 608s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 608s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 608s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 608s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 608s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 608s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 608s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 608s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 608s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 608s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 608s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 608s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 608s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 609s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 609s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 609s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 609s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 609s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 609s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 609s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 609s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 609s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 609s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 609s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 609s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 609s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 609s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 609s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 609s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 609s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 609s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 609s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 609s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 609s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 609s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 609s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 609s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 609s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 609s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 609s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 609s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 609s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 609s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 609s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 609s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 609s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 609s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 609s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 609s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 609s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 609s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 609s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 610s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 610s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 610s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 610s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 610s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 610s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 610s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 610s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 610s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 610s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 610s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 610s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 610s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 610s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 610s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 610s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 610s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 610s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 610s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 610s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 610s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 610s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 610s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 610s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 610s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 610s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 611s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 611s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 611s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 611s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 611s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 611s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 611s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 611s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 611s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 611s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 611s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 611s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 611s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 611s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 611s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 611s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 611s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 611s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 611s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 611s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 611s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 611s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 611s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 611s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 611s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 611s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 611s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 611s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 611s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 611s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 611s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 611s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 611s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 611s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 611s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 611s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 611s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 611s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 611s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 611s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 611s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 611s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 611s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 611s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 611s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 611s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 611s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 611s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 611s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 611s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 611s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 611s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 611s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 611s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 611s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 611s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 611s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 612s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 612s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 612s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 612s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 612s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 612s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 612s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 612s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 612s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 612s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 612s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 612s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 612s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 612s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 612s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 612s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 612s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 612s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 612s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 612s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 612s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 612s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 612s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 612s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 612s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 612s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 612s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 612s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 612s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 612s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 612s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 612s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 612s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 612s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 612s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 612s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 612s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 612s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 612s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 612s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 612s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 612s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 612s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 612s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 612s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 612s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 612s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 612s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 612s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 612s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 612s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 612s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 612s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 612s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 612s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 612s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 612s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 612s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 612s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 612s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 612s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 612s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 612s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 612s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 612s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 612s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 612s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 612s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 612s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 612s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 612s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 612s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 612s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 612s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 612s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 612s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 612s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 612s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 612s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 612s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 612s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 612s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 612s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 612s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 612s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 612s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 612s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 612s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 612s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 612s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 612s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 612s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 612s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 612s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 612s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 612s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 612s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 612s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 612s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 612s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 612s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 613s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 613s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 613s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 613s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 613s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 613s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 613s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 613s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 613s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 613s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 613s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 613s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 613s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 613s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 613s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 613s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 613s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 613s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 613s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 613s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 613s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 613s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 613s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 613s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 613s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 613s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 613s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 613s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 613s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 613s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 613s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 613s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 613s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 613s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 613s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 613s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 613s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 613s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 613s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 613s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 613s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 613s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 613s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 613s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 613s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 613s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 613s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 613s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 613s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 614s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 614s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 614s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 614s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 614s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 614s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 614s tests/translate/storage/test_mo.py::TestMOFile::test_output PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 614s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 614s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 614s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 614s 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%] 614s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 614s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 614s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 614s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 614s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 614s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 614s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 614s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 614s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 614s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 614s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 614s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 614s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 614s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 614s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 614s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 614s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 614s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 614s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 614s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 614s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 614s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 614s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 614s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 614s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 614s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 614s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 614s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 614s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 614s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 614s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 615s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 615s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 615s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 615s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 615s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 615s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 615s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 615s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 615s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 615s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 615s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 615s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 615s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 615s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 615s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 615s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 615s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 616s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 616s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 616s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 616s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 616s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 616s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 616s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 616s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 616s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 616s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 616s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 616s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 616s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 616s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 616s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 616s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 616s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 616s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 616s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 616s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 616s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 616s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 616s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 617s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 617s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 617s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 617s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 617s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 617s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 617s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 617s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 617s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 617s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 617s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 617s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 617s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 617s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 617s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 617s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 617s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 617s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 617s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 617s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 618s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 618s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 618s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 618s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 618s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 618s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 618s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 618s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 618s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 618s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 618s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 618s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 618s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 618s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 618s tests/translate/tools/test_help.py::test_help[build_tmdb] PASSED [ 94%] 618s tests/translate/tools/test_help.py::test_help[phppo2pypo] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[poclean] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[pocompile] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[poconflicts] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[pocount] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[podebug] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[pogrep] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[pomerge] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[porestructure] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[posegment] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[poswap] PASSED [ 94%] 619s tests/translate/tools/test_help.py::test_help[poterminology] PASSED [ 95%] 619s tests/translate/tools/test_help.py::test_help[pretranslate] PASSED [ 95%] 619s tests/translate/tools/test_help.py::test_help[pydiff] PASSED [ 95%] 619s tests/translate/tools/test_help.py::test_help[pypo2phppo] PASSED [ 95%] 619s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 619s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 619s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 619s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 619s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 619s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 619s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 619s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 619s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 620s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 620s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 620s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 620s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 620s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 620s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 620s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 620s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 620s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 620s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 620s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 620s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 620s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 620s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 620s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 620s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 620s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 621s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff PASSED [ 99%] 621s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff PASSED [100%] 621s 621s ================================== XFAILURES =================================== 621s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 621s 621s self = <tests.translate.convert.test_dtd2po.TestDTD2PO object at 0x7162db0693a0> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_accelerator_keys_not_in_sentence(self): 621s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 621s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 621s <!ENTITY useAutoScroll.accesskey "a">""" 621s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 621s <!ENTITY useAutoScroll.accesskey "a">""" 621s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 621s print(pofile) 621s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 621s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 621s 621s tests/translate/convert/test_dtd2po.py:348: AttributeError 621s ----------------------------- Captured stdout call ----------------------------- 621s <translate.storage.pypo.pofile object at 0x7162d8d819a0> 621s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 621s 621s self = <tests.translate.convert.test_dtd2po.TestDTD2POCommand object at 0x7162db0beae0> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_accelerator_keys_not_in_sentence(self): 621s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 621s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 621s <!ENTITY useAutoScroll.accesskey "a">""" 621s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 621s <!ENTITY useAutoScroll.accesskey "a">""" 621s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 621s print(pofile) 621s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 621s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 621s 621s tests/translate/convert/test_dtd2po.py:348: AttributeError 621s ----------------------------- Captured stdout call ----------------------------- 621s <translate.storage.pypo.pofile object at 0x7162d8d81ac0> 621s ________________ TestPO2Php.test_merging_propertyless_template _________________ 621s 621s self = <tests.translate.convert.test_po2php.TestPO2Php object at 0x7162da87b170> 621s 621s @mark.xfail(reason="Need to review if we want this behaviour") 621s def test_merging_propertyless_template(self): 621s """Check that when merging with a template with no property values that we copy the template.""" 621s posource = "" 621s proptemplate = "# A comment\n" 621s propexpected = proptemplate 621s > propfile = self.merge2prop(proptemplate, posource) 621s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 621s 621s tests/translate/convert/test_po2php.py:386: AttributeError 621s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 621s 621s self = <tests.translate.convert.test_po2php.TestPO2PhpCommand object at 0x7162da908710> 621s 621s @mark.xfail(reason="Need to review if we want this behaviour") 621s def test_merging_propertyless_template(self): 621s """Check that when merging with a template with no property values that we copy the template.""" 621s posource = "" 621s proptemplate = "# A comment\n" 621s propexpected = proptemplate 621s > propfile = self.merge2prop(proptemplate, posource) 621s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 621s 621s tests/translate/convert/test_po2php.py:386: AttributeError 621s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 621s 621s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7162da3cdfa0> 621s 621s @mark.xfail(reason="Not implemented - review if this is even correct") 621s def test_merging_msgid_change(self): 621s """Tests that if the msgid changes but the location stays the same that we merge.""" 621s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 621s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 621s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 621s newpo = self.convertpot(potsource, posource) 621s print(newpo) 621s > assert str(self.singleunit(newpo)) == poexpected 621s 621s tests/translate/convert/test_pot2po.py:121: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s pofile = <translate.storage.pypo.pofile object at 0x7162d8c624e0> 621s 621s @staticmethod 621s def singleunit(pofile): 621s """Checks that the pofile contains a single non-header unit, and returns it.""" 621s > assert len(pofile.units) == 2 621s E assert 3 == 2 621s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7162d97f46b0>, <translate.storage.pypo.pounit object at 0x7162d97f6db0>, <translate.storage.pypo.pounit object at 0x7162d97f47d0>]) 621s E + where [<translate.storage.pypo.pounit object at 0x7162d97f46b0>, <translate.storage.pypo.pounit object at 0x7162d97f6db0>, <translate.storage.pypo.pounit object at 0x7162d97f47d0>] = <translate.storage.pypo.pofile object at 0x7162d8c624e0>.units 621s 621s tests/translate/convert/test_pot2po.py:25: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s <translate.storage.pypo.pofile object at 0x7162d8c624e0> 621s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 621s 621s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7162da3ce270> 621s 621s @mark.xfail(reason="Not Implemented - needs review") 621s def test_merging_accelerator_changes(self): 621s """Test that a change in the accelerator localtion still allows merging.""" 621s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 621s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 621s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 621s newpo = self.convertpot(potsource, posource) 621s print(newpo) 621s > assert str(self.singleunit(newpo)) == poexpected 621s 621s tests/translate/convert/test_pot2po.py:190: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s pofile = <translate.storage.pypo.pofile object at 0x7162d97f71d0> 621s 621s @staticmethod 621s def singleunit(pofile): 621s """Checks that the pofile contains a single non-header unit, and returns it.""" 621s > assert len(pofile.units) == 2 621s E assert 3 == 2 621s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7162d97f5640>, <translate.storage.pypo.pounit object at 0x7162d97f5880>, <translate.storage.pypo.pounit object at 0x7162d97f7c50>]) 621s E + where [<translate.storage.pypo.pounit object at 0x7162d97f5640>, <translate.storage.pypo.pounit object at 0x7162d97f5880>, <translate.storage.pypo.pounit object at 0x7162d97f7c50>] = <translate.storage.pypo.pofile object at 0x7162d97f71d0>.units 621s 621s tests/translate/convert/test_pot2po.py:25: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s <translate.storage.pypo.pofile object at 0x7162d97f71d0> 621s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 621s 621s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7162da3ce3f0> 621s 621s @mark.xfail(reason="Not Implemented - review if this is even correct") 621s def test_lines_cut_differently(self): 621s """Checks that the correct formatting is preserved when pot an po lines differ.""" 621s potsource = ( 621s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 621s ) 621s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 621s newpo = self.convertpot(potsource, posource) 621s newpounit = self.singleunit(newpo) 621s > assert str(newpounit) == posource 621s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 621s E 621s E #: simple.label 621s E - msgid "Line" 621s E + msgid "Line split " 621s E ? +++++++ 621s E - " split differently" 621s E ? ------- 621s E + "differently" 621s E msgstr "Lyne verskillend gesny" 621s 621s tests/translate/convert/test_pot2po.py:201: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s #: simple.label 621s msgid "Line split " 621s "differently" 621s msgstr "Lyne verskillend gesny" 621s 621s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 621s 621s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7162da0648c0> 621s 621s @mark.xfail(reason="Not implemented - review if this is even correct") 621s def test_merging_msgid_change(self): 621s """Tests that if the msgid changes but the location stays the same that we merge.""" 621s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 621s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 621s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 621s newpo = self.convertpot(potsource, posource) 621s print(newpo) 621s > assert str(self.singleunit(newpo)) == poexpected 621s 621s tests/translate/convert/test_pot2po.py:121: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s pofile = <translate.storage.pypo.pofile object at 0x7162d8d81580> 621s 621s @staticmethod 621s def singleunit(pofile): 621s """Checks that the pofile contains a single non-header unit, and returns it.""" 621s > assert len(pofile.units) == 2 621s E assert 3 == 2 621s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7162d8476810>, <translate.storage.pypo.pounit object at 0x7162d84758b0>, <translate.storage.pypo.pounit object at 0x7162d84746b0>]) 621s E + where [<translate.storage.pypo.pounit object at 0x7162d8476810>, <translate.storage.pypo.pounit object at 0x7162d84758b0>, <translate.storage.pypo.pounit object at 0x7162d84746b0>] = <translate.storage.pypo.pofile object at 0x7162d8d81580>.units 621s 621s tests/translate/convert/test_pot2po.py:25: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s <translate.storage.pypo.pofile object at 0x7162d8d81580> 621s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 621s 621s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7162da064f80> 621s 621s @mark.xfail(reason="Not Implemented - needs review") 621s def test_merging_accelerator_changes(self): 621s """Test that a change in the accelerator localtion still allows merging.""" 621s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 621s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 621s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 621s newpo = self.convertpot(potsource, posource) 621s print(newpo) 621s > assert str(self.singleunit(newpo)) == poexpected 621s 621s tests/translate/convert/test_pot2po.py:190: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s pofile = <translate.storage.pypo.pofile object at 0x7162d97f6e10> 621s 621s @staticmethod 621s def singleunit(pofile): 621s """Checks that the pofile contains a single non-header unit, and returns it.""" 621s > assert len(pofile.units) == 2 621s E assert 3 == 2 621s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7162d97f4230>, <translate.storage.pypo.pounit object at 0x7162d97f5970>, <translate.storage.pypo.pounit object at 0x7162d97f5df0>]) 621s E + where [<translate.storage.pypo.pounit object at 0x7162d97f4230>, <translate.storage.pypo.pounit object at 0x7162d97f5970>, <translate.storage.pypo.pounit object at 0x7162d97f5df0>] = <translate.storage.pypo.pofile object at 0x7162d97f6e10>.units 621s 621s tests/translate/convert/test_pot2po.py:25: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s <translate.storage.pypo.pofile object at 0x7162d97f6e10> 621s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 621s 621s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7162da065130> 621s 621s @mark.xfail(reason="Not Implemented - review if this is even correct") 621s def test_lines_cut_differently(self): 621s """Checks that the correct formatting is preserved when pot an po lines differ.""" 621s potsource = ( 621s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 621s ) 621s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 621s newpo = self.convertpot(potsource, posource) 621s newpounit = self.singleunit(newpo) 621s > assert str(newpounit) == posource 621s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 621s E 621s E #: simple.label 621s E - msgid "Line" 621s E + msgid "Line split " 621s E ? +++++++ 621s E - " split differently" 621s E ? ------- 621s E + "differently" 621s E msgstr "Lyne verskillend gesny" 621s 621s tests/translate/convert/test_pot2po.py:201: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s #: simple.label 621s msgid "Line split " 621s "differently" 621s msgstr "Lyne verskillend gesny" 621s 621s ________________________ TestYAML2PO.test_no_duplicates ________________________ 621s 621s self = <translate.storage.yaml.YAMLFile object at 0x7162d8d0c050> 621s input = '\nfoo: bar\nfoo: baz\n' 621s 621s def parse(self, input): 621s """Parse the given file or file source string.""" 621s if hasattr(input, "name"): 621s self.filename = input.name 621s elif not getattr(self, "filename", ""): 621s self.filename = "" 621s if hasattr(input, "read"): 621s src = input.read() 621s input.close() 621s input = src 621s if isinstance(input, bytes): 621s input = input.decode("utf-8") 621s try: 621s > self._original = self.yaml.load(input) 621s 621s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 621s return constructor.get_single_data() 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 621s return self.construct_document(node) 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 621s for _dummy in generator: 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 621s self.construct_mapping(node, data, deep=True) 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 621s if self.check_mapping_key(node, key_node, maptyp, key, value): 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x7162d8d0c9e0> 621s 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'))]) 621s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 621s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 621s 621s def check_mapping_key(self, node, key_node, mapping, key, value): 621s # type: (Any, Any, Any, Any, Any) -> bool 621s """return True if key is unique""" 621s if key in mapping: 621s if not self.allow_duplicate_keys: 621s mk = mapping.get(key) 621s args = [ 621s 'while constructing a mapping', 621s node.start_mark, 621s 'found duplicate key "{}" with value "{}" ' 621s '(original value: "{}")'.format(key, value, mk), 621s key_node.start_mark, 621s """ 621s To suppress this check see: 621s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 621s """, 621s """\ 621s Duplicate keys will become an error in future releases, and are errors 621s by default when using the new API. 621s """, 621s ] 621s if self.allow_duplicate_keys is None: 621s warnings.warn(DuplicateKeyFutureWarning(*args)) 621s else: 621s > raise DuplicateKeyError(*args) 621s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 621s E in "<unicode string>", line 2, column 1: 621s E foo: bar 621s E ^ (line: 2) 621s E found duplicate key "foo" with value "baz" (original value: "bar") 621s E in "<unicode string>", line 3, column 1: 621s E foo: baz 621s E ^ (line: 3) 621s E 621s E To suppress this check see: 621s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 621s 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 621s 621s During handling of the above exception, another exception occurred: 621s 621s self = <tests.translate.convert.test_yaml2po.TestYAML2PO object at 0x7162d9ff9850> 621s 621s @pytest.mark.xfail(reason="This is invalid YAML document") 621s def test_no_duplicates(self): 621s """Check converting drops duplicates.""" 621s input_string = """ 621s foo: bar 621s foo: baz 621s """ 621s > target_store = self._convert_to_store(input_string) 621s 621s tests/translate/convert/test_yaml2po.py:112: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 621s return self._convert(*args, **kwargs)[0] 621s tests/translate/convert/test_yaml2po.py:28: in _convert 621s converter = self.ConverterClass( 621s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 621s self.source_store = self.SourceStoreClass(input_file) 621s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 621s self.parse(inputfile) 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s self = <translate.storage.yaml.YAMLFile object at 0x7162d8d0c050> 621s input = '\nfoo: bar\nfoo: baz\n' 621s 621s def parse(self, input): 621s """Parse the given file or file source string.""" 621s if hasattr(input, "name"): 621s self.filename = input.name 621s elif not getattr(self, "filename", ""): 621s self.filename = "" 621s if hasattr(input, "read"): 621s src = input.read() 621s input.close() 621s input = src 621s if isinstance(input, bytes): 621s input = input.decode("utf-8") 621s try: 621s self._original = self.yaml.load(input) 621s except YAMLError as e: 621s message = getattr(e, "problem", getattr(e, "message", str(e))) 621s if hasattr(e, "problem_mark"): 621s message += f" {e.problem_mark}" 621s > raise base.ParseError(message) 621s 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)' 621s 621s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 621s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 621s 621s self = <translate.storage.yaml.YAMLFile object at 0x7162d85386b0> 621s input = '\nfoo: bar\nfoo: baz\n' 621s 621s def parse(self, input): 621s """Parse the given file or file source string.""" 621s if hasattr(input, "name"): 621s self.filename = input.name 621s elif not getattr(self, "filename", ""): 621s self.filename = "" 621s if hasattr(input, "read"): 621s src = input.read() 621s input.close() 621s input = src 621s if isinstance(input, bytes): 621s input = input.decode("utf-8") 621s try: 621s > self._original = self.yaml.load(input) 621s 621s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 621s return constructor.get_single_data() 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 621s return self.construct_document(node) 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 621s for _dummy in generator: 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 621s self.construct_mapping(node, data, deep=True) 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 621s if self.check_mapping_key(node, key_node, maptyp, key, value): 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x7162d85381d0> 621s 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'))]) 621s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 621s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 621s 621s def check_mapping_key(self, node, key_node, mapping, key, value): 621s # type: (Any, Any, Any, Any, Any) -> bool 621s """return True if key is unique""" 621s if key in mapping: 621s if not self.allow_duplicate_keys: 621s mk = mapping.get(key) 621s args = [ 621s 'while constructing a mapping', 621s node.start_mark, 621s 'found duplicate key "{}" with value "{}" ' 621s '(original value: "{}")'.format(key, value, mk), 621s key_node.start_mark, 621s """ 621s To suppress this check see: 621s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 621s """, 621s """\ 621s Duplicate keys will become an error in future releases, and are errors 621s by default when using the new API. 621s """, 621s ] 621s if self.allow_duplicate_keys is None: 621s warnings.warn(DuplicateKeyFutureWarning(*args)) 621s else: 621s > raise DuplicateKeyError(*args) 621s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 621s E in "<unicode string>", line 2, column 1: 621s E foo: bar 621s E ^ (line: 2) 621s E found duplicate key "foo" with value "baz" (original value: "bar") 621s E in "<unicode string>", line 3, column 1: 621s E foo: baz 621s E ^ (line: 3) 621s E 621s E To suppress this check see: 621s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 621s 621s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 621s 621s During handling of the above exception, another exception occurred: 621s 621s self = <tests.translate.convert.test_yaml2po.TestYAML2POCommand object at 0x7162d9ff9790> 621s 621s @pytest.mark.xfail(reason="This is invalid YAML document") 621s def test_no_duplicates(self): 621s """Check converting drops duplicates.""" 621s input_string = """ 621s foo: bar 621s foo: baz 621s """ 621s > target_store = self._convert_to_store(input_string) 621s 621s tests/translate/convert/test_yaml2po.py:112: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 621s return self._convert(*args, **kwargs)[0] 621s tests/translate/convert/test_yaml2po.py:28: in _convert 621s converter = self.ConverterClass( 621s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 621s self.source_store = self.SourceStoreClass(input_file) 621s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 621s self.parse(inputfile) 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s self = <translate.storage.yaml.YAMLFile object at 0x7162d85386b0> 621s input = '\nfoo: bar\nfoo: baz\n' 621s 621s def parse(self, input): 621s """Parse the given file or file source string.""" 621s if hasattr(input, "name"): 621s self.filename = input.name 621s elif not getattr(self, "filename", ""): 621s self.filename = "" 621s if hasattr(input, "read"): 621s src = input.read() 621s input.close() 621s input = src 621s if isinstance(input, bytes): 621s input = input.decode("utf-8") 621s try: 621s self._original = self.yaml.load(input) 621s except YAMLError as e: 621s message = getattr(e, "problem", getattr(e, "message", str(e))) 621s if hasattr(e, "problem_mark"): 621s message += f" {e.problem_mark}" 621s > raise base.ParseError(message) 621s 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)' 621s 621s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 621s __________________________ test_acceleratedvariables ___________________________ 621s 621s @mark.xfail(reason="Accelerated variables needs a better implementation") 621s def test_acceleratedvariables(): 621s """Test for accelerated variables.""" 621s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 621s mozillachecker = checks.MozillaChecker() 621s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 621s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 621s 621s tests/translate/filters/test_checks.py:206: AttributeError 621s ___________________________ test_musttranslatewords ____________________________ 621s 621s @mark.xfail(reason="FIXME: All fails() tests are not working") 621s def test_musttranslatewords(): 621s """Tests stopwords.""" 621s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 621s assert passes( 621s stdchecker.musttranslatewords, 621s "This uses Mozilla of course", 621s "hierdie gebruik le mozille natuurlik", 621s ) 621s stdchecker = checks.StandardChecker( 621s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 621s ) 621s assert passes( 621s stdchecker.musttranslatewords, 621s "This uses Mozilla of course", 621s "hierdie gebruik le mozille natuurlik", 621s ) 621s > assert fails( 621s stdchecker.musttranslatewords, 621s "This uses Mozilla of course", 621s "hierdie gebruik Mozilla natuurlik", 621s ) 621s E AssertionError: assert False 621s E + where False = fails(<bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x7162d8531f70>>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 621s E + where <bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x7162d8531f70>> = <translate.filters.checks.StandardChecker object at 0x7162d8531f70>.musttranslatewords 621s 621s tests/translate/filters/test_checks.py:612: AssertionError 621s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 621s 621s @mark.xfail(reason="Bug #3408") 621s def test_persian_single_and_double_quote_fail_at_the_same_time(): 621s """Test Persian single and double quote failures in string with single quotes.""" 621s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 621s 621s # With single quote check. 621s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 621s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 621s E assert False 621s E + where False = fails(<bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x7162d853b5f0>>, "Path: '%S'", 'مسیر: "%S"\u200e') 621s E + where <bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x7162d853b5f0>> = <translate.filters.checks.StandardChecker object at 0x7162d853b5f0>.singlequoting 621s 621s tests/translate/filters/test_checks.py:1271: AssertionError 621s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 621s 621s @mark.xfail(reason="Bug #3506") 621s def test_bengali_mozilla_inverted_xmltags(): 621s """Test Bengali Mozilla XML tags.""" 621s bn_mozilla_checker = checks.MozillaChecker( 621s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 621s ) 621s 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.""" 621s str_bn = """এর প্রচলন ঘটাতে আমরা <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> প্রতিষ্ঠায় <a href="%(cofound_url)s" rel="external">সহযোগী</a> ছিলাম।ন।""" 621s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 621s E assert False 621s E + where False = passes(<bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x7162d851c0b0>>, '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> ছিলাম।ন।') 621s E + where <bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x7162d851c0b0>> = <translate.filters.checks.MozillaChecker object at 0x7162d851c0b0>.xmltags 621s 621s tests/translate/filters/test_checks.py:2065: AssertionError 621s _______________________________ test_word_khmer ________________________________ 621s 621s @mark.xfail( 621s reason="ZWS is not considered a space in Python 2.6+. Khmer " 621s "should extend words() to include \\u200b in addition to " 621s "other word breakers." 621s ) 621s def test_word_khmer(): 621s language = common.Common 621s # Let's test Khmer with zero width space (\u200b) 621s words = language.words("ផ្ដល់\u200bយោបល់") 621s print("ផ្ដល់\u200bយោបល់") 621s print(language.words("ផ្ដល់<200b>យោបល់")) 621s print(["ផ្ដល់", "យោបល់"]) 621s > assert words == ["ផ្ដល់", "យោបល់"] 621s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 621s E 621s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 621s E Right contains one more item: 'យោបល់' 621s E 621s E Full diff: 621s E [ 621s E + 'ផ្ដល់\u200bយោបល់',... 621s E 621s E ...Full output truncated (3 lines hidden), use '-vv' to show 621s 621s tests/translate/lang/test_common.py:47: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s ផ្ដល់​យោបល់ 621s ['ផ្ដល់<200b>យោបល់'] 621s ['ផ្ដល់', 'យោបល់'] 621s __________________ TestConverters.test_to_general_placeables ___________________ 621s 621s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x7162d9ec5d00> 621s 621s @mark.xfail(reason="Test needs fixing, disabled for now") 621s def test_to_general_placeables(self): 621s basetree = base.to_base_placeables(self.elem) 621s gentree = general.to_general_placeables(basetree) 621s > assert gentree == self.elem 621s E assert <StringElem([...(['</a>'])>])> == <StringElem([...(['</a>'])>])> 621s E 621s E Full diff: 621s E - <StringElem([<StringElem(['Ģët '])>, <XMLTagPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 621s E ? ^^^ 621s E + <StringElem([<StringElem(['Ģët '])>, <XMLEntityPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 621s E ? ^^^^^^ 621s 621s tests/translate/storage/placeables/test_base.py:210: AssertionError 621s ___________________ TestConverters.test_to_xliff_placeables ____________________ 621s 621s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x7162d9ec63c0> 621s 621s @mark.xfail(reason="Test needs fixing, disabled for now") 621s def test_to_xliff_placeables(self): 621s basetree = base.to_base_placeables(self.elem) 621s xliff_from_base = xliff.to_xliff_placeables(basetree) 621s > assert str(xliff_from_base) != str(self.elem) 621s 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>' 621s 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>'])>])>) 621s 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>'])>])>) 621s 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 0x7162d9ec63c0>.elem 621s 621s tests/translate/storage/placeables/test_base.py:216: AssertionError 621s _____________________ test_quotefordtd_unimplemented_cases _____________________ 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_quotefordtd_unimplemented_cases(): 621s """Test unimplemented quoting DTD cases.""" 621s > assert dtd.quotefordtd("Between <p> and </p>") == ( 621s '"Between <p> and </p>"' 621s ) 621s E assert '"Between <p> and </p>"' == '"Between <...d </p>"' 621s E 621s E - "Between <p> and </p>" 621s E + "Between <p> and </p>" 621s 621s tests/translate/storage/test_dtd.py:72: AssertionError 621s ___________________ test_unquotefromdtd_unimplemented_cases ____________________ 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_unquotefromdtd_unimplemented_cases(): 621s """Test unimplemented unquoting DTD cases.""" 621s > assert dtd.unquotefromdtd('"<p> and </p>"') == "<p> and </p>" 621s E AssertionError: assert '<p> and </p>' == '<p> and </p>' 621s E 621s E - <p> and </p> 621s E + <p> and </p> 621s 621s tests/translate/storage/test_dtd.py:103: AssertionError 621s ________________________ TestDTD.test_comment_following ________________________ 621s 621s self = <tests.translate.storage.test_dtd.TestDTD object at 0x7162d96a88c0> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_comment_following(self): 621s """Check that comments that appear after and entity are not pushed onto another line.""" 621s dtdsource = '<!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards -->' 621s dtdregen = self.dtdregen(dtdsource) 621s > assert dtdsource == dtdregen 621s E assert '<!ENTITY tex...keyboards -->' == '<!-- + is ab...dkey2 "="> \n' 621s E 621s E + <!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards --> 621s E - <!-- + is above this key on many keyboards --> 621s E - <!ENTITY textZoomEnlargeCmd.commandkey2 "="> 621s 621s tests/translate/storage/test_dtd.py:344: AssertionError 621s _________________________ TestDTD.test_invalid_quoting _________________________ 621s 621s self = <tests.translate.storage.test_dtd.TestDTD object at 0x7162d96aa2a0> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_invalid_quoting(self): 621s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 621s # TODO: we should rather raise an error 621s dtdsource = '<!ENTITY test.me "bananas for sale""room">\n' 621s assert ( 621s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 621s ) 621s dtdfile = self.dtdparse(dtdsource) 621s assert len(dtdfile.units) == 1 621s dtdunit = dtdfile.units[0] 621s assert dtdunit.definition == '"bananas for sale"' 621s > assert bytes(dtdfile) == b'<!ENTITY test.me "bananas for sale">\n' 621s E assert b'' == b'<!ENTITY te... for sale">\n' 621s E 621s E Full diff: 621s E - (b'<!ENTITY test.me "bananas for sale">\n') 621s E + b'' 621s 621s tests/translate/storage/test_dtd.py:364: AssertionError 621s __________________________ TestOtFile.test_extensions __________________________ 621s 621s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x7162d9fb94c0> 621s 621s @mark.xfail( 621s reason="This doesn't work, due to two store classes handling different " 621s "extensions, but factory listing it as one supported file type" 621s ) 621s def test_extensions(self): 621s > super().test_extensions() 621s 621s tests/translate/storage/test_omegat.py:20: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x7162d9fb94c0> 621s 621s def test_extensions(self): 621s """Test that the factory knows the extensions for this class.""" 621s supported = factory.supported_files() 621s supported_dict = { 621s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 621s } 621s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 621s return 621s detail = supported_dict[ 621s self.StoreClass.Name 621s ] # will start to get problematic once translated 621s print("Factory:", detail[0]) 621s print("StoreClass:", self.StoreClass.Extensions) 621s for ext in detail[0]: 621s > assert ext in self.StoreClass.Extensions 621s E AssertionError: assert 'tab' in ['utf8'] 621s E + where ['utf8'] = <class 'translate.storage.omegat.OmegaTFile'>.Extensions 621s E + where <class 'translate.storage.omegat.OmegaTFile'> = <tests.translate.storage.test_omegat.TestOtFile object at 0x7162d9fb94c0>.StoreClass 621s 621s tests/translate/storage/test_base.py:386: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s Factory: ['utf8', 'tab'] 621s StoreClass: ['utf8'] 621s _________________________ TestPOFile.test_kde_plurals __________________________ 621s 621s self = <tests.translate.storage.test_po.TestPOFile object at 0x7162d9fae780> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_kde_plurals(self): 621s """Tests kde-style plurals. (Bug: 191).""" 621s posource = r"""msgid "_n Singular\n" 621s "Plural" 621s msgstr "Een\n" 621s "Twee\n" 621s "Drie" 621s """ 621s pofile = self.poparse(posource) 621s assert len(pofile.units) == 1 621s unit = pofile.units[0] 621s > assert unit.hasplural() 621s E assert False 621s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7162d95af380>>() 621s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7162d95af380>> = <translate.storage.pypo.pounit object at 0x7162d95af380>.hasplural 621s 621s tests/translate/storage/test_po.py:374: AssertionError 621s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 621s 621s self = <tests.translate.storage.test_po.TestPOFile object at 0x7162d9fafc50> 621s 621s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 621s def test_makeobsolete_untranslated(self): 621s """Tests making an untranslated unit obsolete.""" 621s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 621s pofile = self.poparse(posource) 621s unit = pofile.units[0] 621s print(bytes(pofile)) 621s assert not unit.isobsolete() 621s unit.makeobsolete() 621s > assert str(unit) == "" 621s E assert '#~ msgid "te...~ msgstr ""\n' == '' 621s E 621s E + #~ msgid "test" 621s E + #~ msgstr "" 621s 621s tests/translate/storage/test_po.py:449: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 621s ________________________ TestXWikiFullPage.test_remove _________________________ 621s 621s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x7162d9481b50> 621s 621s @mark.xfail(reason="removal not working in full page") 621s def test_remove(self): 621s > super().test_remove() 621s 621s tests/translate/storage/test_properties.py:1614: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x7162d9481b50> 621s 621s def test_remove(self): 621s """Tests removing a unit with a source string.""" 621s store = self.StoreClass() 621s unit = store.addsourceunit("Test String") 621s # Some storages (MO, OmegaT) serialize only translated units 621s unit.target = "Test target" 621s assert headerless_len(store.units) == 1 621s withunit = bytes(store) 621s print(withunit) 621s store.removeunit(unit) 621s assert headerless_len(store.units) == 0 621s withoutunit = bytes(store) 621s print(withoutunit) 621s > assert withoutunit != withunit 621s 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' 621s 621s tests/translate/storage/test_base.py:278: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s 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' 621s 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' 621s ________________________ TestPYPOFile.test_kde_plurals _________________________ 621s 621s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7162d94818b0> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_kde_plurals(self): 621s """Tests kde-style plurals. (Bug: 191).""" 621s posource = r"""msgid "_n Singular\n" 621s "Plural" 621s msgstr "Een\n" 621s "Twee\n" 621s "Drie" 621s """ 621s pofile = self.poparse(posource) 621s assert len(pofile.units) == 1 621s unit = pofile.units[0] 621s > assert unit.hasplural() 621s E assert False 621s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7162d5bb9d60>>() 621s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7162d5bb9d60>> = <translate.storage.pypo.pounit object at 0x7162d5bb9d60>.hasplural 621s 621s tests/translate/storage/test_po.py:374: AssertionError 621s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 621s 621s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7162d9482c90> 621s 621s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 621s def test_makeobsolete_untranslated(self): 621s """Tests making an untranslated unit obsolete.""" 621s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 621s pofile = self.poparse(posource) 621s unit = pofile.units[0] 621s print(bytes(pofile)) 621s assert not unit.isobsolete() 621s unit.makeobsolete() 621s > assert str(unit) == "" 621s E assert '#~ msgid "te...~ msgstr ""\n' == '' 621s E 621s E + #~ msgid "test" 621s E + #~ msgstr "" 621s 621s tests/translate/storage/test_po.py:449: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 621s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 621s 621s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7162d946d5e0> 621s 621s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 621s def test_mixed_newlines_typecomment(self): 621s """Checks that mixed newlines in typecomments are properly parsed.""" 621s # This was generated by translate-tookit prior to 621s # issue that test_dos_newlines_write is covering was fixed. 621s posource = b"""#, fuzzy 621s msgid "test me"\r 621s msgstr ""\r 621s """ 621s > pofile = self.poparse(posource) 621s 621s tests/translate/storage/test_pypo.py:620: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s tests/translate/storage/test_po.py:214: in poparse 621s return self.StoreClass(dummyfile) 621s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 621s super().__init__(inputfile, **kwargs) 621s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 621s self.parse(inputfile) 621s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 621s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s parse_state = <translate.storage.poparser.ParseState object at 0x7162d7719400> 621s store = <translate.storage.pypo.pofile object at 0x7162d7719ee0> 621s 621s def parse_units(parse_state, store): 621s unit = parse_header(parse_state, store) 621s while unit: 621s unit.infer_state() 621s store.addunit(unit) 621s unit = parse_unit(parse_state) 621s if not parse_state.eof: 621s > raise PoParseError(parse_state) 621s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 621s 621s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 621s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 621s 621s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7162d8024d40> 621s 621s @pytest.mark.xfail(reason="Not Implemented") 621s def test_note_sanity(self): 621s > super().test_note_sanity() 621s 621s tests/translate/storage/test_subtitles.py:13: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7162d8024d40> 621s 621s def test_note_sanity(self): 621s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 621s unit = self.unit 621s 621s unit.addnote("Test note 1", origin="translator") 621s unit.addnote("Test note 2", origin="translator") 621s unit.addnote("Test note 3", origin="translator") 621s expected_notes = "Test note 1\nTest note 2\nTest note 3" 621s actual_notes = unit.getnotes(origin="translator") 621s > assert actual_notes == expected_notes 621s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 621s E 621s E - Test note 1 621s E - Test note 2 621s E - Test note 3 621s 621s tests/translate/storage/test_base.py:180: AssertionError 621s __________________________ TestCount.test_plurals_kde __________________________ 621s 621s self = <tests.translate.tools.test_pocount.TestCount object at 0x7162d84c3cb0> 621s 621s @mark.xfail(reason="Support commented out pending removal") 621s def test_plurals_kde(self): 621s """Test that we correcly count old style KDE plurals.""" 621s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 621s 621s tests/translate/tools/test_pocount.py:91: 621s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 621s 621s source = '_n: Singular\\n\nPlural', expectedsource = 2 621s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 621s 621s @staticmethod 621s def count(source, expectedsource, target=None, expectedtarget=None): 621s """Simple helper to check the respective word counts.""" 621s poelement = po.pounit(source) 621s if target is not None: 621s poelement.target = target 621s wordssource, wordstarget = pocount.wordsinunit(poelement) 621s print( 621s 'Source (expected=%d; actual=%d): "%s"' 621s % (expectedsource, wordssource, source) 621s ) 621s > assert wordssource == expectedsource 621s E assert 3 == 2 621s 621s tests/translate/tools/test_pocount.py:33: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s Source (expected=2; actual=3): "_n: Singular\n 621s Plural" 621s _________________________ TestPOMerge.test_escape_tabs _________________________ 621s 621s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x7162d8be6540> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_escape_tabs(self): 621s """Ensure that input tabs are escaped in the output, like gettext does.""" 621s # The strings below contains the tab character, not spaces. 621s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 621s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 621s expectedpo = r"""msgid "First\tSecond" 621s msgstr "Eerste\tTweede" 621s """ 621s pofile = self.mergestore(templatepo, mergepo) 621s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 621s > assert bytes(pofile).decode("utf-8") == expectedpo 621s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 621s E 621s E - msgid "First\tSecond" 621s E ? ^^ 621s E + msgid "First Second" 621s E ? ^ 621s E msgstr "Eerste\tTweede" 621s 621s tests/translate/tools/test_pomerge.py:349: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s Expected: 621s msgid "First\tSecond" 621s msgstr "Eerste\tTweede" 621s 621s 621s Merged: 621s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 621s __________________ TestPretranslate.test_merging_msgid_change __________________ 621s 621s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7162d8ba62a0> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_merging_msgid_change(self): 621s """ 621s tests that if the msgid changes but the location stays the same that 621s we merge. 621s """ 621s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 621s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 621s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 621s newpo = self.pretranslatepo(input_source, template_source) 621s print(bytes(newpo)) 621s > assert bytes(newpo).decode("utf-8") == poexpected 621s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 621s E 621s E #: simple.label 621s E #: simple.accesskey 621s E - #, fuzzy 621s E msgid "Its &hard coding a newline.\n" 621s E - msgstr "&Hart gekoeerde nuwe lyne\n" 621s E + msgstr "" 621s 621s tests/translate/tools/test_pretranslate.py:130: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 621s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 621s 621s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7162d8ba4320> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_merging_accelerator_changes(self): 621s """ 621s test that a change in the accelerator localtion still allows 621s merging. 621s """ 621s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 621s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 621s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 621s newpo = self.pretranslatepo(input_source, template_source) 621s print(bytes(newpo)) 621s > assert bytes(newpo).decode("utf-8") == poexpected 621s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 621s E 621s E #: someline.c 621s E msgid "A&bout" 621s E - msgstr "&Info" 621s E ? ----- 621s E + msgstr "" 621s 621s tests/translate/tools/test_pretranslate.py:185: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 621s _________________ TestPretranslate.test_lines_cut_differently __________________ 621s 621s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7162d8ba4e30> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_lines_cut_differently(self): 621s """ 621s Checks that the correct formatting is preserved when pot an po lines 621s differ. 621s """ 621s input_source = ( 621s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 621s ) 621s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 621s newpo = self.pretranslatepo(input_source, template_source) 621s newpounit = self.singleunit(newpo) 621s > assert str(newpounit) == template_source 621s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 621s E 621s E #: simple.label 621s E - msgid "Line" 621s E + msgid "Line split " 621s E ? +++++++ 621s E - " split differently" 621s E ? ------- 621s E + "differently" 621s E msgstr "Lyne verskillend gesny" 621s 621s tests/translate/tools/test_pretranslate.py:199: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s #: simple.label 621s msgid "Line split " 621s "differently" 621s msgstr "Lyne verskillend gesny" 621s 621s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 621s 621s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7162d8ba5430> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_merging_msgid_change(self): 621s """ 621s tests that if the msgid changes but the location stays the same that 621s we merge. 621s """ 621s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 621s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 621s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 621s newpo = self.pretranslatepo(input_source, template_source) 621s print(bytes(newpo)) 621s > assert bytes(newpo).decode("utf-8") == poexpected 621s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 621s E 621s E #: simple.label 621s E #: simple.accesskey 621s E - #, fuzzy 621s E msgid "Its &hard coding a newline.\n" 621s E - msgstr "&Hart gekoeerde nuwe lyne\n" 621s E + msgstr "" 621s 621s tests/translate/tools/test_pretranslate.py:130: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 621s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 621s 621s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7162d8ba5130> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_merging_accelerator_changes(self): 621s """ 621s test that a change in the accelerator localtion still allows 621s merging. 621s """ 621s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 621s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 621s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 621s newpo = self.pretranslatepo(input_source, template_source) 621s print(bytes(newpo)) 621s > assert bytes(newpo).decode("utf-8") == poexpected 621s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 621s E 621s E #: someline.c 621s E msgid "A&bout" 621s E - msgstr "&Info" 621s E ? ----- 621s E + msgstr "" 621s 621s tests/translate/tools/test_pretranslate.py:185: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 621s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 621s 621s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7162d8ba42c0> 621s 621s @mark.xfail(reason="Not Implemented") 621s def test_lines_cut_differently(self): 621s """ 621s Checks that the correct formatting is preserved when pot an po lines 621s differ. 621s """ 621s input_source = ( 621s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 621s ) 621s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 621s newpo = self.pretranslatepo(input_source, template_source) 621s newpounit = self.singleunit(newpo) 621s > assert str(newpounit) == template_source 621s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 621s E 621s E #: simple.label 621s E - msgid "Line" 621s E + msgid "Line split " 621s E ? +++++++ 621s E - " split differently" 621s E ? ------- 621s E + "differently" 621s E msgstr "Lyne verskillend gesny" 621s 621s tests/translate/tools/test_pretranslate.py:199: AssertionError 621s ----------------------------- Captured stdout call ----------------------------- 621s #: simple.label 621s msgid "Line split " 621s "differently" 621s msgstr "Lyne verskillend gesny" 621s 621s =============================== warnings summary =============================== 621s tests/translate/storage/test_cpo.py:15 621s Warning: 621s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 621s ImportError('gettext PO library not found') 621s In pytest 9.1 this warning will become an error by default. 621s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 621s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 621s 621s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 621s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.hX7g8F/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 621s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 621s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 621s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 621s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 621s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 621s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 621s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 621s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 621s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 621s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 621s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 621s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 621s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 621s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 621s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 621s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 621s Warning: Could not find accesskey for key.accesskey 621s 621s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 621s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 621s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 621s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 621s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 621s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.hX7g8F/autopkgtest_tmp/tests/translate/convert/test.idml'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 621s Warning: unclosed file <_io.BufferedReader name='translation.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 621s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 621s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 621s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 621s Warning: Could not find accesskey for prop.accesskey 621s 621s tests/translate/convert/test_po2tmx.py: 26 warnings 621s tests/translate/filters/test_pofilter.py: 13 warnings 621s tests/translate/storage/test_tbx.py: 17 warnings 621s tests/translate/storage/test_tmx.py: 24 warnings 621s 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' 621s 621s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 621s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 621s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 621s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 621s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 621s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 621s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 621s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 621s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 621s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 621s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 621s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 621s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.hX7g8F/autopkgtest_tmp/tests/translate/convert/test.odt'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 621s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 621s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 621s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 621s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 621s Enable tracemalloc to get traceback where the object was allocated. 621s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 621s 621s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 621s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 621s 621s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 621s Warning: DTD file '' does not validate 621s 621s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 621s --------------------------- snapshot report summary ---------------------------- 621s 23 snapshots passed. 621s =========================== short test summary info ============================ 621s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 621s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 621s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 621s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 621s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 621s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 621s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 621s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 621s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 621s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 621s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 621s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 621s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 621s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 621s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 621s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 621s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 621s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 621s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 621s 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. 621s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 621s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 621s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 621s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 621s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 621s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 621s 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 621s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 621s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 621s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 621s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 621s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 621s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 621s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 621s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 621s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 621s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 621s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 621s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 621s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 621s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 621s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 621s ========== 3273 passed, 3 skipped, 39 xfailed, 127 warnings in 19.44s ========== 622s autopkgtest [01:19:39]: test python3-translate-commands: -----------------------] 622s autopkgtest [01:19:39]: test python3-translate-commands: - - - - - - - - - - results - - - - - - - - - - 622s python3-translate-commands PASS 622s autopkgtest [01:19:39]: @@@@@@@@@@@@@@@@@@@@ summary 622s translate-toolkit PASS 622s python3-translate PASS 622s python3-translate-commands PASS 633s nova [W] Skipping flock for amd64 633s Creating nova instance adt-oracular-amd64-translate-toolkit-20240608-010917-juju-7f2275-prod-proposed-migration-environment-3-f5ac1732-46f2-479f-ac29-1c25d1bc86f2 from image adt/ubuntu-oracular-amd64-server-20240608.img (UUID c584088c-c855-4ca6-a835-cbd91bb3089c)... 633s nova [W] Skipping flock for amd64 633s Creating nova instance adt-oracular-amd64-translate-toolkit-20240608-010917-juju-7f2275-prod-proposed-migration-environment-3-f5ac1732-46f2-479f-ac29-1c25d1bc86f2 from image adt/ubuntu-oracular-amd64-server-20240608.img (UUID c584088c-c855-4ca6-a835-cbd91bb3089c)...