0s autopkgtest [01:23:22]: starting date and time: 2024-06-08 01:23:22+0000 0s autopkgtest [01:23:22]: git checkout: 433ed4cb Merge branch 'skia/nova_flock' into 'ubuntu/5.34+prod' 0s autopkgtest [01:23:22]: host juju-7f2275-prod-proposed-migration-environment-2; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.485h316t/out --timeout-copy=6000 -a i386 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:pytest --apt-upgrade translate-toolkit --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=pytest/8.2.2-1ubuntu1 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-2@lcy02-7.secgroup --name adt-oracular-i386-translate-toolkit-20240608-012322-juju-7f2275-prod-proposed-migration-environment-2-30cfb119-34b6-4f11-8ec7-46e19c675f1c --image adt/ubuntu-oracular-amd64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-2 --net-id=net_prod-proposed-migration -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 220s autopkgtest [01:27:02]: testbed dpkg architecture: amd64 220s autopkgtest [01:27:02]: testbed apt version: 2.9.3 220s autopkgtest [01:27:02]: test architecture: i386 220s autopkgtest [01:27:02]: @@@@@@@@@@@@@@@@@@@@ test bed setup 220s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 220s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 220s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [339 kB] 220s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2864 B] 220s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 220s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main i386 Packages [38.1 kB] 220s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/main amd64 Packages [66.4 kB] 220s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/restricted i386 Packages [9340 B] 220s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/restricted amd64 Packages [27.4 kB] 220s Get:10 http://ftpmaster.internal/ubuntu oracular-proposed/universe i386 Packages [126 kB] 220s Get:11 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 Packages [315 kB] 220s Get:12 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse amd64 Packages [11.7 kB] 220s Get:13 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse i386 Packages [3368 B] 220s Fetched 1102 kB in 0s (4658 kB/s) 220s Reading package lists... 222s Reading package lists... 222s Building dependency tree... 222s Reading state information... 223s Calculating upgrade... 223s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 223s Reading package lists... 223s Building dependency tree... 223s Reading state information... 224s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 224s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 224s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 224s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 224s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 225s Reading package lists... 225s Reading package lists... 226s Building dependency tree... 226s Reading state information... 226s Calculating upgrade... 226s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 226s Reading package lists... 227s Building dependency tree... 227s Reading state information... 227s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 228s autopkgtest [01:27:10]: testbed running kernel: Linux 6.8.0-31-generic #31-Ubuntu SMP PREEMPT_DYNAMIC Sat Apr 20 00:40:06 UTC 2024 228s autopkgtest [01:27:10]: @@@@@@@@@@@@@@@@@@@@ apt-source translate-toolkit 229s Get:1 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (dsc) [3172 B] 229s Get:2 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (tar) [1203 kB] 229s Get:3 http://ftpmaster.internal/ubuntu oracular/universe translate-toolkit 3.12.2-1ubuntu1 (diff) [24.4 kB] 230s gpgv: Signature made Wed Apr 10 14:04:46 2024 UTC 230s gpgv: using RSA key A62D2CFBD50B9B5BF360D54B159EB5C4EFC8774C 230s gpgv: Can't check signature: No public key 230s dpkg-source: warning: cannot verify inline signature for ./translate-toolkit_3.12.2-1ubuntu1.dsc: no acceptable signature found 230s autopkgtest [01:27:12]: testing package translate-toolkit version 3.12.2-1ubuntu1 230s autopkgtest [01:27:12]: build not needed 230s autopkgtest [01:27:12]: test translate-toolkit: preparing testbed 233s Note, using file '/tmp/autopkgtest.ut5eEf/1-autopkgtest-satdep.dsc' to get the build dependencies 233s Reading package lists... 233s Building dependency tree... 233s Reading state information... 233s Starting pkgProblemResolver with broken count: 0 233s Starting 2 pkgProblemResolver with broken count: 0 233s Done 234s The following NEW packages will be installed: 234s build-essential cpp cpp-13 cpp-13-x86-64-linux-gnu cpp-x86-64-linux-gnu 234s dictionaries-common emacsen-common g++ g++-13 g++-13-x86-64-linux-gnu 234s g++-x86-64-linux-gnu gcc gcc-13 gcc-13-base gcc-13-x86-64-linux-gnu 234s gcc-x86-64-linux-gnu gettext hunspell-en-us libapr1t64 libaprutil1t64 234s libasan8 libaspell15 libatomic1 libcc1-0 libenchant-2-2 libexttextcat-data 234s libgcc-13-dev libgomp1 libhunspell-1.7-0 libhwasan0 libisl23 libitm1 234s liblsan0 libmpc3 libquadmath0 libserf-1-1 libstdc++-13-dev libsvn1 libtsan2 234s libubsan1 libutf8proc3 libxapian30 libxslt1.1 python3-aeidon python3-bs4 234s python3-cheroot python3-dateutil python3-diff-match-patch python3-enchant 234s python3-iniparse python3-jaraco.functools python3-levenshtein python3-lxml 234s python3-mistletoe python3-more-itertools python3-phply python3-ply 234s python3-pycountry python3-rapidfuzz python3-ruamel.yaml 234s python3-ruamel.yaml.clib python3-simplejson python3-soupsieve 234s python3-translate python3-vobject python3-xapian subversion 234s translate-toolkit 234s 0 upgraded, 68 newly installed, 0 to remove and 0 not upgraded. 234s Need to get 73.2 MB of archives. 234s After this operation, 272 MB of additional disk space will be used. 234s Get:1 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc-13-base amd64 13.2.0-23ubuntu4 [49.0 kB] 234s Get:2 http://ftpmaster.internal/ubuntu oracular/main amd64 libisl23 amd64 0.26-3build1 [680 kB] 234s Get:3 http://ftpmaster.internal/ubuntu oracular/main amd64 libmpc3 amd64 1.3.1-1build1 [54.5 kB] 234s Get:4 http://ftpmaster.internal/ubuntu oracular/main amd64 cpp-13-x86-64-linux-gnu amd64 13.2.0-23ubuntu4 [11.2 MB] 234s Get:5 http://ftpmaster.internal/ubuntu oracular/main amd64 cpp-13 amd64 13.2.0-23ubuntu4 [1032 B] 234s Get:6 http://ftpmaster.internal/ubuntu oracular/main amd64 cpp-x86-64-linux-gnu amd64 4:13.2.0-7ubuntu1 [5326 B] 234s Get:7 http://ftpmaster.internal/ubuntu oracular/main amd64 cpp amd64 4:13.2.0-7ubuntu1 [22.4 kB] 234s Get:8 http://ftpmaster.internal/ubuntu oracular/main amd64 libcc1-0 amd64 14.1.0-1ubuntu1 [48.0 kB] 234s Get:9 http://ftpmaster.internal/ubuntu oracular/main amd64 libgomp1 amd64 14.1.0-1ubuntu1 [148 kB] 234s Get:10 http://ftpmaster.internal/ubuntu oracular/main amd64 libitm1 amd64 14.1.0-1ubuntu1 [29.1 kB] 234s Get:11 http://ftpmaster.internal/ubuntu oracular/main amd64 libatomic1 amd64 14.1.0-1ubuntu1 [10.4 kB] 234s Get:12 http://ftpmaster.internal/ubuntu oracular/main amd64 libasan8 amd64 14.1.0-1ubuntu1 [3025 kB] 234s Get:13 http://ftpmaster.internal/ubuntu oracular/main amd64 liblsan0 amd64 14.1.0-1ubuntu1 [1313 kB] 234s Get:14 http://ftpmaster.internal/ubuntu oracular/main amd64 libtsan2 amd64 14.1.0-1ubuntu1 [2736 kB] 234s Get:15 http://ftpmaster.internal/ubuntu oracular/main amd64 libubsan1 amd64 14.1.0-1ubuntu1 [1174 kB] 234s Get:16 http://ftpmaster.internal/ubuntu oracular/main amd64 libhwasan0 amd64 14.1.0-1ubuntu1 [1632 kB] 234s Get:17 http://ftpmaster.internal/ubuntu oracular/main amd64 libquadmath0 amd64 14.1.0-1ubuntu1 [153 kB] 234s Get:18 http://ftpmaster.internal/ubuntu oracular/main amd64 libgcc-13-dev amd64 13.2.0-23ubuntu4 [2688 kB] 234s Get:19 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc-13-x86-64-linux-gnu amd64 13.2.0-23ubuntu4 [21.9 MB] 234s Get:20 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc-13 amd64 13.2.0-23ubuntu4 [482 kB] 234s Get:21 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc-x86-64-linux-gnu amd64 4:13.2.0-7ubuntu1 [1212 B] 234s Get:22 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc amd64 4:13.2.0-7ubuntu1 [5018 B] 234s Get:23 http://ftpmaster.internal/ubuntu oracular/main amd64 libstdc++-13-dev amd64 13.2.0-23ubuntu4 [2399 kB] 234s Get:24 http://ftpmaster.internal/ubuntu oracular/main amd64 g++-13-x86-64-linux-gnu amd64 13.2.0-23ubuntu4 [12.5 MB] 234s Get:25 http://ftpmaster.internal/ubuntu oracular/main amd64 g++-13 amd64 13.2.0-23ubuntu4 [14.5 kB] 234s Get:26 http://ftpmaster.internal/ubuntu oracular/main amd64 g++-x86-64-linux-gnu amd64 4:13.2.0-7ubuntu1 [964 B] 234s Get:27 http://ftpmaster.internal/ubuntu oracular/main amd64 g++ amd64 4:13.2.0-7ubuntu1 [1100 B] 234s Get:28 http://ftpmaster.internal/ubuntu oracular/main amd64 build-essential amd64 12.10ubuntu1 [4928 B] 234s Get:29 http://ftpmaster.internal/ubuntu oracular/main amd64 emacsen-common all 3.0.5 [12.1 kB] 234s Get:30 http://ftpmaster.internal/ubuntu oracular/main amd64 dictionaries-common all 1.29.7 [188 kB] 234s Get:31 http://ftpmaster.internal/ubuntu oracular/main amd64 gettext amd64 0.21-14ubuntu2 [864 kB] 234s Get:32 http://ftpmaster.internal/ubuntu oracular/main amd64 hunspell-en-us all 1:2020.12.07-2 [280 kB] 234s Get:33 http://ftpmaster.internal/ubuntu oracular/main amd64 libapr1t64 amd64 1.7.2-3.2 [106 kB] 234s Get:34 http://ftpmaster.internal/ubuntu oracular/main amd64 libaprutil1t64 amd64 1.6.3-1.1ubuntu7 [91.9 kB] 234s Get:35 http://ftpmaster.internal/ubuntu oracular/main amd64 libaspell15 amd64 0.60.8.1-1build1 [323 kB] 234s Get:36 http://ftpmaster.internal/ubuntu oracular/main amd64 libhunspell-1.7-0 amd64 1.7.2+really1.7.2-10build3 [294 kB] 234s Get:37 http://ftpmaster.internal/ubuntu oracular/main amd64 libenchant-2-2 amd64 2.3.3-2build2 [51.4 kB] 234s Get:38 http://ftpmaster.internal/ubuntu oracular/main amd64 libexttextcat-data all 3.4.7-1build1 [193 kB] 234s Get:39 http://ftpmaster.internal/ubuntu oracular/universe amd64 libserf-1-1 amd64 1.3.10-2 [48.0 kB] 234s Get:40 http://ftpmaster.internal/ubuntu oracular/universe amd64 libutf8proc3 amd64 2.9.0-1build1 [70.6 kB] 234s Get:41 http://ftpmaster.internal/ubuntu oracular/universe amd64 libsvn1 amd64 1.14.3-1build4 [1345 kB] 234s Get:42 http://ftpmaster.internal/ubuntu oracular/universe amd64 libxapian30 amd64 1.4.22-1build1 [716 kB] 234s Get:43 http://ftpmaster.internal/ubuntu oracular/main amd64 libxslt1.1 amd64 1.1.39-0exp1build1 [167 kB] 234s Get:44 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-aeidon all 1.11-2 [221 kB] 234s Get:45 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-soupsieve all 2.5-1 [33.0 kB] 234s Get:46 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-bs4 all 4.12.3-1 [109 kB] 234s Get:47 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-more-itertools all 10.2.0-1 [52.9 kB] 234s Get:48 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-jaraco.functools all 4.0.0-1 [10.7 kB] 234s Get:49 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 234s Get:50 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-dateutil all 2.9.0-2 [80.3 kB] 234s Get:51 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-diff-match-patch all 20230430-1 [33.1 kB] 234s Get:52 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-enchant all 3.2.2-1 [34.0 kB] 234s Get:53 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-rapidfuzz amd64 3.6.2+ds-3 [2021 kB] 235s Get:54 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-levenshtein amd64 0.25.1-3 [120 kB] 235s Get:55 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-lxml amd64 5.2.1-1 [1243 kB] 235s Get:56 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-mistletoe all 1.3.0-1 [38.0 kB] 235s Get:57 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-ply all 3.11-6 [46.5 kB] 235s Get:58 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-phply all 1.2.6-1 [50.5 kB] 235s Get:59 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-ruamel.yaml.clib amd64 0.2.8-1build1 [132 kB] 235s Get:60 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 235s Get:61 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-simplejson amd64 3.19.2-1build2 [54.5 kB] 235s Get:62 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-translate all 3.12.2-1ubuntu1 [318 kB] 235s Get:63 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-vobject all 0.9.6.1-2 [40.6 kB] 235s Get:64 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-xapian amd64 1.4.22-1build5 [373 kB] 235s Get:65 http://ftpmaster.internal/ubuntu oracular/universe amd64 subversion amd64 1.14.3-1build4 [908 kB] 235s Get:66 http://ftpmaster.internal/ubuntu oracular/universe amd64 translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 235s Get:67 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-iniparse all 0.5-2 [20.0 kB] 235s Get:68 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 235s Preconfiguring packages ... 235s Fetched 73.2 MB in 1s (127 MB/s) 235s Selecting previously unselected package gcc-13-base:amd64. 235s (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.) 235s Preparing to unpack .../00-gcc-13-base_13.2.0-23ubuntu4_amd64.deb ... 235s Unpacking gcc-13-base:amd64 (13.2.0-23ubuntu4) ... 235s Selecting previously unselected package libisl23:amd64. 235s Preparing to unpack .../01-libisl23_0.26-3build1_amd64.deb ... 235s Unpacking libisl23:amd64 (0.26-3build1) ... 236s Selecting previously unselected package libmpc3:amd64. 236s Preparing to unpack .../02-libmpc3_1.3.1-1build1_amd64.deb ... 236s Unpacking libmpc3:amd64 (1.3.1-1build1) ... 236s Selecting previously unselected package cpp-13-x86-64-linux-gnu. 236s Preparing to unpack .../03-cpp-13-x86-64-linux-gnu_13.2.0-23ubuntu4_amd64.deb ... 236s Unpacking cpp-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 236s Selecting previously unselected package cpp-13. 236s Preparing to unpack .../04-cpp-13_13.2.0-23ubuntu4_amd64.deb ... 236s Unpacking cpp-13 (13.2.0-23ubuntu4) ... 236s Selecting previously unselected package cpp-x86-64-linux-gnu. 236s Preparing to unpack .../05-cpp-x86-64-linux-gnu_4%3a13.2.0-7ubuntu1_amd64.deb ... 236s Unpacking cpp-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 236s Selecting previously unselected package cpp. 236s Preparing to unpack .../06-cpp_4%3a13.2.0-7ubuntu1_amd64.deb ... 236s Unpacking cpp (4:13.2.0-7ubuntu1) ... 236s Selecting previously unselected package libcc1-0:amd64. 236s Preparing to unpack .../07-libcc1-0_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking libcc1-0:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package libgomp1:amd64. 236s Preparing to unpack .../08-libgomp1_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking libgomp1:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package libitm1:amd64. 236s Preparing to unpack .../09-libitm1_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking libitm1:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package libatomic1:amd64. 236s Preparing to unpack .../10-libatomic1_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking libatomic1:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package libasan8:amd64. 236s Preparing to unpack .../11-libasan8_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking libasan8:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package liblsan0:amd64. 236s Preparing to unpack .../12-liblsan0_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking liblsan0:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package libtsan2:amd64. 236s Preparing to unpack .../13-libtsan2_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking libtsan2:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package libubsan1:amd64. 236s Preparing to unpack .../14-libubsan1_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking libubsan1:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package libhwasan0:amd64. 236s Preparing to unpack .../15-libhwasan0_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking libhwasan0:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package libquadmath0:amd64. 236s Preparing to unpack .../16-libquadmath0_14.1.0-1ubuntu1_amd64.deb ... 236s Unpacking libquadmath0:amd64 (14.1.0-1ubuntu1) ... 236s Selecting previously unselected package libgcc-13-dev:amd64. 236s Preparing to unpack .../17-libgcc-13-dev_13.2.0-23ubuntu4_amd64.deb ... 236s Unpacking libgcc-13-dev:amd64 (13.2.0-23ubuntu4) ... 236s Selecting previously unselected package gcc-13-x86-64-linux-gnu. 236s Preparing to unpack .../18-gcc-13-x86-64-linux-gnu_13.2.0-23ubuntu4_amd64.deb ... 236s Unpacking gcc-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 237s Selecting previously unselected package gcc-13. 237s Preparing to unpack .../19-gcc-13_13.2.0-23ubuntu4_amd64.deb ... 237s Unpacking gcc-13 (13.2.0-23ubuntu4) ... 237s Selecting previously unselected package gcc-x86-64-linux-gnu. 237s Preparing to unpack .../20-gcc-x86-64-linux-gnu_4%3a13.2.0-7ubuntu1_amd64.deb ... 237s Unpacking gcc-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 237s Selecting previously unselected package gcc. 237s Preparing to unpack .../21-gcc_4%3a13.2.0-7ubuntu1_amd64.deb ... 237s Unpacking gcc (4:13.2.0-7ubuntu1) ... 237s Selecting previously unselected package libstdc++-13-dev:amd64. 237s Preparing to unpack .../22-libstdc++-13-dev_13.2.0-23ubuntu4_amd64.deb ... 237s Unpacking libstdc++-13-dev:amd64 (13.2.0-23ubuntu4) ... 237s Selecting previously unselected package g++-13-x86-64-linux-gnu. 237s Preparing to unpack .../23-g++-13-x86-64-linux-gnu_13.2.0-23ubuntu4_amd64.deb ... 237s Unpacking g++-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 237s Selecting previously unselected package g++-13. 237s Preparing to unpack .../24-g++-13_13.2.0-23ubuntu4_amd64.deb ... 237s Unpacking g++-13 (13.2.0-23ubuntu4) ... 238s Selecting previously unselected package g++-x86-64-linux-gnu. 238s Preparing to unpack .../25-g++-x86-64-linux-gnu_4%3a13.2.0-7ubuntu1_amd64.deb ... 238s Unpacking g++-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 238s Selecting previously unselected package g++. 238s Preparing to unpack .../26-g++_4%3a13.2.0-7ubuntu1_amd64.deb ... 238s Unpacking g++ (4:13.2.0-7ubuntu1) ... 238s Selecting previously unselected package build-essential. 238s Preparing to unpack .../27-build-essential_12.10ubuntu1_amd64.deb ... 238s Unpacking build-essential (12.10ubuntu1) ... 238s Selecting previously unselected package emacsen-common. 238s Preparing to unpack .../28-emacsen-common_3.0.5_all.deb ... 238s Unpacking emacsen-common (3.0.5) ... 238s Selecting previously unselected package dictionaries-common. 238s Preparing to unpack .../29-dictionaries-common_1.29.7_all.deb ... 238s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 238s Unpacking dictionaries-common (1.29.7) ... 238s Selecting previously unselected package gettext. 238s Preparing to unpack .../30-gettext_0.21-14ubuntu2_amd64.deb ... 238s Unpacking gettext (0.21-14ubuntu2) ... 238s Selecting previously unselected package hunspell-en-us. 238s Preparing to unpack .../31-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 238s Unpacking hunspell-en-us (1:2020.12.07-2) ... 238s Selecting previously unselected package libapr1t64:amd64. 238s Preparing to unpack .../32-libapr1t64_1.7.2-3.2_amd64.deb ... 238s Unpacking libapr1t64:amd64 (1.7.2-3.2) ... 238s Selecting previously unselected package libaprutil1t64:amd64. 238s Preparing to unpack .../33-libaprutil1t64_1.6.3-1.1ubuntu7_amd64.deb ... 238s Unpacking libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 238s Selecting previously unselected package libaspell15:amd64. 238s Preparing to unpack .../34-libaspell15_0.60.8.1-1build1_amd64.deb ... 238s Unpacking libaspell15:amd64 (0.60.8.1-1build1) ... 238s Selecting previously unselected package libhunspell-1.7-0:amd64. 238s Preparing to unpack .../35-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_amd64.deb ... 238s Unpacking libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 238s Selecting previously unselected package libenchant-2-2:amd64. 238s Preparing to unpack .../36-libenchant-2-2_2.3.3-2build2_amd64.deb ... 238s Unpacking libenchant-2-2:amd64 (2.3.3-2build2) ... 238s Selecting previously unselected package libexttextcat-data. 238s Preparing to unpack .../37-libexttextcat-data_3.4.7-1build1_all.deb ... 238s Unpacking libexttextcat-data (3.4.7-1build1) ... 238s Selecting previously unselected package libserf-1-1:amd64. 238s Preparing to unpack .../38-libserf-1-1_1.3.10-2_amd64.deb ... 238s Unpacking libserf-1-1:amd64 (1.3.10-2) ... 238s Selecting previously unselected package libutf8proc3:amd64. 238s Preparing to unpack .../39-libutf8proc3_2.9.0-1build1_amd64.deb ... 238s Unpacking libutf8proc3:amd64 (2.9.0-1build1) ... 238s Selecting previously unselected package libsvn1:amd64. 238s Preparing to unpack .../40-libsvn1_1.14.3-1build4_amd64.deb ... 238s Unpacking libsvn1:amd64 (1.14.3-1build4) ... 238s Selecting previously unselected package libxapian30:amd64. 238s Preparing to unpack .../41-libxapian30_1.4.22-1build1_amd64.deb ... 238s Unpacking libxapian30:amd64 (1.4.22-1build1) ... 238s Selecting previously unselected package libxslt1.1:amd64. 238s Preparing to unpack .../42-libxslt1.1_1.1.39-0exp1build1_amd64.deb ... 238s Unpacking libxslt1.1:amd64 (1.1.39-0exp1build1) ... 238s Selecting previously unselected package python3-aeidon. 238s Preparing to unpack .../43-python3-aeidon_1.11-2_all.deb ... 238s Unpacking python3-aeidon (1.11-2) ... 238s Selecting previously unselected package python3-soupsieve. 238s Preparing to unpack .../44-python3-soupsieve_2.5-1_all.deb ... 238s Unpacking python3-soupsieve (2.5-1) ... 238s Selecting previously unselected package python3-bs4. 238s Preparing to unpack .../45-python3-bs4_4.12.3-1_all.deb ... 238s Unpacking python3-bs4 (4.12.3-1) ... 238s Selecting previously unselected package python3-more-itertools. 238s Preparing to unpack .../46-python3-more-itertools_10.2.0-1_all.deb ... 238s Unpacking python3-more-itertools (10.2.0-1) ... 238s Selecting previously unselected package python3-jaraco.functools. 238s Preparing to unpack .../47-python3-jaraco.functools_4.0.0-1_all.deb ... 238s Unpacking python3-jaraco.functools (4.0.0-1) ... 238s Selecting previously unselected package python3-cheroot. 238s Preparing to unpack .../48-python3-cheroot_10.0.0+ds1-2_all.deb ... 238s Unpacking python3-cheroot (10.0.0+ds1-2) ... 238s Selecting previously unselected package python3-dateutil. 238s Preparing to unpack .../49-python3-dateutil_2.9.0-2_all.deb ... 238s Unpacking python3-dateutil (2.9.0-2) ... 238s Selecting previously unselected package python3-diff-match-patch. 238s Preparing to unpack .../50-python3-diff-match-patch_20230430-1_all.deb ... 238s Unpacking python3-diff-match-patch (20230430-1) ... 239s Selecting previously unselected package python3-enchant. 239s Preparing to unpack .../51-python3-enchant_3.2.2-1_all.deb ... 239s Unpacking python3-enchant (3.2.2-1) ... 239s Selecting previously unselected package python3-rapidfuzz. 239s Preparing to unpack .../52-python3-rapidfuzz_3.6.2+ds-3_amd64.deb ... 239s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 239s Selecting previously unselected package python3-levenshtein. 239s Preparing to unpack .../53-python3-levenshtein_0.25.1-3_amd64.deb ... 239s Unpacking python3-levenshtein (0.25.1-3) ... 239s Selecting previously unselected package python3-lxml:amd64. 239s Preparing to unpack .../54-python3-lxml_5.2.1-1_amd64.deb ... 239s Unpacking python3-lxml:amd64 (5.2.1-1) ... 239s Selecting previously unselected package python3-mistletoe. 239s Preparing to unpack .../55-python3-mistletoe_1.3.0-1_all.deb ... 239s Unpacking python3-mistletoe (1.3.0-1) ... 239s Selecting previously unselected package python3-ply. 239s Preparing to unpack .../56-python3-ply_3.11-6_all.deb ... 239s Unpacking python3-ply (3.11-6) ... 239s Selecting previously unselected package python3-phply. 239s Preparing to unpack .../57-python3-phply_1.2.6-1_all.deb ... 239s Unpacking python3-phply (1.2.6-1) ... 239s Selecting previously unselected package python3-ruamel.yaml.clib:amd64. 239s Preparing to unpack .../58-python3-ruamel.yaml.clib_0.2.8-1build1_amd64.deb ... 239s Unpacking python3-ruamel.yaml.clib:amd64 (0.2.8-1build1) ... 239s Selecting previously unselected package python3-ruamel.yaml. 239s Preparing to unpack .../59-python3-ruamel.yaml_0.17.21-1_all.deb ... 239s Unpacking python3-ruamel.yaml (0.17.21-1) ... 239s Selecting previously unselected package python3-simplejson. 239s Preparing to unpack .../60-python3-simplejson_3.19.2-1build2_amd64.deb ... 239s Unpacking python3-simplejson (3.19.2-1build2) ... 239s Selecting previously unselected package python3-translate. 239s Preparing to unpack .../61-python3-translate_3.12.2-1ubuntu1_all.deb ... 239s Unpacking python3-translate (3.12.2-1ubuntu1) ... 239s Selecting previously unselected package python3-vobject. 239s Preparing to unpack .../62-python3-vobject_0.9.6.1-2_all.deb ... 239s Unpacking python3-vobject (0.9.6.1-2) ... 239s Selecting previously unselected package python3-xapian. 239s Preparing to unpack .../63-python3-xapian_1.4.22-1build5_amd64.deb ... 239s Unpacking python3-xapian (1.4.22-1build5) ... 239s Selecting previously unselected package subversion. 239s Preparing to unpack .../64-subversion_1.14.3-1build4_amd64.deb ... 239s Unpacking subversion (1.14.3-1build4) ... 239s Selecting previously unselected package translate-toolkit. 239s Preparing to unpack .../65-translate-toolkit_3.12.2-1ubuntu1_all.deb ... 239s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 239s Selecting previously unselected package python3-iniparse. 239s Preparing to unpack .../66-python3-iniparse_0.5-2_all.deb ... 239s Unpacking python3-iniparse (0.5-2) ... 239s Selecting previously unselected package python3-pycountry. 239s Preparing to unpack .../67-python3-pycountry_23.12.11+ds1-2_all.deb ... 239s Unpacking python3-pycountry (23.12.11+ds1-2) ... 240s Setting up python3-more-itertools (10.2.0-1) ... 240s Setting up libxapian30:amd64 (1.4.22-1build1) ... 240s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 240s Setting up python3-diff-match-patch (20230430-1) ... 240s Setting up python3-jaraco.functools (4.0.0-1) ... 240s Setting up python3-aeidon (1.11-2) ... 240s Setting up libutf8proc3:amd64 (2.9.0-1build1) ... 240s Setting up libaspell15:amd64 (0.60.8.1-1build1) ... 240s Setting up python3-ply (3.11-6) ... 241s Setting up python3-ruamel.yaml.clib:amd64 (0.2.8-1build1) ... 241s Setting up libgomp1:amd64 (14.1.0-1ubuntu1) ... 241s Setting up python3-simplejson (3.19.2-1build2) ... 241s Setting up gcc-13-base:amd64 (13.2.0-23ubuntu4) ... 241s Setting up emacsen-common (3.0.5) ... 241s Setting up python3-cheroot (10.0.0+ds1-2) ... 241s Setting up libquadmath0:amd64 (14.1.0-1ubuntu1) ... 241s Setting up python3-pycountry (23.12.11+ds1-2) ... 241s Setting up python3-xapian (1.4.22-1build5) ... 241s Setting up libmpc3:amd64 (1.3.1-1build1) ... 241s Setting up libatomic1:amd64 (14.1.0-1ubuntu1) ... 241s Setting up libubsan1:amd64 (14.1.0-1ubuntu1) ... 241s Setting up python3-ruamel.yaml (0.17.21-1) ... 242s Setting up python3-mistletoe (1.3.0-1) ... 242s Setting up libhwasan0:amd64 (14.1.0-1ubuntu1) ... 242s Setting up libasan8:amd64 (14.1.0-1ubuntu1) ... 242s Setting up libexttextcat-data (3.4.7-1build1) ... 242s Setting up libapr1t64:amd64 (1.7.2-3.2) ... 242s Setting up libxslt1.1:amd64 (1.1.39-0exp1build1) ... 242s Setting up python3-dateutil (2.9.0-2) ... 242s Setting up python3-levenshtein (0.25.1-3) ... 242s Setting up libtsan2:amd64 (14.1.0-1ubuntu1) ... 242s Setting up libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 242s Setting up libisl23:amd64 (0.26-3build1) ... 242s Setting up python3-soupsieve (2.5-1) ... 242s Setting up python3-iniparse (0.5-2) ... 242s Setting up libcc1-0:amd64 (14.1.0-1ubuntu1) ... 242s Setting up liblsan0:amd64 (14.1.0-1ubuntu1) ... 242s Setting up libitm1:amd64 (14.1.0-1ubuntu1) ... 242s Setting up libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 242s Setting up python3-vobject (0.9.6.1-2) ... 243s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 243s patterns['name'] = '[a-zA-Z0-9\-_]+' 243s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 243s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 243s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 243s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 243s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 243s """ 243s Setting up gettext (0.21-14ubuntu2) ... 243s Setting up python3-phply (1.2.6-1) ... 243s Setting up dictionaries-common (1.29.7) ... 243s Setting up cpp-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 243s Setting up libserf-1-1:amd64 (1.3.10-2) ... 243s Setting up python3-bs4 (4.12.3-1) ... 243s Setting up libgcc-13-dev:amd64 (13.2.0-23ubuntu4) ... 243s Setting up python3-lxml:amd64 (5.2.1-1) ... 244s Setting up hunspell-en-us (1:2020.12.07-2) ... 244s Setting up libsvn1:amd64 (1.14.3-1build4) ... 244s Setting up libstdc++-13-dev:amd64 (13.2.0-23ubuntu4) ... 244s Setting up cpp-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 244s Setting up cpp-13 (13.2.0-23ubuntu4) ... 244s Setting up libenchant-2-2:amd64 (2.3.3-2build2) ... 244s Setting up gcc-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 244s Setting up subversion (1.14.3-1build4) ... 244s Setting up python3-enchant (3.2.2-1) ... 244s Setting up gcc-13 (13.2.0-23ubuntu4) ... 244s Setting up python3-translate (3.12.2-1ubuntu1) ... 244s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 244s Setting up cpp (4:13.2.0-7ubuntu1) ... 244s Setting up g++-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 244s Setting up gcc-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 244s Setting up gcc (4:13.2.0-7ubuntu1) ... 244s Setting up g++-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 244s Setting up g++-13 (13.2.0-23ubuntu4) ... 244s Setting up g++ (4:13.2.0-7ubuntu1) ... 244s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 244s Setting up build-essential (12.10ubuntu1) ... 244s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 244s Processing triggers for man-db (2.12.1-1) ... 246s Processing triggers for install-info (7.1-3build2) ... 246s Processing triggers for dictionaries-common (1.29.7) ... 247s Reading package lists... 247s Building dependency tree... 247s Reading state information... 248s Starting pkgProblemResolver with broken count: 0 248s Starting 2 pkgProblemResolver with broken count: 0 248s Done 249s The following NEW packages will be installed: 249s autopkgtest-satdep 249s 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 249s Need to get 0 B/700 B of archives. 249s After this operation, 0 B of additional disk space will be used. 249s Get:1 /tmp/autopkgtest.ut5eEf/2-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [700 B] 249s Selecting previously unselected package autopkgtest-satdep. 249s (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 ... 79042 files and directories currently installed.) 249s Preparing to unpack .../2-autopkgtest-satdep.deb ... 249s Unpacking autopkgtest-satdep (0) ... 249s Setting up autopkgtest-satdep (0) ... 249s autopkgtest: WARNING: package translate-toolkit:i386 is not installed though it should be 251s (Reading database ... 79042 files and directories currently installed.) 251s Removing autopkgtest-satdep (0) ... 251s autopkgtest [01:27:33]: test translate-toolkit: [----------------------- 251s ========= SMOKE TEST: /usr/bin/android2po =========== 251s Usage: android2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 251s 251s Convert Android string files to Gettext PO localization files. See: 251s http://docs.translatehouse.org/projects/translate- 251s toolkit/en/latest/commands/android2po.html for examples and usage 251s instructions. 251s 251s Options: 251s --version show program's version number and exit 251s -h, --help show this help message and exit 251s --manpage output a manpage based on the help 251s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 251s --errorlevel=ERRORLEVEL 251s show errorlevel as: none, message, exception, 251s traceback 251s -i INPUT, --input=INPUT 251s read from INPUT in xml format 251s -x EXCLUDE, --exclude=EXCLUDE 251s exclude names matching EXCLUDE from input paths 251s -o OUTPUT, --output=OUTPUT 251s write to OUTPUT in po, pot formats 251s -t TEMPLATE, --template=TEMPLATE 251s read from TEMPLATE in xml format 251s -S, --timestamp skip conversion if the output file has newer timestamp 251s --duplicates=DUPLICATESTYLE 251s what to do with duplicate strings (identical source 251s text): merge, msgctxt (default: 'msgctxt') 251s ========= SMOKE TEST: /usr/bin/build_tmdb =========== 252s usage: build_tmdb [-h] [-d TMDB_FILE] [-s SOURCE_LANG] -t TARGET_LANG 252s input files [input files ...] 252s 252s positional arguments: 252s input files 252s 252s options: 252s -h, --help show this help message and exit 252s -d TMDB_FILE, --tmdb TMDB_FILE 252s translation memory database file (default: tm.db) 252s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 252s source language of translation files (default: en) 252s -t TARGET_LANG, --import-target-lang TARGET_LANG 252s target language of translation files 252s ========= SMOKE TEST: /usr/bin/buildxpi =========== 252s usage: Usage: buildxpi.py [] [ ...] 252s 252s positional arguments: 252s langs 252s 252s options: 252s -h, --help show this help message and exit 252s -L L10NBASE, --l10n-base L10NBASE 252s The directory containing the subdirectory. 252s -o OUTPUTDIR, --output-dir OUTPUTDIR 252s The directory to copy the built XPI to (default: 252s current directory). 252s -p MOZPRODUCT, --mozproduct MOZPRODUCT 252s The Mozilla product name (default: "browser"). 252s -s SRCDIR, --src SRCDIR 252s The directory containing the Mozilla l10n sources. 252s -d, --delete-dest Delete output XPI if it already exists. 252s -v, --verbose Be more noisy 252s --soft-max-version Override a fixed max version with one to cover the 252s whole cycle e.g. 24.0a1 becomes 24.0.* 252s ========= SMOKE TEST: /usr/bin/csv2po =========== 252s 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] 252s 252s Convert Comma-Separated Value (.csv) files to Gettext PO localization files. 252s See: http://docs.translatehouse.org/projects/translate- 252s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 252s 252s Options: 252s --version show program's version number and exit 252s -h, --help show this help message and exit 252s --manpage output a manpage based on the help 252s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 252s --errorlevel=ERRORLEVEL 252s show errorlevel as: none, message, exception, 252s traceback 252s -i INPUT, --input=INPUT 252s read from INPUT in csv format 252s -x EXCLUDE, --exclude=EXCLUDE 252s exclude names matching EXCLUDE from input paths 252s -o OUTPUT, --output=OUTPUT 252s write to OUTPUT in po, pot formats 252s -t TEMPLATE, --template=TEMPLATE 252s read from TEMPLATE in po, pot, pot formats 252s -S, --timestamp skip conversion if the output file has newer timestamp 252s -P, --pot output PO Templates (.pot) rather than PO files (.po) 252s --charset=CHARSET set charset to decode from csv files 252s --columnorder=COLUMNORDER 252s specify the order and position of columns 252s (location,source,target) 252s --duplicates=DUPLICATESTYLE 252s what to do with duplicate strings (identical source 252s text): merge, msgctxt (default: 'msgctxt') 252s ========= SMOKE TEST: /usr/bin/csv2tbx =========== 252s Usage: csv2tbx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 252s 252s Convert Comma-Separated Value (.csv) files to a TermBase eXchange (.tbx) 252s glossary file. See: http://docs.translatehouse.org/projects/translate- 252s toolkit/en/latest/commands/csv2tbx.html for examples and usage instructions 252s 252s Options: 252s --version show program's version number and exit 252s -h, --help show this help message and exit 252s --manpage output a manpage based on the help 252s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 252s --errorlevel=ERRORLEVEL 252s show errorlevel as: none, message, exception, 252s traceback 252s -i INPUT, --input=INPUT 252s read from INPUT in csv format 252s -x EXCLUDE, --exclude=EXCLUDE 252s exclude names matching EXCLUDE from input paths 252s -o OUTPUT, --output=OUTPUT 252s write to OUTPUT in tbx format 252s -S, --timestamp skip conversion if the output file has newer timestamp 252s --charset=CHARSET set charset to decode from csv files 252s --columnorder=COLUMNORDER 252s specify the order and position of columns 252s (comment,source,target) 252s ========= SMOKE TEST: /usr/bin/dtd2po =========== 252s 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] 252s 252s Convert a Mozilla .dtd UTF-8 localization format to a Gettext PO localization 252s file. Uses the po and dtd modules, and the dtd2po convertor class which is in 252s this module You can convert back to .dtd using po2dtd.py. 252s 252s Options: 252s --version show program's version number and exit 252s -h, --help show this help message and exit 252s --manpage output a manpage based on the help 252s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 252s --errorlevel=ERRORLEVEL 252s show errorlevel as: none, message, exception, 252s traceback 252s -i INPUT, --input=INPUT 252s read from INPUT in dtd format 252s -x EXCLUDE, --exclude=EXCLUDE 252s exclude names matching EXCLUDE from input paths 252s -o OUTPUT, --output=OUTPUT 252s write to OUTPUT in po, pot formats 252s -t TEMPLATE, --template=TEMPLATE 252s read from TEMPLATE in dtd format 252s -S, --timestamp skip conversion if the output file has newer timestamp 252s -P, --pot output PO Templates (.pot) rather than PO files (.po) 252s --duplicates=DUPLICATESTYLE 252s what to do with duplicate strings (identical source 252s text): merge, msgctxt (default: 'msgctxt') 252s ========= SMOKE TEST: /usr/bin/flatxml2po =========== 252s Usage: flatxml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 252s 252s Convert flat XML files to Gettext PO localization files. See: 252s http://docs.translatehouse.org/projects/translate- 252s toolkit/en/latest/commands/flatxml2po.html for examples and usage 252s instructions. 252s 252s Options: 252s --version show program's version number and exit 252s -h, --help show this help message and exit 252s --manpage output a manpage based on the help 252s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 252s --errorlevel=ERRORLEVEL 252s show errorlevel as: none, message, exception, 252s traceback 252s -i INPUT, --input=INPUT 252s read from INPUT in xml format 252s -x EXCLUDE, --exclude=EXCLUDE 252s exclude names matching EXCLUDE from input paths 252s -o OUTPUT, --output=OUTPUT 252s write to OUTPUT in po, pot formats 252s -S, --timestamp skip conversion if the output file has newer timestamp 252s -r ROOT, --root=ROOT name of the XML root element (default: "root") 252s -v VALUE, --value=VALUE 252s name of the XML value element (default: "str") 252s -k KEY, --key=KEY name of the XML key attribute (default: "key") 252s -n NS, --namespace=NS 252s XML namespace uri (default: None) 253s ========= SMOKE TEST: /usr/bin/get_moz_enUS =========== 253s usage: get_moz_enUS [-h] [-s SRCDIR] [-d DESTDIR] [-p MOZPRODUCT] 253s [--delete-dest] [-v] 253s 253s options: 253s -h, --help show this help message and exit 253s -s SRCDIR, --src SRCDIR 253s The directory containing the Mozilla l10n sources. 253s -d DESTDIR, --dest DESTDIR 253s The destination directory to copy the en-US locale 253s files to. 253s -p MOZPRODUCT, --mozproduct MOZPRODUCT 253s The Mozilla product name. 253s --delete-dest Delete the destination directory (if it exists). 253s -v, --verbose Be more noisy 253s ========= SMOKE TEST: /usr/bin/html2po =========== 253s Usage: html2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 253s 253s Convert HTML files to Gettext PO localization files. See: 253s http://docs.translatehouse.org/projects/translate- 253s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 253s 253s Options: 253s --version show program's version number and exit 253s -h, --help show this help message and exit 253s --manpage output a manpage based on the help 253s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 253s --errorlevel=ERRORLEVEL 253s show errorlevel as: none, message, exception, 253s traceback 253s -i INPUT, --input=INPUT 253s read from INPUT in htm, html, xhtml formats 253s -x EXCLUDE, --exclude=EXCLUDE 253s exclude names matching EXCLUDE from input paths 253s -o OUTPUT, --output=OUTPUT 253s write to OUTPUT in po, pot formats 253s -S, --timestamp skip conversion if the output file has newer timestamp 253s -P, --pot output PO Templates (.pot) rather than PO files (.po) 253s --keepcomments preserve html comments as translation notes in the 253s output 253s --duplicates=DUPLICATESTYLE 253s what to do with duplicate strings (identical source 253s text): merge, msgctxt (default: 'msgctxt') 253s --multifile=MULTIFILESTYLE 253s how to split po/pot files (single, toplevel or 253s onefile) 253s ========= SMOKE TEST: /usr/bin/ical2po =========== 253s 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] 253s 253s Convert iCalendar files to Gettext PO localization files. See: 253s http://docs.translatehouse.org/projects/translate- 253s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 253s 253s Options: 253s --version show program's version number and exit 253s -h, --help show this help message and exit 253s --manpage output a manpage based on the help 253s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 253s --errorlevel=ERRORLEVEL 253s show errorlevel as: none, message, exception, 253s traceback 253s -i INPUT, --input=INPUT 253s read from INPUT in ics format 253s -x EXCLUDE, --exclude=EXCLUDE 253s exclude names matching EXCLUDE from input paths 253s -o OUTPUT, --output=OUTPUT 253s write to OUTPUT in po, pot formats 253s -t TEMPLATE, --template=TEMPLATE 253s read from TEMPLATE in ics format 253s -S, --timestamp skip conversion if the output file has newer timestamp 253s -P, --pot output PO Templates (.pot) rather than PO files (.po) 253s --duplicates=DUPLICATESTYLE 253s what to do with duplicate strings (identical source 253s text): merge, msgctxt (default: 'msgctxt') 253s ========= SMOKE TEST: /usr/bin/idml2po =========== 253s Usage: idml2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 253s 253s Convert IDML files to PO localization files. 253s 253s Options: 253s --version show program's version number and exit 253s -h, --help show this help message and exit 253s --manpage output a manpage based on the help 253s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 253s --errorlevel=ERRORLEVEL 253s show errorlevel as: none, message, exception, 253s traceback 253s -i INPUT, --input=INPUT 253s read from INPUT in idml format 253s -x EXCLUDE, --exclude=EXCLUDE 253s exclude names matching EXCLUDE from input paths 253s -o OUTPUT, --output=OUTPUT 253s write to OUTPUT in po, pot formats 253s -S, --timestamp skip conversion if the output file has newer timestamp 253s ========= SMOKE TEST: /usr/bin/ini2po =========== 254s 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] 254s 254s Convert .ini files to Gettext PO localization files. See: 254s http://docs.translatehouse.org/projects/translate- 254s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 254s 254s Options: 254s --version show program's version number and exit 254s -h, --help show this help message and exit 254s --manpage output a manpage based on the help 254s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 254s --errorlevel=ERRORLEVEL 254s show errorlevel as: none, message, exception, 254s traceback 254s -i INPUT, --input=INPUT 254s read from INPUT in ini, isl, iss formats 254s -x EXCLUDE, --exclude=EXCLUDE 254s exclude names matching EXCLUDE from input paths 254s -o OUTPUT, --output=OUTPUT 254s write to OUTPUT in po, pot formats 254s -t TEMPLATE, --template=TEMPLATE 254s read from TEMPLATE in ini, isl, iss formats 254s -S, --timestamp skip conversion if the output file has newer timestamp 254s -P, --pot output PO Templates (.pot) rather than PO files (.po) 254s --duplicates=DUPLICATESTYLE 254s what to do with duplicate strings (identical source 254s text): merge, msgctxt (default: 'msgctxt') 254s ========= SMOKE TEST: /usr/bin/json2po =========== 254s 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] 254s 254s Convert JSON files to Gettext PO localization files. See: 254s http://docs.translatehouse.org/projects/translate- 254s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 254s 254s Options: 254s --version show program's version number and exit 254s -h, --help show this help message and exit 254s --manpage output a manpage based on the help 254s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 254s --errorlevel=ERRORLEVEL 254s show errorlevel as: none, message, exception, 254s traceback 254s -i INPUT, --input=INPUT 254s read from INPUT in json format 254s -x EXCLUDE, --exclude=EXCLUDE 254s exclude names matching EXCLUDE from input paths 254s -o OUTPUT, --output=OUTPUT 254s write to OUTPUT in po, pot formats 254s -t TEMPLATE, --template=TEMPLATE 254s read from TEMPLATE in json format 254s -S, --timestamp skip conversion if the output file has newer timestamp 254s -P, --pot output PO Templates (.pot) rather than PO files (.po) 254s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 254s everything) 254s --duplicates=DUPLICATESTYLE 254s what to do with duplicate strings (identical source 254s text): merge, msgctxt (default: 'msgctxt') 254s ========= SMOKE TEST: /usr/bin/md2po =========== 254s Usage: md2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 254s 254s Convert Markdown files to Gettext PO localization files. See: 254s http://docs.translatehouse.org/projects/translate- 254s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 254s 254s Options: 254s --version show program's version number and exit 254s -h, --help show this help message and exit 254s --manpage output a manpage based on the help 254s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 254s --errorlevel=ERRORLEVEL 254s show errorlevel as: none, message, exception, 254s traceback 254s -i INPUT, --input=INPUT 254s read from INPUT in markdown, md, text, txt formats 254s -x EXCLUDE, --exclude=EXCLUDE 254s exclude names matching EXCLUDE from input paths 254s -o OUTPUT, --output=OUTPUT 254s write to OUTPUT in po, pot formats 254s -S, --timestamp skip conversion if the output file has newer timestamp 254s -P, --pot output PO Templates (.pot) rather than PO files (.po) 254s --duplicates=DUPLICATESTYLE 254s what to do with duplicate strings (identical source 254s text): merge, msgctxt (default: 'msgctxt') 254s --multifile=MULTIFILESTYLE 254s how to split po/pot files (single, toplevel or 254s onefile) 254s ========= SMOKE TEST: /usr/bin/moz2po =========== 255s 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] 255s 255s Convert Mozilla .dtd and .properties files to Gettext PO localization files. 255s See: http://docs.translatehouse.org/projects/translate- 255s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 255s 255s Options: 255s --version show program's version number and exit 255s -h, --help show this help message and exit 255s --manpage output a manpage based on the help 255s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 255s --errorlevel=ERRORLEVEL 255s show errorlevel as: none, message, exception, 255s traceback 255s -i INPUT, --input=INPUT 255s read from INPUT in *, dtd, inc, ini, it, js, lang, 255s manifest, properties, rdf formats 255s -x EXCLUDE, --exclude=EXCLUDE 255s exclude names matching EXCLUDE from input paths 255s -o OUTPUT, --output=OUTPUT 255s write to OUTPUT in *, dtd.po, dtd.pot, inc.po, 255s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 255s lang.pot, manifest, properties.po, properties.pot, rdf 255s formats 255s -t TEMPLATE, --template=TEMPLATE 255s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 255s manifest, properties, rdf formats 255s -S, --timestamp skip conversion if the output file has newer timestamp 255s -P, --pot output PO Templates (.pot) rather than PO files (.po) 255s --duplicates=DUPLICATESTYLE 255s what to do with duplicate strings (identical source 255s text): merge, msgctxt (default: 'msgctxt') 255s ========= SMOKE TEST: /usr/bin/mozlang2po =========== 255s Usage: mozlang2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 255s 255s Convert Mozilla .lang files to Gettext PO localization files. 255s 255s Options: 255s --version show program's version number and exit 255s -h, --help show this help message and exit 255s --manpage output a manpage based on the help 255s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 255s --errorlevel=ERRORLEVEL 255s show errorlevel as: none, message, exception, 255s traceback 255s -i INPUT, --input=INPUT 255s read from INPUT in lang format 255s -x EXCLUDE, --exclude=EXCLUDE 255s exclude names matching EXCLUDE from input paths 255s -o OUTPUT, --output=OUTPUT 255s write to OUTPUT in po, pot formats 255s -S, --timestamp skip conversion if the output file has newer timestamp 255s -P, --pot output PO Templates (.pot) rather than PO files (.po) 255s --encoding=ENCODING The encoding of the input file (default: UTF-8) 255s --duplicates=DUPLICATESTYLE 255s what to do with duplicate strings (identical source 255s text): merge, msgctxt (default: 'msgctxt') 255s ========= SMOKE TEST: /usr/bin/msghack =========== 255s Usage: /usr/bin/msghack [OPTION] file.po [ref.po] 255s This program can be used to alter .po files in ways no sane mind would think about. 255s -o result will be written to FILE 255s --invert invert a po file by switching msgid and msgstr 255s --master join any number of files in a master-formatted catalog 255s --empty empty the contents of the .po file, creating a .pot 255s --append append entries from ref.po that don't exist in file.po 255s 255s Note: It is just a replacement of msghack for backward support. 255s 255s ========= SMOKE TEST: /usr/bin/odf2xliff =========== 255s Usage: odf2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 255s 255s Convert OpenDocument (ODF) files to XLIFF localization files. See: 255s http://docs.translatehouse.org/projects/translate- 255s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 255s 255s Options: 255s --version show program's version number and exit 255s -h, --help show this help message and exit 255s --manpage output a manpage based on the help 255s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 255s --errorlevel=ERRORLEVEL 255s show errorlevel as: none, message, exception, 255s traceback 255s -i INPUT, --input=INPUT 255s read from INPUT in odc, odf, odg, odi, odm, odp, ods, 255s odt, otc, otf, otg, oth, oti, otp, ots, ott, sxw 255s formats 255s -x EXCLUDE, --exclude=EXCLUDE 255s exclude names matching EXCLUDE from input paths 255s -o OUTPUT, --output=OUTPUT 255s write to OUTPUT in xlf, xliff formats 255s -S, --timestamp skip conversion if the output file has newer timestamp 255s ========= SMOKE TEST: /usr/bin/oo2po =========== 255s Usage: oo2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 255s 255s Convert an OpenOffice.org (SDF) localization file to Gettext PO localization 255s files. See: http://docs.translatehouse.org/projects/translate- 255s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 255s 255s Options: 255s --version show program's version number and exit 255s -h, --help show this help message and exit 255s --manpage output a manpage based on the help 255s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 255s --errorlevel=ERRORLEVEL 255s show errorlevel as: none, message, exception, 255s traceback 255s -i INPUT, --input=INPUT 255s read from INPUT in oo, sdf formats 255s -x EXCLUDE, --exclude=EXCLUDE 255s exclude names matching EXCLUDE from input paths 255s -o OUTPUT, --output=OUTPUT 255s write to OUTPUT in po, pot formats 255s -S, --timestamp skip conversion if the output file has newer timestamp 255s -P, --pot output PO Templates (.pot) rather than PO files (.po) 255s -l LANG, --language=LANG 255s set target language to extract from oo file (e.g. af- 255s ZA) 255s --source-language=LANG 255s set source language code (default en-US) 255s --nonrecursiveinput don't treat the input oo as a recursive store 255s --duplicates=DUPLICATESTYLE 255s what to do with duplicate strings (identical source 255s text): merge, msgctxt (default: 'msgctxt') 255s --multifile=MULTIFILESTYLE 255s how to split po/pot files (single, toplevel or 255s onefile) 255s ========= SMOKE TEST: /usr/bin/oo2xliff =========== 255s Usage: oo2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 255s 255s Convert an OpenOffice.org (SDF) localization file to XLIFF localization 255s files. See: http://docs.translatehouse.org/projects/translate- 255s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 255s 255s Options: 255s --version show program's version number and exit 255s -h, --help show this help message and exit 255s --manpage output a manpage based on the help 255s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 255s --errorlevel=ERRORLEVEL 255s show errorlevel as: none, message, exception, 255s traceback 255s -i INPUT, --input=INPUT 255s read from INPUT in oo, sdf formats 255s -x EXCLUDE, --exclude=EXCLUDE 255s exclude names matching EXCLUDE from input paths 255s -o OUTPUT, --output=OUTPUT 255s write to OUTPUT in xlf, xliff formats 255s -S, --timestamp skip conversion if the output file has newer timestamp 255s -l LANG, --language=LANG 255s set target language to extract from oo file (e.g. af- 255s ZA) 255s --source-language=LANG 255s set source language code (default en-US) 255s --nonrecursiveinput don't treat the input oo as a recursive store 255s --duplicates=DUPLICATESTYLE 255s what to do with duplicate strings (identical source 255s text): merge, msgctxt (default: 'msgctxt') 255s --multifile=MULTIFILESTYLE 255s how to split po/pot files (single, toplevel or 255s onefile) 255s ========= SMOKE TEST: /usr/bin/php2po =========== 255s 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] 255s 255s Convert PHP localization files to Gettext PO localization files. See: 255s http://docs.translatehouse.org/projects/translate- 255s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 255s 255s Options: 255s --version show program's version number and exit 255s -h, --help show this help message and exit 255s --manpage output a manpage based on the help 255s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 255s --errorlevel=ERRORLEVEL 255s show errorlevel as: none, message, exception, 255s traceback 255s -i INPUT, --input=INPUT 255s read from INPUT in html, php formats 255s -x EXCLUDE, --exclude=EXCLUDE 255s exclude names matching EXCLUDE from input paths 255s -o OUTPUT, --output=OUTPUT 255s write to OUTPUT in po, pot formats 255s -t TEMPLATE, --template=TEMPLATE 255s read from TEMPLATE in html, php formats 255s -S, --timestamp skip conversion if the output file has newer timestamp 255s -P, --pot output PO Templates (.pot) rather than PO files (.po) 255s --duplicates=DUPLICATESTYLE 255s what to do with duplicate strings (identical source 255s text): merge, msgctxt (default: 'msgctxt') 256s ========= SMOKE TEST: /usr/bin/phppo2pypo =========== 256s Usage: phppo2pypo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 256s 256s Convert PHP format .po files to Python format .po files. 256s 256s Options: 256s --version show program's version number and exit 256s -h, --help show this help message and exit 256s --manpage output a manpage based on the help 256s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 256s --errorlevel=ERRORLEVEL 256s show errorlevel as: none, message, exception, 256s traceback 256s -i INPUT, --input=INPUT 256s read from INPUT in po, pot formats 256s -x EXCLUDE, --exclude=EXCLUDE 256s exclude names matching EXCLUDE from input paths 256s -o OUTPUT, --output=OUTPUT 256s write to OUTPUT in po, pot formats 256s -S, --timestamp skip conversion if the output file has newer timestamp 256s ========= SMOKE TEST: /usr/bin/po2csv =========== 256s Usage: po2csv [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 256s 256s Convert Gettext PO localization files to Comma-Separated Value (.csv) files. 256s See: http://docs.translatehouse.org/projects/translate- 256s toolkit/en/latest/commands/csv2po.html for examples and usage instructions. 256s 256s Options: 256s --version show program's version number and exit 256s -h, --help show this help message and exit 256s --manpage output a manpage based on the help 256s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 256s --errorlevel=ERRORLEVEL 256s show errorlevel as: none, message, exception, 256s traceback 256s -i INPUT, --input=INPUT 256s read from INPUT in po, pot formats 256s -x EXCLUDE, --exclude=EXCLUDE 256s exclude names matching EXCLUDE from input paths 256s -o OUTPUT, --output=OUTPUT 256s write to OUTPUT in csv format 256s -S, --timestamp skip conversion if the output file has newer timestamp 256s --columnorder=COLUMNORDER 256s specify the order and position of columns 256s (location,source,target) 256s ========= SMOKE TEST: /usr/bin/po2dtd =========== 256s Usage: po2dtd [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 256s 256s Converts a Gettext PO file to a UTF-8 encoded Mozilla .dtd file. .. note: 256s Conversion is either done using a template plus PO file or just using the 256s .po file. 256s 256s Options: 256s --version show program's version number and exit 256s -h, --help show this help message and exit 256s --manpage output a manpage based on the help 256s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 256s --errorlevel=ERRORLEVEL 256s show errorlevel as: none, message, exception, 256s traceback 256s -i INPUT, --input=INPUT 256s read from INPUT in po, pot formats 256s -x EXCLUDE, --exclude=EXCLUDE 256s exclude names matching EXCLUDE from input paths 256s -o OUTPUT, --output=OUTPUT 256s write to OUTPUT in dtd format 256s -t TEMPLATE, --template=TEMPLATE 256s read from TEMPLATE in dtd format 256s -S, --timestamp skip conversion if the output file has newer timestamp 256s --threshold=PERCENT only convert files where the translation completion is 256s above PERCENT 256s --fuzzy use translations marked fuzzy 256s --nofuzzy don't use translations marked fuzzy (default) 256s --removeuntranslated remove untranslated strings from output 256s ========= SMOKE TEST: /usr/bin/po2flatxml =========== 256s Usage: po2flatxml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 256s 256s Convert Gettext PO localization files to flat XML files. See: 256s http://docs.translatehouse.org/projects/translate- 256s toolkit/en/latest/commands/flatxml2po.html for examples and usage 256s instructions. 256s 256s Options: 256s --version show program's version number and exit 256s -h, --help show this help message and exit 256s --manpage output a manpage based on the help 256s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 256s --errorlevel=ERRORLEVEL 256s show errorlevel as: none, message, exception, 256s traceback 256s -i INPUT, --input=INPUT 256s read from INPUT in po, pot formats 256s -x EXCLUDE, --exclude=EXCLUDE 256s exclude names matching EXCLUDE from input paths 256s -o OUTPUT, --output=OUTPUT 256s write to OUTPUT in xml format 256s -t TEMPLATE, --template=TEMPLATE 256s read from TEMPLATE in xml format 256s -S, --timestamp skip conversion if the output file has newer timestamp 256s -r ROOT, --root=ROOT name of the XML root element (default: "root") 256s -v VALUE, --value=VALUE 256s name of the XML value element (default: "str") 256s -k KEY, --key=KEY name of the XML key attribute (default: "key") 256s -n NS, --namespace=NS 256s XML namespace uri (default: None) 256s -w INDENT, --indent=INDENT 256s indent width in spaces, 0 for no indent (default: 2) 256s ========= SMOKE TEST: /usr/bin/po2html =========== 256s Usage: po2html [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 256s 256s Translate HTML files using Gettext PO localization files. See: 256s http://docs.translatehouse.org/projects/translate- 256s toolkit/en/latest/commands/html2po.html for examples and usage instructions. 256s 256s Options: 256s --version show program's version number and exit 256s -h, --help show this help message and exit 256s --manpage output a manpage based on the help 256s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 256s --errorlevel=ERRORLEVEL 256s show errorlevel as: none, message, exception, 256s traceback 256s -i INPUT, --input=INPUT 256s read from INPUT in po, pot formats 256s -x EXCLUDE, --exclude=EXCLUDE 256s exclude names matching EXCLUDE from input paths 256s -o OUTPUT, --output=OUTPUT 256s write to OUTPUT in htm, html, xhtml formats 256s -t TEMPLATE, --template=TEMPLATE 256s read from TEMPLATE in htm, html, xhtml formats 256s -S, --timestamp skip conversion if the output file has newer timestamp 256s --threshold=PERCENT only convert files where the translation completion is 256s above PERCENT 256s --fuzzy use translations marked fuzzy 256s --nofuzzy don't use translations marked fuzzy (default) 256s ========= SMOKE TEST: /usr/bin/po2ical =========== 256s Usage: po2ical [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 256s 256s Convert Gettext PO localization files to iCalendar files. See: 256s http://docs.translatehouse.org/projects/translate- 256s toolkit/en/latest/commands/ical2po.html for examples and usage instructions. 256s 256s Options: 256s --version show program's version number and exit 256s -h, --help show this help message and exit 256s --manpage output a manpage based on the help 256s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 256s --errorlevel=ERRORLEVEL 256s show errorlevel as: none, message, exception, 256s traceback 256s -i INPUT, --input=INPUT 256s read from INPUT in po, pot formats 256s -x EXCLUDE, --exclude=EXCLUDE 256s exclude names matching EXCLUDE from input paths 256s -o OUTPUT, --output=OUTPUT 256s write to OUTPUT in ics format 256s -t TEMPLATE, --template=TEMPLATE 256s read from TEMPLATE in ics format 256s -S, --timestamp skip conversion if the output file has newer timestamp 256s --threshold=PERCENT only convert files where the translation completion is 256s above PERCENT 256s --fuzzy use translations marked fuzzy 256s --nofuzzy don't use translations marked fuzzy (default) 257s ========= SMOKE TEST: /usr/bin/po2idml =========== 257s Usage: po2idml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 257s 257s Takes an IDML template file and a PO file containing translations of strings 257s in the IDML template. It creates a new IDML file using the translations of the 257s PO file. 257s 257s Options: 257s --version show program's version number and exit 257s -h, --help show this help message and exit 257s --manpage output a manpage based on the help 257s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 257s --errorlevel=ERRORLEVEL 257s show errorlevel as: none, message, exception, 257s traceback 257s -i INPUT, --input=INPUT 257s read from INPUT in po, pot formats 257s -x EXCLUDE, --exclude=EXCLUDE 257s exclude names matching EXCLUDE from input paths 257s -o OUTPUT, --output=OUTPUT 257s write to OUTPUT in idml format 257s -t TEMPLATE, --template=TEMPLATE 257s read from TEMPLATE in idml format 257s -S, --timestamp skip conversion if the output file has newer timestamp 257s ========= SMOKE TEST: /usr/bin/po2ini =========== 257s Usage: po2ini [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 257s 257s Convert Gettext PO localization files to .ini files. See: 257s http://docs.translatehouse.org/projects/translate- 257s toolkit/en/latest/commands/ini2po.html for examples and usage instructions. 257s 257s Options: 257s --version show program's version number and exit 257s -h, --help show this help message and exit 257s --manpage output a manpage based on the help 257s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 257s --errorlevel=ERRORLEVEL 257s show errorlevel as: none, message, exception, 257s traceback 257s -i INPUT, --input=INPUT 257s read from INPUT in po, pot formats 257s -x EXCLUDE, --exclude=EXCLUDE 257s exclude names matching EXCLUDE from input paths 257s -o OUTPUT, --output=OUTPUT 257s write to OUTPUT in ini, isl formats 257s -t TEMPLATE, --template=TEMPLATE 257s read from TEMPLATE in ini, isl formats 257s -S, --timestamp skip conversion if the output file has newer timestamp 257s --threshold=PERCENT only convert files where the translation completion is 257s above PERCENT 257s --fuzzy use translations marked fuzzy 257s --nofuzzy don't use translations marked fuzzy (default) 257s ========= SMOKE TEST: /usr/bin/po2json =========== 257s Usage: po2json [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 257s 257s Convert Gettext PO localization files to JSON files. See: 257s http://docs.translatehouse.org/projects/translate- 257s toolkit/en/latest/commands/json2po.html for examples and usage instructions. 257s 257s Options: 257s --version show program's version number and exit 257s -h, --help show this help message and exit 257s --manpage output a manpage based on the help 257s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 257s --errorlevel=ERRORLEVEL 257s show errorlevel as: none, message, exception, 257s traceback 257s -i INPUT, --input=INPUT 257s read from INPUT in po, pot formats 257s -x EXCLUDE, --exclude=EXCLUDE 257s exclude names matching EXCLUDE from input paths 257s -o OUTPUT, --output=OUTPUT 257s write to OUTPUT in json format 257s -t TEMPLATE, --template=TEMPLATE 257s read from TEMPLATE in json format 257s -S, --timestamp skip conversion if the output file has newer timestamp 257s --threshold=PERCENT only convert files where the translation completion is 257s above PERCENT 257s --fuzzy use translations marked fuzzy 257s --nofuzzy don't use translations marked fuzzy (default) 257s --removeuntranslated remove untranslated strings from output 257s ========= SMOKE TEST: /usr/bin/po2md =========== 257s Usage: po2md [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 257s 257s Translate Markdown files using Gettext PO localization files. See: 257s http://docs.translatehouse.org/projects/translate- 257s toolkit/en/latest/commands/md2po.html for examples and usage instructions. 257s 257s Options: 257s --version show program's version number and exit 257s -h, --help show this help message and exit 257s --manpage output a manpage based on the help 257s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 257s --errorlevel=ERRORLEVEL 257s show errorlevel as: none, message, exception, 257s traceback 257s -i INPUT, --input=INPUT 257s read from INPUT in po, pot formats 257s -x EXCLUDE, --exclude=EXCLUDE 257s exclude names matching EXCLUDE from input paths 257s -o OUTPUT, --output=OUTPUT 257s write to OUTPUT in markdown, md, text, txt formats 257s -t TEMPLATE, --template=TEMPLATE 257s read from TEMPLATE in markdown, md, text, txt formats 257s -S, --timestamp skip conversion if the output file has newer timestamp 257s -m MAXLENGTH, --maxlinelength=MAXLENGTH 257s reflow (word wrap) the output to the given maximum 257s line length. set to 0 to disable 257s --threshold=PERCENT only convert files where the translation completion is 257s above PERCENT 257s --fuzzy use translations marked fuzzy 257s --nofuzzy don't use translations marked fuzzy (default) 258s ========= SMOKE TEST: /usr/bin/po2moz =========== 258s Usage: po2moz [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 258s 258s Convert Gettext PO localization files to Mozilla .dtd and .properties files. 258s See: http://docs.translatehouse.org/projects/translate- 258s toolkit/en/latest/commands/moz2po.html for examples and usage instructions. 258s 258s Options: 258s --version show program's version number and exit 258s -h, --help show this help message and exit 258s --manpage output a manpage based on the help 258s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 258s --errorlevel=ERRORLEVEL 258s show errorlevel as: none, message, exception, 258s traceback 258s -i INPUT, --input=INPUT 258s read from INPUT in *, dtd.po, dtd.pot, inc.po, 258s inc.pot, ini.po, ini.pot, it.po, it.pot, js, lang.po, 258s lang.pot, manifest, properties.po, properties.pot, rdf 258s formats 258s -x EXCLUDE, --exclude=EXCLUDE 258s exclude names matching EXCLUDE from input paths 258s -o OUTPUT, --output=OUTPUT 258s write to OUTPUT in *, dtd, inc, ini, it, js, lang, 258s manifest, properties, rdf formats 258s -t TEMPLATE, --template=TEMPLATE 258s read from TEMPLATE in *, dtd, inc, ini, it, js, lang, 258s manifest, properties, rdf formats 258s -S, --timestamp skip conversion if the output file has newer timestamp 258s -l LOCALE, --locale=LOCALE 258s set output locale (required as this sets the directory 258s names) 258s --threshold=PERCENT only convert files where the translation completion is 258s above PERCENT 258s --fuzzy use translations marked fuzzy 258s --nofuzzy don't use translations marked fuzzy (default) 258s --removeuntranslated remove untranslated strings from output 258s ========= SMOKE TEST: /usr/bin/po2mozlang =========== 258s Usage: po2mozlang [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 258s 258s Convert Gettext PO localization files to Mozilla .lang files. 258s 258s Options: 258s --version show program's version number and exit 258s -h, --help show this help message and exit 258s --manpage output a manpage based on the help 258s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 258s --errorlevel=ERRORLEVEL 258s show errorlevel as: none, message, exception, 258s traceback 258s -i INPUT, --input=INPUT 258s read from INPUT in po, pot formats 258s -x EXCLUDE, --exclude=EXCLUDE 258s exclude names matching EXCLUDE from input paths 258s -o OUTPUT, --output=OUTPUT 258s write to OUTPUT in lang format 258s -t TEMPLATE, --template=TEMPLATE 258s read from TEMPLATE in lang format 258s -S, --timestamp skip conversion if the output file has newer timestamp 258s --mark-active mark the file as active 258s --threshold=PERCENT only convert files where the translation completion is 258s above PERCENT 258s --fuzzy use translations marked fuzzy 258s --nofuzzy don't use translations marked fuzzy (default) 258s ========= SMOKE TEST: /usr/bin/po2oo =========== 258s Usage: po2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 258s 258s Convert Gettext PO localization files to an OpenOffice.org (SDF) localization 258s file. See: http://docs.translatehouse.org/projects/translate- 258s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 258s 258s Options: 258s --version show program's version number and exit 258s -h, --help show this help message and exit 258s --manpage output a manpage based on the help 258s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 258s --errorlevel=ERRORLEVEL 258s show errorlevel as: none, message, exception, 258s traceback 258s -i INPUT, --input=INPUT 258s read from INPUT in po, pot, xlf, xliff formats 258s -x EXCLUDE, --exclude=EXCLUDE 258s exclude names matching EXCLUDE from input paths 258s -o OUTPUT, --output=OUTPUT 258s write to OUTPUT in oo, sdf formats 258s -t TEMPLATE, --template=TEMPLATE 258s read from TEMPLATE in oo, sdf formats 258s -S, --timestamp skip conversion if the output file has newer timestamp 258s -l LANG, --language=LANG 258s set target language code (e.g. af-ZA) [required] 258s --source-language=LANG 258s set source language code (default en-US) 258s -T, --keeptimestamp don't change the timestamps of the strings 258s --nonrecursiveoutput don't treat the output oo as a recursive store 258s --nonrecursivetemplate 258s don't treat the template oo as a recursive store 258s --skipsource don't output the source language, but fallback to it 258s where needed 258s --filteraction=ACTION 258s action on pofilter failure: none (default), warn, 258s exclude-serious, exclude-all 258s --threshold=PERCENT only convert files where the translation completion is 258s above PERCENT 258s --fuzzy use translations marked fuzzy 258s --nofuzzy don't use translations marked fuzzy (default) 258s --multifile=MULTIFILESTYLE 258s how to split po/pot files (single, toplevel or 258s onefile) 258s ========= SMOKE TEST: /usr/bin/po2php =========== 258s Usage: po2php [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 258s 258s Convert Gettext PO localization files to PHP localization files. See: 258s http://docs.translatehouse.org/projects/translate- 258s toolkit/en/latest/commands/php2po.html for examples and usage instructions. 258s 258s Options: 258s --version show program's version number and exit 258s -h, --help show this help message and exit 258s --manpage output a manpage based on the help 258s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 258s --errorlevel=ERRORLEVEL 258s show errorlevel as: none, message, exception, 258s traceback 258s -i INPUT, --input=INPUT 258s read from INPUT in po, pot formats 258s -x EXCLUDE, --exclude=EXCLUDE 258s exclude names matching EXCLUDE from input paths 258s -o OUTPUT, --output=OUTPUT 258s write to OUTPUT in html, php formats 258s -t TEMPLATE, --template=TEMPLATE 258s read from TEMPLATE in html, php formats 258s -S, --timestamp skip conversion if the output file has newer timestamp 258s --threshold=PERCENT only convert files where the translation completion is 258s above PERCENT 258s --fuzzy use translations marked fuzzy 258s --nofuzzy don't use translations marked fuzzy (default) 258s ========= SMOKE TEST: /usr/bin/po2prop =========== 258s Usage: po2prop [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 258s 258s Convert Gettext PO localization files to Java/Mozilla .properties files. 258s See: http://docs.translatehouse.org/projects/translate- 258s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 258s 258s Options: 258s --version show program's version number and exit 258s -h, --help show this help message and exit 258s --manpage output a manpage based on the help 258s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 258s --errorlevel=ERRORLEVEL 258s show errorlevel as: none, message, exception, 258s traceback 258s -i INPUT, --input=INPUT 258s read from INPUT in po, pot formats 258s -x EXCLUDE, --exclude=EXCLUDE 258s exclude names matching EXCLUDE from input paths 258s -o OUTPUT, --output=OUTPUT 258s write to OUTPUT in lang, properties, strings formats 258s -t TEMPLATE, --template=TEMPLATE 258s read from TEMPLATE in lang, properties, strings 258s formats 258s -S, --timestamp skip conversion if the output file has newer timestamp 258s --personality=TYPE override the input file format: java, java-utf8, java- 258s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 258s strings, strings-utf8, joomla (for .properties files, 258s default: java) 258s --encoding=ENCODING override the encoding set by the personality 258s --threshold=PERCENT only convert files where the translation completion is 258s above PERCENT 258s --fuzzy use translations marked fuzzy 258s --nofuzzy don't use translations marked fuzzy (default) 258s --removeuntranslated remove untranslated strings from output 259s ========= SMOKE TEST: /usr/bin/po2rc =========== 259s Usage: po2rc [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 259s 259s Convert Gettext PO localization files back to Windows Resource (.rc) files. 259s See: http://docs.translatehouse.org/projects/translate- 259s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 259s 259s Options: 259s --version show program's version number and exit 259s -h, --help show this help message and exit 259s --manpage output a manpage based on the help 259s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 259s --errorlevel=ERRORLEVEL 259s show errorlevel as: none, message, exception, 259s traceback 259s -i INPUT, --input=INPUT 259s read from INPUT in po, pot formats 259s -x EXCLUDE, --exclude=EXCLUDE 259s exclude names matching EXCLUDE from input paths 259s -o OUTPUT, --output=OUTPUT 259s write to OUTPUT in rc format 259s -t TEMPLATE, --template=TEMPLATE 259s read from TEMPLATE in rc format 259s -S, --timestamp skip conversion if the output file has newer timestamp 259s --charset=CHARSET charset to use to decode the RC files (default: utf-8) 259s -l LANG, --lang=LANG LANG entry 259s --sublang=SUBLANG SUBLANG entry (default: SUBLANG_DEFAULT) 259s --threshold=PERCENT only convert files where the translation completion is 259s above PERCENT 259s --fuzzy use translations marked fuzzy 259s --nofuzzy don't use translations marked fuzzy (default) 259s ========= SMOKE TEST: /usr/bin/po2resx =========== 259s Usage: po2resx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 259s 259s Convert Gettext PO localisation files to .Net Resource (.resx) files. See: 259s http://docs.translatehouse.org/projects/translate- 259s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 259s 259s Options: 259s --version show program's version number and exit 259s -h, --help show this help message and exit 259s --manpage output a manpage based on the help 259s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 259s --errorlevel=ERRORLEVEL 259s show errorlevel as: none, message, exception, 259s traceback 259s -i INPUT, --input=INPUT 259s read from INPUT in po, pot formats 259s -x EXCLUDE, --exclude=EXCLUDE 259s exclude names matching EXCLUDE from input paths 259s -o OUTPUT, --output=OUTPUT 259s write to OUTPUT in resx format 259s -t TEMPLATE, --template=TEMPLATE 259s read from TEMPLATE in resx format 259s -S, --timestamp skip conversion if the output file has newer timestamp 259s --fuzzy use translations marked fuzzy 259s --nofuzzy don't use translations marked fuzzy (default) 259s ========= SMOKE TEST: /usr/bin/po2sub =========== 259s Usage: po2sub [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 259s 259s Convert Gettext PO localization files to subtitle files. See: 259s http://docs.translatehouse.org/projects/translate- 259s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 259s 259s Options: 259s --version show program's version number and exit 259s -h, --help show this help message and exit 259s --manpage output a manpage based on the help 259s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 259s --errorlevel=ERRORLEVEL 259s show errorlevel as: none, message, exception, 259s traceback 259s -i INPUT, --input=INPUT 259s read from INPUT in po, pot formats 259s -x EXCLUDE, --exclude=EXCLUDE 259s exclude names matching EXCLUDE from input paths 259s -o OUTPUT, --output=OUTPUT 259s write to OUTPUT in ass, srt, ssa, sub formats 259s -t TEMPLATE, --template=TEMPLATE 259s read from TEMPLATE in ass, srt, ssa, sub formats 259s -S, --timestamp skip conversion if the output file has newer timestamp 259s --threshold=PERCENT only convert files where the translation completion is 259s above PERCENT 259s --fuzzy use translations marked fuzzy 259s --nofuzzy don't use translations marked fuzzy (default) 259s ========= SMOKE TEST: /usr/bin/po2symb =========== 259s Usage: po2symb [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 259s 259s Convert Gettext PO localization files to Symbian translation files. See: 259s http://docs.translatehouse.org/projects/translate- 259s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 259s 259s Options: 259s --version show program's version number and exit 259s -h, --help show this help message and exit 259s --manpage output a manpage based on the help 259s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 259s --errorlevel=ERRORLEVEL 259s show errorlevel as: none, message, exception, 259s traceback 259s -i INPUT, --input=INPUT 259s read from INPUT in po, pot formats 259s -x EXCLUDE, --exclude=EXCLUDE 259s exclude names matching EXCLUDE from input paths 259s -o OUTPUT, --output=OUTPUT 259s write to OUTPUT in r0 format 259s -t TEMPLATE, --template=TEMPLATE 259s read from TEMPLATE in 259s -S, --timestamp skip conversion if the output file has newer timestamp 259s --duplicates=DUPLICATESTYLE 259s what to do with duplicate strings (identical source 259s text): merge, msgctxt (default: 'msgctxt') 259s ========= SMOKE TEST: /usr/bin/po2tiki =========== 259s Usage: po2tiki [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 259s 259s Convert Gettext PO files to TikiWiki's language.php files. See: 259s http://docs.translatehouse.org/projects/translate- 259s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 259s 259s Options: 259s --version show program's version number and exit 259s -h, --help show this help message and exit 259s --manpage output a manpage based on the help 259s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 259s --errorlevel=ERRORLEVEL 259s show errorlevel as: none, message, exception, 259s traceback 259s -i INPUT, --input=INPUT 259s read from INPUT in po, pot formats 259s -x EXCLUDE, --exclude=EXCLUDE 259s exclude names matching EXCLUDE from input paths 259s -o OUTPUT, --output=OUTPUT 259s write to OUTPUT in tiki format 259s -S, --timestamp skip conversion if the output file has newer timestamp 259s ========= SMOKE TEST: /usr/bin/po2tmx =========== 259s Usage: po2tmx [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 259s 259s Convert Gettext PO localization files to a TMX (Translation Memory eXchange) 259s file. See: http://docs.translatehouse.org/projects/translate- 259s toolkit/en/latest/commands/po2tmx.html for examples and usage instructions. 259s 259s Options: 259s --version show program's version number and exit 259s -h, --help show this help message and exit 259s --manpage output a manpage based on the help 259s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 259s --errorlevel=ERRORLEVEL 259s show errorlevel as: none, message, exception, 259s traceback 259s -i INPUT, --input=INPUT 259s read from INPUT in po, pot formats 259s -x EXCLUDE, --exclude=EXCLUDE 259s exclude names matching EXCLUDE from input paths 259s -o OUTPUT, --output=OUTPUT 259s write to OUTPUT in tmx format 259s -S, --timestamp skip conversion if the output file has newer timestamp 259s -l LANG, --language=LANG 259s set target language code (e.g. af-ZA) [required] 259s --source-language=LANG 259s set source language code (default: en) 259s --comments=COMMENT set default comment import: none, source, type or 259s others (default: none) 260s ========= SMOKE TEST: /usr/bin/po2ts =========== 260s Usage: po2ts [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 260s 260s Convert Gettext PO localization files to Qt Linguist (.ts) files. See: 260s http://docs.translatehouse.org/projects/translate- 260s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 260s 260s Options: 260s --version show program's version number and exit 260s -h, --help show this help message and exit 260s --manpage output a manpage based on the help 260s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 260s --errorlevel=ERRORLEVEL 260s show errorlevel as: none, message, exception, 260s traceback 260s -i INPUT, --input=INPUT 260s read from INPUT in po, pot formats 260s -x EXCLUDE, --exclude=EXCLUDE 260s exclude names matching EXCLUDE from input paths 260s -o OUTPUT, --output=OUTPUT 260s write to OUTPUT in ts format 260s -t TEMPLATE, --template=TEMPLATE 260s read from TEMPLATE in ts format 260s -S, --timestamp skip conversion if the output file has newer timestamp 260s -c CONTEXT, --context=CONTEXT 260s use supplied context instead of the one in the .po 260s file comment 260s ========= SMOKE TEST: /usr/bin/po2txt =========== 260s Usage: po2txt [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 260s 260s Convert Gettext PO localization files to plain text (.txt) files. See: 260s http://docs.translatehouse.org/projects/translate- 260s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 260s 260s Options: 260s --version show program's version number and exit 260s -h, --help show this help message and exit 260s --manpage output a manpage based on the help 260s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 260s --errorlevel=ERRORLEVEL 260s show errorlevel as: none, message, exception, 260s traceback 260s -i INPUT, --input=INPUT 260s read from INPUT in po, pot, xlf, xliff formats 260s -x EXCLUDE, --exclude=EXCLUDE 260s exclude names matching EXCLUDE from input paths 260s -o OUTPUT, --output=OUTPUT 260s write to OUTPUT in txt format 260s -t TEMPLATE, --template=TEMPLATE 260s read from TEMPLATE in txt format 260s -S, --timestamp skip conversion if the output file has newer timestamp 260s --encoding=ENCODING The encoding of the template file (default: UTF-8) 260s -w WRAP, --wrap=WRAP set number of columns to wrap text at 260s --threshold=PERCENT only convert files where the translation completion is 260s above PERCENT 260s --fuzzy use translations marked fuzzy 260s --nofuzzy don't use translations marked fuzzy (default) 260s ========= SMOKE TEST: /usr/bin/po2web2py =========== 260s Usage: po2web2py [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 260s 260s Convert GNU/gettext PO files to web2py translation dictionaries (.py). See: 260s http://docs.translatehouse.org/projects/translate- 260s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 260s 260s Options: 260s --version show program's version number and exit 260s -h, --help show this help message and exit 260s --manpage output a manpage based on the help 260s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 260s --errorlevel=ERRORLEVEL 260s show errorlevel as: none, message, exception, 260s traceback 260s -i INPUT, --input=INPUT 260s read from INPUT in po, pot formats 260s -x EXCLUDE, --exclude=EXCLUDE 260s exclude names matching EXCLUDE from input paths 260s -o OUTPUT, --output=OUTPUT 260s write to OUTPUT in py format 260s -S, --timestamp skip conversion if the output file has newer timestamp 260s --threshold=PERCENT only convert files where the translation completion is 260s above PERCENT 260s --fuzzy use translations marked fuzzy 260s --nofuzzy don't use translations marked fuzzy (default) 260s ========= SMOKE TEST: /usr/bin/po2wordfast =========== 260s Usage: po2wordfast [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 260s 260s Convert Gettext PO localization files to a Wordfast translation memory file. 260s See: http://docs.translatehouse.org/projects/translate- 260s toolkit/en/latest/commands/po2wordfast.html for examples and usage 260s instructions. 260s 260s Options: 260s --version show program's version number and exit 260s -h, --help show this help message and exit 260s --manpage output a manpage based on the help 260s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 260s --errorlevel=ERRORLEVEL 260s show errorlevel as: none, message, exception, 260s traceback 260s -i INPUT, --input=INPUT 260s read from INPUT in po, pot formats 260s -x EXCLUDE, --exclude=EXCLUDE 260s exclude names matching EXCLUDE from input paths 260s -o OUTPUT, --output=OUTPUT 260s write to OUTPUT in txt format 260s -S, --timestamp skip conversion if the output file has newer timestamp 260s -l LANG, --language=LANG 260s set target language code (e.g. af-ZA) [required] 260s --source-language=LANG 260s set source language code (default: en) 260s ========= SMOKE TEST: /usr/bin/po2xliff =========== 260s Usage: po2xliff [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 260s 260s Convert Gettext PO localization files to XLIFF localization files. See: 260s http://docs.translatehouse.org/projects/translate- 260s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 260s 260s Options: 260s --version show program's version number and exit 260s -h, --help show this help message and exit 260s --manpage output a manpage based on the help 260s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 260s --errorlevel=ERRORLEVEL 260s show errorlevel as: none, message, exception, 260s traceback 260s -i INPUT, --input=INPUT 260s read from INPUT in po, pot formats 260s -x EXCLUDE, --exclude=EXCLUDE 260s exclude names matching EXCLUDE from input paths 260s -o OUTPUT, --output=OUTPUT 260s write to OUTPUT in xlf, xliff formats 260s -t TEMPLATE, --template=TEMPLATE 260s read from TEMPLATE in xlf, xliff formats 260s -S, --timestamp skip conversion if the output file has newer timestamp 260s ========= SMOKE TEST: /usr/bin/po2yaml =========== 260s Usage: po2yaml [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 260s 260s Convert Gettext PO localization files to YAML files. See: 260s http://docs.translatehouse.org/projects/translate- 260s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 260s 260s Options: 260s --version show program's version number and exit 260s -h, --help show this help message and exit 260s --manpage output a manpage based on the help 260s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 260s --errorlevel=ERRORLEVEL 260s show errorlevel as: none, message, exception, 260s traceback 260s -i INPUT, --input=INPUT 260s read from INPUT in po, pot formats 260s -x EXCLUDE, --exclude=EXCLUDE 260s exclude names matching EXCLUDE from input paths 260s -o OUTPUT, --output=OUTPUT 260s write to OUTPUT in yaml, yml formats 260s -t TEMPLATE, --template=TEMPLATE 260s read from TEMPLATE in yaml, yml formats 260s -S, --timestamp skip conversion if the output file has newer timestamp 260s --threshold=PERCENT only convert files where the translation completion is 260s above PERCENT 260s --fuzzy use translations marked fuzzy 260s --nofuzzy don't use translations marked fuzzy (default) 261s ========= SMOKE TEST: /usr/bin/poclean =========== 261s Usage: poclean [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 261s 261s Produces a clean file from an unclean file (Trados/Wordfast) by stripping out 261s the tw4win indicators. This does not convert an RTF file to PO/XLIFF, but 261s produces the target file with only the target text in from a text version of 261s the RTF. 261s 261s Options: 261s --version show program's version number and exit 261s -h, --help show this help message and exit 261s --manpage output a manpage based on the help 261s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 261s --errorlevel=ERRORLEVEL 261s show errorlevel as: none, message, exception, 261s traceback 261s -i INPUT, --input=INPUT 261s read from INPUT in po, pot, xlf, xliff formats 261s -x EXCLUDE, --exclude=EXCLUDE 261s exclude names matching EXCLUDE from input paths 261s -o OUTPUT, --output=OUTPUT 261s write to OUTPUT in po, pot, xlf, xliff formats 261s -S, --timestamp skip conversion if the output file has newer timestamp 261s ========= SMOKE TEST: /usr/bin/pocompendium =========== 261s Usage: pocompendium [options] output.po <-d directory(s)|file(s)> 261s The first parameter is the output file, standard output if the output file is '-'. 261s Any number of directories may be specified for input files. 261s Options: 261s --invert|v Creates an inverse compendium with msgid and msgstr swapped 261s --errors|e Only ouput msg bundles that have errors 261s --correct|c Only ouput msg bundles that are correctly translated 261s --ignore-case|i Drops all strings to lowercase 261s --strip-accel-tilde|-st Strip all tilde (~) accelerator characters 261s --strip-accel-amp|-sa Strip all ampersand (&) accelerator characters 261s --strip-accel-under|-su Strip all underscore (_) accelerator characters 261s ========= SMOKE TEST: /usr/bin/pocompile =========== 261s Usage: pocompile [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 261s 261s Compile XLIFF and Gettext PO localization files into Gettext MO (Machine 261s Object) files. See: http://docs.translatehouse.org/projects/translate- 261s toolkit/en/latest/commands/pocompile.html for examples and usage instructions. 261s 261s Options: 261s --version show program's version number and exit 261s -h, --help show this help message and exit 261s --manpage output a manpage based on the help 261s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 261s --errorlevel=ERRORLEVEL 261s show errorlevel as: none, message, exception, 261s traceback 261s -i INPUT, --input=INPUT 261s read from INPUT in po, pot, xlf, xliff formats 261s -x EXCLUDE, --exclude=EXCLUDE 261s exclude names matching EXCLUDE from input paths 261s -o OUTPUT, --output=OUTPUT 261s write to OUTPUT in mo format 261s -S, --timestamp skip conversion if the output file has newer timestamp 261s --fuzzy use translations marked fuzzy 261s --nofuzzy don't use translations marked fuzzy (default) 261s ========= SMOKE TEST: /usr/bin/poconflicts =========== 261s 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] 261s input directory is searched for PO files, PO files with name of conflicting string are output in output directory 261s 261s Conflict finder for Gettext PO localization files. See: 261s http://docs.translatehouse.org/projects/translate- 261s toolkit/en/latest/commands/poconflicts.html for examples and usage 261s instructions. 261s 261s Options: 261s --version show program's version number and exit 261s -h, --help show this help message and exit 261s --manpage output a manpage based on the help 261s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 261s --errorlevel=ERRORLEVEL 261s show errorlevel as: none, message, exception, 261s traceback 261s -i INPUT, --input=INPUT 261s read from INPUT in po format 261s -x EXCLUDE, --exclude=EXCLUDE 261s exclude names matching EXCLUDE from input paths 261s -o OUTPUT, --output=OUTPUT 261s write to OUTPUT in po format 261s -I, --ignore-case ignore case distinctions 261s -v, --invert invert the conflicts thus extracting conflicting 261s destination words 261s --accelerator=ACCELERATORS 261s ignores the given accelerator characters when matching 261s ========= SMOKE TEST: /usr/bin/pocount =========== 261s usage: pocount [-h] [--incomplete] 261s [--full | --csv | --short | --short-strings | --short-words] 261s [--no-color] 261s files [files ...] 261s 261s positional arguments: 261s files 261s 261s options: 261s -h, --help show this help message and exit 261s --incomplete skip 100% translated files. 261s 261s Output format: 261s --full (default) statistics in full, verbose format 261s --csv statistics in CSV format 261s --short same as --short-strings 261s --short-strings statistics of strings in short format - one line per file 261s --short-words statistics of words in short format - one line per file 261s --no-color show output without color 261s ========= SMOKE TEST: /usr/bin/podebug =========== 261s Usage: podebug [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 261s 261s Insert debug messages into XLIFF and Gettext PO localization files. See: 261s http://docs.translatehouse.org/projects/translate- 261s toolkit/en/latest/commands/podebug.html for examples and usage instructions. 261s 261s Options: 261s --version show program's version number and exit 261s -h, --help show this help message and exit 261s --manpage output a manpage based on the help 261s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 261s --errorlevel=ERRORLEVEL 261s show errorlevel as: none, message, exception, 261s traceback 261s -i INPUT, --input=INPUT 261s read from INPUT in po, pot, pot, tmx, xlf, xliff 261s formats 261s -x EXCLUDE, --exclude=EXCLUDE 261s exclude names matching EXCLUDE from input paths 261s -o OUTPUT, --output=OUTPUT 261s write to OUTPUT in po, pot, tmx, xlf, xliff formats 261s -S, --timestamp skip conversion if the output file has newer timestamp 261s -f FORMAT, --format=FORMAT 261s specify format string 261s --rewrite=STYLE the translation rewrite style: blank, bracket, chef, 261s classified, en, flipped, unicode, xxx 261s --ignore=APPLICATION apply tagging ignore rules for the given application: 261s gtk, kde, libreoffice, mozilla, openoffice 261s --preserveplaceholders 261s attempt to exclude characters that are part of 261s placeholders when performing character-level rewrites 261s so that consuming applications can still use the 261s placeholders to generate final output 261s ========= SMOKE TEST: /usr/bin/pofilter =========== 261s Usage: pofilter [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 261s 261s Perform quality checks on Gettext PO, XLIFF and TMX localization files. 261s Snippet files are created whenever a test fails. These can be examined, 261s corrected and merged back into the originals using pomerge. See: 261s http://docs.translatehouse.org/projects/translate- 261s toolkit/en/latest/commands/pofilter.html for examples and usage instructions 261s and http://docs.translatehouse.org/projects/translate- 261s toolkit/en/latest/commands/pofilter_tests.html for full descriptions of all 261s tests. 261s 261s Options: 261s --version show program's version number and exit 261s -h, --help show this help message and exit 261s --manpage output a manpage based on the help 261s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 261s --errorlevel=ERRORLEVEL 261s show errorlevel as: none, message, exception, 261s traceback 261s -i INPUT, --input=INPUT 261s read from INPUT in po, pot, tmx, xlf, xliff formats 261s -x EXCLUDE, --exclude=EXCLUDE 261s exclude names matching EXCLUDE from input paths 261s -o OUTPUT, --output=OUTPUT 261s write to OUTPUT in po, pot, tmx, xlf, xliff formats 261s -l, --listfilters list filters available 261s --review include units marked for review (default) 261s --noreview exclude units marked for review 261s --fuzzy include units marked fuzzy (default) 261s --nofuzzy exclude units marked fuzzy 261s --nonotes don't add notes about the errors 261s --autocorrect output automatic corrections where possible rather 261s than describing issues 261s --language=LANG set target language code (e.g. af-ZA) [required for 261s spell check and recommended in general] 261s --openoffice use the standard checks for OpenOffice translations 261s --libreoffice use the standard checks for LibreOffice translations 261s --mozilla use the standard checks for Mozilla translations 261s --drupal use the standard checks for Drupal translations 261s --gnome use the standard checks for Gnome translations 261s --kde use the standard checks for KDE translations 261s --wx use the standard checks for wxWidgets translations 261s --excludefilter=FILTER 261s don't use FILTER when filtering 261s -t FILTER, --test=FILTER 261s only use test FILTERs specified with this option when 261s filtering 261s --notranslatefile=FILE 261s read list of untranslatable words from FILE (must not 261s be translated) 261s --musttranslatefile=FILE 261s read list of translatable words from FILE (must be 261s translated) 261s --validcharsfile=FILE 261s read list of all valid characters from FILE (must be 261s in UTF-8) 262s ========= SMOKE TEST: /usr/bin/pogrep =========== 262s 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] 262s 262s Grep XLIFF, Gettext PO and TMX localization files. Matches are output to 262s snippet files of the same type which can then be reviewed and later merged 262s using :doc:`pomerge `. See: 262s http://docs.translatehouse.org/projects/translate- 262s toolkit/en/latest/commands/pogrep.html for examples and usage instructions. 262s 262s Options: 262s --version show program's version number and exit 262s -h, --help show this help message and exit 262s --manpage output a manpage based on the help 262s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 262s --errorlevel=ERRORLEVEL 262s show errorlevel as: none, message, exception, 262s traceback 262s -i INPUT, --input=INPUT 262s read from INPUT in gmo, mo, po, pot, tmx, xlf, xlff, 262s xliff formats 262s -x EXCLUDE, --exclude=EXCLUDE 262s exclude names matching EXCLUDE from input paths 262s -o OUTPUT, --output=OUTPUT 262s write to OUTPUT in gmo, mo, po, pot, tmx, xlf, xlff, 262s xliff formats 262s --search=SEARCHPARTS searches the given parts (source, target, notes and 262s locations) 262s -I, --ignore-case ignore case distinctions 262s -e, --regexp use regular expression matching 262s -v, --invert-match select non-matching lines 262s --accelerator=ACCELERATOR 262s ignores the given accelerator when matching 262s -k, --keep-translations 262s always extract units with translations 262s ========= SMOKE TEST: /usr/bin/pomerge =========== 262s Usage: pomerge [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 262s 262s Merges XLIFF and Gettext PO localization files. Snippet file produced by 262s e.g. :doc:`pogrep ` and updated by a translator can be 262s merged back into the original files. See: 262s http://docs.translatehouse.org/projects/translate- 262s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 262s 262s Options: 262s --version show program's version number and exit 262s -h, --help show this help message and exit 262s --manpage output a manpage based on the help 262s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 262s --errorlevel=ERRORLEVEL 262s show errorlevel as: none, message, exception, 262s traceback 262s -i INPUT, --input=INPUT 262s read from INPUT in po, pot, pot, xlf, xliff formats 262s -x EXCLUDE, --exclude=EXCLUDE 262s exclude names matching EXCLUDE from input paths 262s -o OUTPUT, --output=OUTPUT 262s write to OUTPUT in po, pot, pot, xlf, xliff formats 262s -t TEMPLATE, --template=TEMPLATE 262s read from TEMPLATE in po, pot, pot, xlf, xliff formats 262s -S, --timestamp skip conversion if the output file has newer timestamp 262s --mergeblanks=MERGEBLANKS 262s whether to overwrite existing translations with blank 262s translations (yes/no). Default is yes. 262s --mergefuzzy=MERGEFUZZY 262s whether to consider fuzzy translations from input 262s (yes/no). Default is yes. 262s --mergecomments=MERGECOMMENTS 262s whether to merge comments as well as translations 262s (yes/no). Default is yes. 262s ========= SMOKE TEST: /usr/bin/pomigrate2 =========== 262s Usage pomigrate2 [options] 262s 262s Options: 262s -F|--use-fuzzy-matching - use fuzzy algorithms when merging to attempt to match strings 262s -C|--use-compendium - create and use a compendium built from the migrating files 262s -C|--use-compendium=some-compendium.po 262s - use an external compendium during the migration 262s --no-wrap - do not wrap long lines 262s --locale=lang - set locale for newly born files 262s -q|--quiet - suppress most output 262s -p|--pot2po - use pot2po instead of msgmerge to migrate 262s ========= SMOKE TEST: /usr/bin/popuretext =========== 262s Usage: popuretext ( -P pot-dir | po-dir ) file.txt [accelerator] 262s ========= SMOKE TEST: /usr/bin/poreencode =========== 262s Usage: poreencode 262s eg: poreencode UTF-8 af/ 262s ========= SMOKE TEST: /usr/bin/porestructure =========== 262s Usage: porestructure [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT 262s input directory is searched for PO files with (poconflicts) comments, all entries are written to files in a directory structure for pomerge 262s 262s Restructure Gettxt PO files produced by :doc:`poconflicts 262s ` into the original directory tree for merging using 262s :doc:`pomerge `. See: 262s http://docs.translatehouse.org/projects/translate- 262s toolkit/en/latest/commands/pomerge.html for examples and usage instructions. 262s 262s Options: 262s --version show program's version number and exit 262s -h, --help show this help message and exit 262s --manpage output a manpage based on the help 262s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 262s --errorlevel=ERRORLEVEL 262s show errorlevel as: none, message, exception, 262s traceback 262s -i INPUT, --input=INPUT 262s read from INPUT in po format 262s -x EXCLUDE, --exclude=EXCLUDE 262s exclude names matching EXCLUDE from input paths 262s -o OUTPUT, --output=OUTPUT 262s write to OUTPUT in po format 262s ========= SMOKE TEST: /usr/bin/posegment =========== 262s Usage: posegment [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 262s 262s Segment Gettext PO, XLIFF and TMX localization files at the sentence level. 262s See: http://docs.translatehouse.org/projects/translate- 262s toolkit/en/latest/commands/posegment.html for examples and usage instructions. 262s 262s Options: 262s --version show program's version number and exit 262s -h, --help show this help message and exit 262s --manpage output a manpage based on the help 262s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 262s --errorlevel=ERRORLEVEL 262s show errorlevel as: none, message, exception, 262s traceback 262s -i INPUT, --input=INPUT 262s read from INPUT in po, pot, tmx, xlf, xliff formats 262s -x EXCLUDE, --exclude=EXCLUDE 262s exclude names matching EXCLUDE from input paths 262s -o OUTPUT, --output=OUTPUT 262s write to OUTPUT in po, pot, tmx, xlf, xliff formats 262s -S, --timestamp skip conversion if the output file has newer timestamp 262s -P, --pot output PO Templates (.pot) rather than PO files (.po) 262s -l LANG, --language=LANG 262s the target language code 262s --source-language=LANG 262s the source language code (default 'en') 262s --keepspaces Disable automatic stripping of whitespace 262s --only-aligned Removes units where sentence number does not 262s correspond 262s ========= SMOKE TEST: /usr/bin/poswap =========== 262s Usage: poswap [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 262s 262s Builds a new translation file with the target of the input language as source 262s language. .. note:: Ensure that the two po files correspond 100% to the same 262s pot file before using this. To translate Kurdish (ku) through French:: 262s poswap -i fr/ -t ku -o fr-ku To convert the fr-ku files back to en-ku:: 262s poswap --reverse -i fr/ -t fr-ku -o en-ku See: 262s http://docs.translatehouse.org/projects/translate- 262s toolkit/en/latest/commands/poswap.html for examples and usage instructions. 262s 262s Options: 262s --version show program's version number and exit 262s -h, --help show this help message and exit 262s --manpage output a manpage based on the help 262s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 262s --errorlevel=ERRORLEVEL 262s show errorlevel as: none, message, exception, 262s traceback 262s -i INPUT, --input=INPUT 262s read from INPUT in po, pot formats 262s -x EXCLUDE, --exclude=EXCLUDE 262s exclude names matching EXCLUDE from input paths 262s -o OUTPUT, --output=OUTPUT 262s write to OUTPUT in po, pot formats 262s -t TEMPLATE, --template=TEMPLATE 262s read from TEMPLATE in po, pot, pot formats 262s -S, --timestamp skip conversion if the output file has newer timestamp 262s --reverse reverse the process of intermediate language 262s conversion 262s ========= SMOKE TEST: /usr/bin/pot2po =========== 262s 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] 262s 262s Convert template files (like .pot or template .xlf files) to translation 262s files, preserving existing translations. See: 262s http://docs.translatehouse.org/projects/translate- 262s toolkit/en/latest/commands/pot2po.html for examples and usage instructions. 262s 262s Options: 262s --version show program's version number and exit 262s -h, --help show this help message and exit 262s --manpage output a manpage based on the help 262s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 262s --errorlevel=ERRORLEVEL 262s show errorlevel as: none, message, exception, 262s traceback 262s -i INPUT, --input=INPUT 262s read from INPUT in catkeys, lang, pot, ts, xlf, xliff 262s formats 262s -x EXCLUDE, --exclude=EXCLUDE 262s exclude names matching EXCLUDE from input paths 262s -o OUTPUT, --output=OUTPUT 262s write to OUTPUT in catkeys, lang, po, pot, ts, xlf, 262s xliff formats 262s -t TEMPLATE, --template=TEMPLATE 262s read from TEMPLATE in catkeys, lang, po, pot, ts, xlf, 262s xliff formats 262s -S, --timestamp skip conversion if the output file has newer timestamp 262s -P, --pot output PO Templates (.pot) rather than PO files (.po) 262s --tm=TM The file to use as translation memory when fuzzy 262s matching 262s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 262s The minimum similarity for inclusion (default: 75%) 262s --nofuzzymatching Disable fuzzy matching 262s ========= SMOKE TEST: /usr/bin/poterminology =========== 263s 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] 263s input directory is searched for PO files, terminology PO file is output file 263s 263s Create a terminology file by reading a set of .po or .pot files to produce a 263s pootle-terminology.pot. See: 263s http://docs.translatehouse.org/projects/translate- 263s toolkit/en/latest/commands/poterminology.html for examples and usage 263s instructions. 263s 263s Options: 263s --version show program's version number and exit 263s -h, --help show this help message and exit 263s --manpage output a manpage based on the help 263s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 263s --errorlevel=ERRORLEVEL 263s show errorlevel as: none, message, exception, 263s traceback 263s -i INPUT, --input=INPUT 263s read from INPUT in po, pot formats 263s -x EXCLUDE, --exclude=EXCLUDE 263s exclude names matching EXCLUDE from input paths 263s -o OUTPUT, --output=OUTPUT 263s write to OUTPUT in po, pot formats 263s -u UPDATEFILE, --update=UPDATEFILE 263s update terminology in UPDATEFILE 263s -S STOPFILE, --stopword-list=STOPFILE 263s read stopword (term exclusion) list from STOPFILE 263s (default /usr/share/pyshared/translate/share/stoplist- 263s en) 263s -F, --fold-titlecase fold "Title Case" to lowercase (default) 263s -C, --preserve-case preserve all uppercase/lowercase 263s -I, --ignore-case make all terms lowercase 263s --accelerator=ACCELERATORS 263s ignore the given accelerator characters when matching 263s -t LENGTH, --term-words=LENGTH 263s generate terms of up to LENGTH words (default 3) 263s --nonstop-needed=MIN omit terms with less than MIN nonstop words (default 263s 1) 263s --inputs-needed=MIN omit terms appearing in less than MIN input files 263s (default 2, or 1 if only one input file) 263s --fullmsg-needed=MIN omit full message terms appearing in less than MIN 263s different messages (default 1) 263s --substr-needed=MIN omit substring-only terms appearing in less than MIN 263s different messages (default 2) 263s --locs-needed=MIN omit terms appearing in less than MIN different 263s original source files (default 2) 263s --sort=ORDER output sort order(s): frequency, dictionary, length 263s (may repeat option, default is all in above order) 263s --source-language=LANG 263s the source language code (default 'en') 263s -v, --invert invert the source and target languages for terminology 263s ========= SMOKE TEST: /usr/bin/pretranslate =========== 263s Usage: pretranslate [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 263s 263s Fill localization files with suggested translations based on translation 263s memory and existing translations. See: 263s http://docs.translatehouse.org/projects/translate- 263s toolkit/en/latest/commands/pretranslate.html for examples and usage 263s instructions. 263s 263s Options: 263s --version show program's version number and exit 263s -h, --help show this help message and exit 263s --manpage output a manpage based on the help 263s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 263s --errorlevel=ERRORLEVEL 263s show errorlevel as: none, message, exception, 263s traceback 263s -i INPUT, --input=INPUT 263s read from INPUT in po, pot, pot, xlf, xliff formats 263s -x EXCLUDE, --exclude=EXCLUDE 263s exclude names matching EXCLUDE from input paths 263s -o OUTPUT, --output=OUTPUT 263s write to OUTPUT in po, pot, xlf, xliff formats 263s -t TEMPLATE, --template=TEMPLATE 263s read from TEMPLATE in po, pot, xlf, xliff formats 263s -S, --timestamp skip conversion if the output file has newer timestamp 263s --tm=TM The file to use as translation memory when fuzzy 263s matching 263s -s MIN_SIMILARITY, --similarity=MIN_SIMILARITY 263s The minimum similarity for inclusion (default: 75%) 263s --nofuzzymatching Disable fuzzy matching 263s ========= SMOKE TEST: /usr/bin/prop2po =========== 263s 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] 263s 263s Convert Java/Mozilla .properties files to Gettext PO localization files. 263s See: http://docs.translatehouse.org/projects/translate- 263s toolkit/en/latest/commands/prop2po.html for examples and usage instructions. 263s 263s Options: 263s --version show program's version number and exit 263s -h, --help show this help message and exit 263s --manpage output a manpage based on the help 263s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 263s --errorlevel=ERRORLEVEL 263s show errorlevel as: none, message, exception, 263s traceback 263s -i INPUT, --input=INPUT 263s read from INPUT in lang, properties, strings formats 263s -x EXCLUDE, --exclude=EXCLUDE 263s exclude names matching EXCLUDE from input paths 263s -o OUTPUT, --output=OUTPUT 263s write to OUTPUT in po, pot formats 263s -t TEMPLATE, --template=TEMPLATE 263s read from TEMPLATE in lang, properties, strings 263s formats 263s -S, --timestamp skip conversion if the output file has newer timestamp 263s -P, --pot output PO Templates (.pot) rather than PO files (.po) 263s --personality=TYPE override the input file format: java, java-utf8, java- 263s utf16, xwiki, flex, mozilla, gaia, gwt, skype, 263s strings, strings-utf8, joomla (for .properties files, 263s default: java) 263s --encoding=ENCODING override the encoding set by the personality 263s --duplicates=DUPLICATESTYLE 263s what to do with duplicate strings (identical source 263s text): merge, msgctxt (default: 'msgctxt') 263s ========= SMOKE TEST: /usr/bin/pydiff =========== 263s usage: pydiff [-h] [-i] [-U NUM] [-r] [-N] [--unidirectional-new-file] [-s] 263s [-x PAT] [--fromcontains TEXT] [--tocontains TEXT] 263s [--contains TEXT] [-I] [--accelerator ACCELERATORS] 263s fromfile tofile 263s 263s positional arguments: 263s fromfile 263s tofile 263s 263s options: 263s -h, --help show this help message and exit 263s -i, --ignore-case Ignore case differences in file contents. 263s -U NUM, --unified NUM 263s Output NUM (default 3) lines of unified context 263s -r, --recursive Recursively compare any subdirectories found. 263s -N, --new-file Treat absent files as empty. 263s --unidirectional-new-file 263s Treat absent first files as empty. 263s -s, --report-identical-files 263s Report when two files are the same. 263s -x PAT, --exclude PAT 263s Exclude files that match PAT. 263s --fromcontains TEXT Only show changes where fromfile contains TEXT 263s --tocontains TEXT Only show changes where tofile contains TEXT 263s --contains TEXT Only show changes where fromfile or tofile contains 263s TEXT 263s -I, --ignore-case-contains 263s Ignore case differences when matching any of the 263s changes 263s --accelerator ACCELERATORS 263s ignores the given accelerator characters when matching 263s ========= SMOKE TEST: /usr/bin/pypo2phppo =========== 263s Usage: pypo2phppo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 263s 263s Convert Python format .po files to PHP format .po files. 263s 263s Options: 263s --version show program's version number and exit 263s -h, --help show this help message and exit 263s --manpage output a manpage based on the help 263s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 263s --errorlevel=ERRORLEVEL 263s show errorlevel as: none, message, exception, 263s traceback 263s -i INPUT, --input=INPUT 263s read from INPUT in po, pot formats 263s -x EXCLUDE, --exclude=EXCLUDE 263s exclude names matching EXCLUDE from input paths 263s -o OUTPUT, --output=OUTPUT 263s write to OUTPUT in po, pot formats 263s -S, --timestamp skip conversion if the output file has newer timestamp 263s ========= SMOKE TEST: /usr/bin/rc2po =========== 263s 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] 263s 263s Convert Windows RC files to Gettext PO localization files. See: 263s http://docs.translatehouse.org/projects/translate- 263s toolkit/en/latest/commands/rc2po.html for examples and usage instructions. 263s 263s Options: 263s --version show program's version number and exit 263s -h, --help show this help message and exit 263s --manpage output a manpage based on the help 263s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 263s --errorlevel=ERRORLEVEL 263s show errorlevel as: none, message, exception, 263s traceback 263s -i INPUT, --input=INPUT 263s read from INPUT in nls, rc formats 263s -x EXCLUDE, --exclude=EXCLUDE 263s exclude names matching EXCLUDE from input paths 263s -o OUTPUT, --output=OUTPUT 263s write to OUTPUT in po, pot formats 263s -t TEMPLATE, --template=TEMPLATE 263s read from TEMPLATE in nls, rc formats 263s -S, --timestamp skip conversion if the output file has newer timestamp 263s -P, --pot output PO Templates (.pot) rather than PO files (.po) 263s --charset=CHARSET charset to use to decode the RC files (autodetection 263s is used by default) 263s -l LANG, --lang=LANG LANG entry (default: None) 263s --sublang=SUBLANG SUBLANG entry (default: None) 263s --duplicates=DUPLICATESTYLE 263s what to do with duplicate strings (identical source 263s text): merge, msgctxt (default: 'msgctxt') 263s ========= SMOKE TEST: /usr/bin/resx2po =========== 264s 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] 264s 264s Convert .Net Resource (.resx) to Gettext PO localisation files. See: 264s http://docs.translatehouse.org/projects/translate- 264s toolkit/en/latest/commands/resx2po.html for examples and usage instructions. 264s 264s Options: 264s --version show program's version number and exit 264s -h, --help show this help message and exit 264s --manpage output a manpage based on the help 264s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 264s --errorlevel=ERRORLEVEL 264s show errorlevel as: none, message, exception, 264s traceback 264s -i INPUT, --input=INPUT 264s read from INPUT in resx format 264s -x EXCLUDE, --exclude=EXCLUDE 264s exclude names matching EXCLUDE from input paths 264s -o OUTPUT, --output=OUTPUT 264s write to OUTPUT in po, pot formats 264s -t TEMPLATE, --template=TEMPLATE 264s read from TEMPLATE in resx format 264s -S, --timestamp skip conversion if the output file has newer timestamp 264s -P, --pot output PO Templates (.pot) rather than PO files (.po) 264s --filter=FILTER leaves to extract e.g. 'name,desc': (default: extract 264s everything) 264s --duplicates=DUPLICATESTYLE 264s what to do with duplicate strings (identical source 264s text): merge, msgctxt (default: 'msgctxt') 264s ========= SMOKE TEST: /usr/bin/sub2po =========== 264s 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] 264s 264s Convert subtitle files to Gettext PO localization files. See: 264s http://docs.translatehouse.org/projects/translate- 264s toolkit/en/latest/commands/sub2po.html for examples and usage instructions. 264s 264s Options: 264s --version show program's version number and exit 264s -h, --help show this help message and exit 264s --manpage output a manpage based on the help 264s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 264s --errorlevel=ERRORLEVEL 264s show errorlevel as: none, message, exception, 264s traceback 264s -i INPUT, --input=INPUT 264s read from INPUT in ass, srt, ssa, sub formats 264s -x EXCLUDE, --exclude=EXCLUDE 264s exclude names matching EXCLUDE from input paths 264s -o OUTPUT, --output=OUTPUT 264s write to OUTPUT in po, pot formats 264s -t TEMPLATE, --template=TEMPLATE 264s read from TEMPLATE in ass, srt, ssa, sub formats 264s -S, --timestamp skip conversion if the output file has newer timestamp 264s -P, --pot output PO Templates (.pot) rather than PO files (.po) 264s --duplicates=DUPLICATESTYLE 264s what to do with duplicate strings (identical source 264s text): merge, msgctxt (default: 'msgctxt') 264s ========= SMOKE TEST: /usr/bin/symb2po =========== 264s 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] 264s 264s Convert Symbian localisation files to Gettext PO localization files. See: 264s http://docs.translatehouse.org/projects/translate- 264s toolkit/en/latest/commands/symb2po.html for examples and usage instructions. 264s 264s Options: 264s --version show program's version number and exit 264s -h, --help show this help message and exit 264s --manpage output a manpage based on the help 264s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 264s --errorlevel=ERRORLEVEL 264s show errorlevel as: none, message, exception, 264s traceback 264s -i INPUT, --input=INPUT 264s read from INPUT in r01 format 264s -x EXCLUDE, --exclude=EXCLUDE 264s exclude names matching EXCLUDE from input paths 264s -o OUTPUT, --output=OUTPUT 264s write to OUTPUT in po, pot formats 264s -t TEMPLATE, --template=TEMPLATE 264s read from TEMPLATE in 264s -S, --timestamp skip conversion if the output file has newer timestamp 264s -P, --pot output PO Templates (.pot) rather than PO files (.po) 264s --duplicates=DUPLICATESTYLE 264s what to do with duplicate strings (identical source 264s text): merge, msgctxt (default: 'msgctxt') 264s ========= SMOKE TEST: /usr/bin/tbx2po =========== 264s Usage: tbx2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 264s 264s Convert TermBase eXchange (.tbx) glossary file into a Gettext PO file. See: 264s http://docs.translatehouse.org/projects/translate- 264s toolkit/en/latest/commands/tbx2po.html for examples and usage instructions 264s 264s Options: 264s --version show program's version number and exit 264s -h, --help show this help message and exit 264s --manpage output a manpage based on the help 264s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 264s --errorlevel=ERRORLEVEL 264s show errorlevel as: none, message, exception, 264s traceback 264s -i INPUT, --input=INPUT 264s read from INPUT in tbx format 264s -x EXCLUDE, --exclude=EXCLUDE 264s exclude names matching EXCLUDE from input paths 264s -o OUTPUT, --output=OUTPUT 264s write to OUTPUT in po, pot formats 264s -S, --timestamp skip conversion if the output file has newer timestamp 264s ========= SMOKE TEST: /usr/bin/tiki2po =========== 264s Usage: tiki2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] 264s 264s Convert TikiWiki's language.php files to Gettext PO localization files. See: 264s http://docs.translatehouse.org/projects/translate- 264s toolkit/en/latest/commands/tiki2po.html for examples and usage instructions. 264s 264s Options: 264s --version show program's version number and exit 264s -h, --help show this help message and exit 264s --manpage output a manpage based on the help 264s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 264s --errorlevel=ERRORLEVEL 264s show errorlevel as: none, message, exception, 264s traceback 264s -i INPUT, --input=INPUT 264s read from INPUT in php format 264s -x EXCLUDE, --exclude=EXCLUDE 264s exclude names matching EXCLUDE from input paths 264s -o OUTPUT, --output=OUTPUT 264s write to OUTPUT in po, pot formats 264s -S, --timestamp skip conversion if the output file has newer timestamp 264s --include-unused Include strings in the unused section 264s ========= SMOKE TEST: /usr/bin/tmserver =========== 264s usage: tmserver [-h] [-d TMDBFILE] [-f TMFILES] [-t TARGET_LANG] 264s [-s SOURCE_LANG] [-b BIND] [-p PORT] 264s [--max-candidates MAX_CANDIDATES] 264s [--min-similarity MIN_SIMILARITY] [--max-length MAX_LENGTH] 264s [--debug] 264s 264s options: 264s -h, --help show this help message and exit 264s -d TMDBFILE, --tmdb TMDBFILE 264s translation memory database file 264s -f TMFILES, --import-translation-file TMFILES 264s translation file to import into the database 264s -t TARGET_LANG, --import-target-lang TARGET_LANG 264s target language of translation files 264s -s SOURCE_LANG, --import-source-lang SOURCE_LANG 264s source language of translation files 264s -b BIND, --bind BIND address to bind server to (default: localhost) 264s -p PORT, --port PORT port to listen on (default: 8888) 264s --max-candidates MAX_CANDIDATES 264s Maximum number of candidates 264s --min-similarity MIN_SIMILARITY 264s minimum similarity 264s --max-length MAX_LENGTH 264s Maxmimum string length 264s --debug enable debugging features 264s ========= SMOKE TEST: /usr/bin/ts2po =========== 265s Usage: ts2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 265s 265s Convert Qt Linguist (.ts) files to Gettext PO localization files. See: 265s http://docs.translatehouse.org/projects/translate- 265s toolkit/en/latest/commands/ts2po.html for examples and usage instructions. 265s 265s Options: 265s --version show program's version number and exit 265s -h, --help show this help message and exit 265s --manpage output a manpage based on the help 265s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 265s --errorlevel=ERRORLEVEL 265s show errorlevel as: none, message, exception, 265s traceback 265s -i INPUT, --input=INPUT 265s read from INPUT in ts format 265s -x EXCLUDE, --exclude=EXCLUDE 265s exclude names matching EXCLUDE from input paths 265s -o OUTPUT, --output=OUTPUT 265s write to OUTPUT in po, pot formats 265s -S, --timestamp skip conversion if the output file has newer timestamp 265s -P, --pot output PO Templates (.pot) rather than PO files (.po) 265s --duplicates=DUPLICATESTYLE 265s what to do with duplicate strings (identical source 265s text): merge, msgctxt (default: 'msgctxt') 265s ========= SMOKE TEST: /usr/bin/txt2po =========== 265s Usage: txt2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 265s 265s Convert plain text (.txt) files to Gettext PO localization files. See: 265s http://docs.translatehouse.org/projects/translate- 265s toolkit/en/latest/commands/txt2po.html for examples and usage instructions. 265s 265s Options: 265s --version show program's version number and exit 265s -h, --help show this help message and exit 265s --manpage output a manpage based on the help 265s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 265s --errorlevel=ERRORLEVEL 265s show errorlevel as: none, message, exception, 265s traceback 265s -i INPUT, --input=INPUT 265s read from INPUT in *, txt formats 265s -x EXCLUDE, --exclude=EXCLUDE 265s exclude names matching EXCLUDE from input paths 265s -o OUTPUT, --output=OUTPUT 265s write to OUTPUT in po, pot formats 265s -S, --timestamp skip conversion if the output file has newer timestamp 265s -P, --pot output PO Templates (.pot) rather than PO files (.po) 265s --encoding=ENCODING The encoding of the input file (default: UTF-8) 265s --flavour=FLAVOUR The flavour of text file: plain (default), dokuwiki, 265s mediawiki 265s --no-segmentation Don't segment the file, treat it like a single message 265s --duplicates=DUPLICATESTYLE 265s what to do with duplicate strings (identical source 265s text): merge, msgctxt (default: 'msgctxt') 265s ========= SMOKE TEST: /usr/bin/web2py2po =========== 265s Usage: web2py2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 265s 265s Convert web2py translation dictionaries (.py) to GNU/gettext PO files. See: 265s http://docs.translatehouse.org/projects/translate- 265s toolkit/en/latest/commands/web2py2po.html for examples and usage instructions. 265s 265s Options: 265s --version show program's version number and exit 265s -h, --help show this help message and exit 265s --manpage output a manpage based on the help 265s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 265s --errorlevel=ERRORLEVEL 265s show errorlevel as: none, message, exception, 265s traceback 265s -i INPUT, --input=INPUT 265s read from INPUT in py format 265s -x EXCLUDE, --exclude=EXCLUDE 265s exclude names matching EXCLUDE from input paths 265s -o OUTPUT, --output=OUTPUT 265s write to OUTPUT in po, pot formats 265s -S, --timestamp skip conversion if the output file has newer timestamp 265s -P, --pot output PO Templates (.pot) rather than PO files (.po) 265s --duplicates=DUPLICATESTYLE 265s what to do with duplicate strings (identical source 265s text): merge, msgctxt (default: 'msgctxt') 265s ========= SMOKE TEST: /usr/bin/xliff2odf =========== 265s Usage: xliff2odf [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 265s 265s Convert XLIFF translation files to OpenDocument (ODF) files. See: 265s http://docs.translatehouse.org/projects/translate- 265s toolkit/en/latest/commands/odf2xliff.html for examples and usage instructions. 265s 265s Options: 265s --version show program's version number and exit 265s -h, --help show this help message and exit 265s --manpage output a manpage based on the help 265s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 265s --errorlevel=ERRORLEVEL 265s show errorlevel as: none, message, exception, 265s traceback 265s -i INPUT, --input=INPUT 265s read from INPUT in xlf format 265s -x EXCLUDE, --exclude=EXCLUDE 265s exclude names matching EXCLUDE from input paths 265s -o OUTPUT, --output=OUTPUT 265s write to OUTPUT in odc, odf, odg, odi, odm, odp, ods, 265s odt, otc, otf, otg, oth, oti, otp, ots, ott formats 265s -t TEMPLATE, --template=TEMPLATE 265s read from TEMPLATE in odc, odf, odg, odi, odm, odp, 265s ods, odt, otc, otf, otg, oth, oti, otp, ots, ott 265s formats 265s -S, --timestamp skip conversion if the output file has newer timestamp 265s ========= SMOKE TEST: /usr/bin/xliff2oo =========== 265s Usage: xliff2oo [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-t|--template TEMPLATE] [-S|--timestamp] 265s 265s Convert XLIFF localization files to an OpenOffice.org (SDF) localization 265s file. See: http://docs.translatehouse.org/projects/translate- 265s toolkit/en/latest/commands/oo2po.html for examples and usage instructions. 265s 265s Options: 265s --version show program's version number and exit 265s -h, --help show this help message and exit 265s --manpage output a manpage based on the help 265s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 265s --errorlevel=ERRORLEVEL 265s show errorlevel as: none, message, exception, 265s traceback 265s -i INPUT, --input=INPUT 265s read from INPUT in po, pot, xlf, xliff formats 265s -x EXCLUDE, --exclude=EXCLUDE 265s exclude names matching EXCLUDE from input paths 265s -o OUTPUT, --output=OUTPUT 265s write to OUTPUT in oo, sdf formats 265s -t TEMPLATE, --template=TEMPLATE 265s read from TEMPLATE in oo, sdf formats 265s -S, --timestamp skip conversion if the output file has newer timestamp 265s -l LANG, --language=LANG 265s set target language code (e.g. af-ZA) [required] 265s --source-language=LANG 265s set source language code (default en-US) 265s -T, --keeptimestamp don't change the timestamps of the strings 265s --nonrecursiveoutput don't treat the output oo as a recursive store 265s --nonrecursivetemplate 265s don't treat the template oo as a recursive store 265s --skipsource don't output the source language, but fallback to it 265s where needed 265s --filteraction=ACTION 265s action on pofilter failure: none (default), warn, 265s exclude-serious, exclude-all 265s --fuzzy use translations marked fuzzy 265s --nofuzzy don't use translations marked fuzzy (default) 265s --multifile=MULTIFILESTYLE 265s how to split po/pot files (single, toplevel or 265s onefile) 265s ========= SMOKE TEST: /usr/bin/xliff2po =========== 265s Usage: xliff2po [--version] [-h|--help] [--manpage] [--progress PROGRESS] [--errorlevel ERRORLEVEL] [-i|--input] INPUT [-x|--exclude EXCLUDE] [-o|--output] OUTPUT [-S|--timestamp] [-P|--pot] 265s 265s Convert XLIFF localization files to Gettext PO localization files. See: 265s http://docs.translatehouse.org/projects/translate- 265s toolkit/en/latest/commands/xliff2po.html for examples and usage instructions. 265s 265s Options: 265s --version show program's version number and exit 265s -h, --help show this help message and exit 265s --manpage output a manpage based on the help 265s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 265s --errorlevel=ERRORLEVEL 265s show errorlevel as: none, message, exception, 265s traceback 265s -i INPUT, --input=INPUT 265s read from INPUT in xlf, xliff formats 265s -x EXCLUDE, --exclude=EXCLUDE 265s exclude names matching EXCLUDE from input paths 265s -o OUTPUT, --output=OUTPUT 265s write to OUTPUT in po, pot formats 265s -S, --timestamp skip conversion if the output file has newer timestamp 265s -P, --pot output PO Templates (.pot) rather than PO files (.po) 265s --duplicates=DUPLICATESTYLE 265s what to do with duplicate strings (identical source 265s text): merge, msgctxt (default: 'msgctxt') 265s ========= SMOKE TEST: /usr/bin/yaml2po =========== 265s 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] 265s 265s Convert YAML files to Gettext PO localization files. See: 265s http://docs.translatehouse.org/projects/translate- 265s toolkit/en/latest/commands/yaml2po.html for examples and usage instructions. 265s 265s Options: 265s --version show program's version number and exit 265s -h, --help show this help message and exit 265s --manpage output a manpage based on the help 265s --progress=PROGRESS show progress as: dots, none, bar, names, verbose 265s --errorlevel=ERRORLEVEL 265s show errorlevel as: none, message, exception, 265s traceback 265s -i INPUT, --input=INPUT 265s read from INPUT in yaml, yml formats 265s -x EXCLUDE, --exclude=EXCLUDE 265s exclude names matching EXCLUDE from input paths 265s -o OUTPUT, --output=OUTPUT 265s write to OUTPUT in po, pot formats 265s -t TEMPLATE, --template=TEMPLATE 265s read from TEMPLATE in yaml, yml formats 265s -S, --timestamp skip conversion if the output file has newer timestamp 265s -P, --pot output PO Templates (.pot) rather than PO files (.po) 265s --duplicates=DUPLICATESTYLE 265s what to do with duplicate strings (identical source 265s text): merge, msgctxt (default: 'msgctxt') 266s autopkgtest [01:27:48]: test translate-toolkit: -----------------------] 266s autopkgtest [01:27:48]: test translate-toolkit: - - - - - - - - - - results - - - - - - - - - - 266s translate-toolkit PASS 266s autopkgtest [01:27:48]: test python3-translate: preparing testbed 347s autopkgtest [01:29:09]: testbed dpkg architecture: amd64 347s autopkgtest [01:29:09]: testbed apt version: 2.9.3 347s autopkgtest [01:29:09]: test architecture: i386 347s autopkgtest [01:29:09]: @@@@@@@@@@@@@@@@@@@@ test bed setup 347s Get:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease [110 kB] 347s Get:2 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse Sources [2864 B] 347s Get:3 http://ftpmaster.internal/ubuntu oracular-proposed/universe Sources [339 kB] 347s Get:4 http://ftpmaster.internal/ubuntu oracular-proposed/main Sources [44.3 kB] 347s Get:5 http://ftpmaster.internal/ubuntu oracular-proposed/restricted Sources [7972 B] 347s Get:6 http://ftpmaster.internal/ubuntu oracular-proposed/main i386 Packages [38.1 kB] 347s Get:7 http://ftpmaster.internal/ubuntu oracular-proposed/main amd64 Packages [66.4 kB] 347s Get:8 http://ftpmaster.internal/ubuntu oracular-proposed/restricted i386 Packages [9340 B] 347s Get:9 http://ftpmaster.internal/ubuntu oracular-proposed/restricted amd64 Packages [27.4 kB] 347s Get:10 http://ftpmaster.internal/ubuntu oracular-proposed/universe i386 Packages [126 kB] 347s Get:11 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 Packages [315 kB] 347s Get:12 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse amd64 Packages [11.7 kB] 347s Get:13 http://ftpmaster.internal/ubuntu oracular-proposed/multiverse i386 Packages [3368 B] 347s Fetched 1102 kB in 0s (4630 kB/s) 348s Reading package lists... 349s Reading package lists... 349s Building dependency tree... 349s Reading state information... 349s Calculating upgrade... 350s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 350s Reading package lists... 350s Building dependency tree... 350s Reading state information... 350s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 351s Hit:1 http://ftpmaster.internal/ubuntu oracular-proposed InRelease 351s Hit:2 http://ftpmaster.internal/ubuntu oracular InRelease 351s Hit:3 http://ftpmaster.internal/ubuntu oracular-updates InRelease 351s Hit:4 http://ftpmaster.internal/ubuntu oracular-security InRelease 352s Reading package lists... 352s Reading package lists... 352s Building dependency tree... 352s Reading state information... 352s Calculating upgrade... 353s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 353s Reading package lists... 353s Building dependency tree... 353s Reading state information... 353s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 357s Note, using file '/tmp/autopkgtest.ut5eEf/3-autopkgtest-satdep.dsc' to get the build dependencies 357s Reading package lists... 357s Building dependency tree... 357s Reading state information... 357s Starting pkgProblemResolver with broken count: 0 357s Starting 2 pkgProblemResolver with broken count: 0 357s Done 358s The following NEW packages will be installed: 358s build-essential cpp cpp-13 cpp-13-x86-64-linux-gnu cpp-x86-64-linux-gnu 358s dictionaries-common emacsen-common g++ g++-13 g++-13-x86-64-linux-gnu 358s g++-x86-64-linux-gnu gcc gcc-13 gcc-13-base gcc-13-x86-64-linux-gnu 358s gcc-x86-64-linux-gnu gettext hunspell-en-us libapr1t64 libaprutil1t64 358s libasan8 libaspell15 libatomic1 libcc1-0 libenchant-2-2 libexttextcat-data 358s libgcc-13-dev libgomp1 libhunspell-1.7-0 libhwasan0 libisl23 libitm1 358s liblsan0 libmpc3 libquadmath0 libserf-1-1 libstdc++-13-dev libsvn1 libtsan2 358s libubsan1 libutf8proc3 libxapian30 libxslt1.1 python3-aeidon python3-all 358s python3-bs4 python3-cheroot python3-dateutil python3-diff-match-patch 358s python3-enchant python3-iniconfig python3-iniparse python3-jaraco.functools 358s python3-levenshtein python3-lxml python3-mistletoe python3-more-itertools 358s python3-packaging python3-phply python3-pluggy python3-ply python3-pycountry 358s python3-pytest python3-rapidfuzz python3-ruamel.yaml 358s python3-ruamel.yaml.clib python3-simplejson python3-soupsieve python3-syrupy 358s python3-translate python3-vobject python3-xapian subversion 358s 0 upgraded, 73 newly installed, 0 to remove and 0 not upgraded. 358s Need to get 73.5 MB of archives. 358s After this operation, 274 MB of additional disk space will be used. 358s Get:1 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc-13-base amd64 13.2.0-23ubuntu4 [49.0 kB] 358s Get:2 http://ftpmaster.internal/ubuntu oracular/main amd64 libisl23 amd64 0.26-3build1 [680 kB] 358s Get:3 http://ftpmaster.internal/ubuntu oracular/main amd64 libmpc3 amd64 1.3.1-1build1 [54.5 kB] 358s Get:4 http://ftpmaster.internal/ubuntu oracular/main amd64 cpp-13-x86-64-linux-gnu amd64 13.2.0-23ubuntu4 [11.2 MB] 358s Get:5 http://ftpmaster.internal/ubuntu oracular/main amd64 cpp-13 amd64 13.2.0-23ubuntu4 [1032 B] 358s Get:6 http://ftpmaster.internal/ubuntu oracular/main amd64 cpp-x86-64-linux-gnu amd64 4:13.2.0-7ubuntu1 [5326 B] 358s Get:7 http://ftpmaster.internal/ubuntu oracular/main amd64 cpp amd64 4:13.2.0-7ubuntu1 [22.4 kB] 358s Get:8 http://ftpmaster.internal/ubuntu oracular/main amd64 libcc1-0 amd64 14.1.0-1ubuntu1 [48.0 kB] 358s Get:9 http://ftpmaster.internal/ubuntu oracular/main amd64 libgomp1 amd64 14.1.0-1ubuntu1 [148 kB] 358s Get:10 http://ftpmaster.internal/ubuntu oracular/main amd64 libitm1 amd64 14.1.0-1ubuntu1 [29.1 kB] 358s Get:11 http://ftpmaster.internal/ubuntu oracular/main amd64 libatomic1 amd64 14.1.0-1ubuntu1 [10.4 kB] 358s Get:12 http://ftpmaster.internal/ubuntu oracular/main amd64 libasan8 amd64 14.1.0-1ubuntu1 [3025 kB] 358s Get:13 http://ftpmaster.internal/ubuntu oracular/main amd64 liblsan0 amd64 14.1.0-1ubuntu1 [1313 kB] 358s Get:14 http://ftpmaster.internal/ubuntu oracular/main amd64 libtsan2 amd64 14.1.0-1ubuntu1 [2736 kB] 358s Get:15 http://ftpmaster.internal/ubuntu oracular/main amd64 libubsan1 amd64 14.1.0-1ubuntu1 [1174 kB] 358s Get:16 http://ftpmaster.internal/ubuntu oracular/main amd64 libhwasan0 amd64 14.1.0-1ubuntu1 [1632 kB] 358s Get:17 http://ftpmaster.internal/ubuntu oracular/main amd64 libquadmath0 amd64 14.1.0-1ubuntu1 [153 kB] 358s Get:18 http://ftpmaster.internal/ubuntu oracular/main amd64 libgcc-13-dev amd64 13.2.0-23ubuntu4 [2688 kB] 358s Get:19 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc-13-x86-64-linux-gnu amd64 13.2.0-23ubuntu4 [21.9 MB] 358s Get:20 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc-13 amd64 13.2.0-23ubuntu4 [482 kB] 358s Get:21 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc-x86-64-linux-gnu amd64 4:13.2.0-7ubuntu1 [1212 B] 358s Get:22 http://ftpmaster.internal/ubuntu oracular/main amd64 gcc amd64 4:13.2.0-7ubuntu1 [5018 B] 358s Get:23 http://ftpmaster.internal/ubuntu oracular/main amd64 libstdc++-13-dev amd64 13.2.0-23ubuntu4 [2399 kB] 358s Get:24 http://ftpmaster.internal/ubuntu oracular/main amd64 g++-13-x86-64-linux-gnu amd64 13.2.0-23ubuntu4 [12.5 MB] 359s Get:25 http://ftpmaster.internal/ubuntu oracular/main amd64 g++-13 amd64 13.2.0-23ubuntu4 [14.5 kB] 359s Get:26 http://ftpmaster.internal/ubuntu oracular/main amd64 g++-x86-64-linux-gnu amd64 4:13.2.0-7ubuntu1 [964 B] 359s Get:27 http://ftpmaster.internal/ubuntu oracular/main amd64 g++ amd64 4:13.2.0-7ubuntu1 [1100 B] 359s Get:28 http://ftpmaster.internal/ubuntu oracular/main amd64 build-essential amd64 12.10ubuntu1 [4928 B] 359s Get:29 http://ftpmaster.internal/ubuntu oracular/main amd64 emacsen-common all 3.0.5 [12.1 kB] 359s Get:30 http://ftpmaster.internal/ubuntu oracular/main amd64 dictionaries-common all 1.29.7 [188 kB] 359s Get:31 http://ftpmaster.internal/ubuntu oracular/main amd64 gettext amd64 0.21-14ubuntu2 [864 kB] 359s Get:32 http://ftpmaster.internal/ubuntu oracular/main amd64 hunspell-en-us all 1:2020.12.07-2 [280 kB] 359s Get:33 http://ftpmaster.internal/ubuntu oracular/main amd64 libapr1t64 amd64 1.7.2-3.2 [106 kB] 359s Get:34 http://ftpmaster.internal/ubuntu oracular/main amd64 libaprutil1t64 amd64 1.6.3-1.1ubuntu7 [91.9 kB] 359s Get:35 http://ftpmaster.internal/ubuntu oracular/main amd64 libaspell15 amd64 0.60.8.1-1build1 [323 kB] 359s Get:36 http://ftpmaster.internal/ubuntu oracular/main amd64 libhunspell-1.7-0 amd64 1.7.2+really1.7.2-10build3 [294 kB] 359s Get:37 http://ftpmaster.internal/ubuntu oracular/main amd64 libenchant-2-2 amd64 2.3.3-2build2 [51.4 kB] 359s Get:38 http://ftpmaster.internal/ubuntu oracular/main amd64 libexttextcat-data all 3.4.7-1build1 [193 kB] 359s Get:39 http://ftpmaster.internal/ubuntu oracular/universe amd64 libserf-1-1 amd64 1.3.10-2 [48.0 kB] 359s Get:40 http://ftpmaster.internal/ubuntu oracular/universe amd64 libutf8proc3 amd64 2.9.0-1build1 [70.6 kB] 359s Get:41 http://ftpmaster.internal/ubuntu oracular/universe amd64 libsvn1 amd64 1.14.3-1build4 [1345 kB] 359s Get:42 http://ftpmaster.internal/ubuntu oracular/universe amd64 libxapian30 amd64 1.4.22-1build1 [716 kB] 359s Get:43 http://ftpmaster.internal/ubuntu oracular/main amd64 libxslt1.1 amd64 1.1.39-0exp1build1 [167 kB] 359s Get:44 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-aeidon all 1.11-2 [221 kB] 359s Get:45 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-all amd64 3.12.3-0ubuntu1 [888 B] 359s Get:46 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-soupsieve all 2.5-1 [33.0 kB] 359s Get:47 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-bs4 all 4.12.3-1 [109 kB] 359s Get:48 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-more-itertools all 10.2.0-1 [52.9 kB] 359s Get:49 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-jaraco.functools all 4.0.0-1 [10.7 kB] 359s Get:50 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-cheroot all 10.0.0+ds1-2 [73.0 kB] 359s Get:51 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-dateutil all 2.9.0-2 [80.3 kB] 359s Get:52 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-diff-match-patch all 20230430-1 [33.1 kB] 359s Get:53 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-enchant all 3.2.2-1 [34.0 kB] 359s Get:54 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-iniconfig all 1.1.1-2 [6024 B] 359s Get:55 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-rapidfuzz amd64 3.6.2+ds-3 [2021 kB] 359s Get:56 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-levenshtein amd64 0.25.1-3 [120 kB] 359s Get:57 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-lxml amd64 5.2.1-1 [1243 kB] 359s Get:58 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-mistletoe all 1.3.0-1 [38.0 kB] 359s Get:59 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-packaging all 24.0-1 [41.1 kB] 359s Get:60 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-ply all 3.11-6 [46.5 kB] 359s Get:61 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-phply all 1.2.6-1 [50.5 kB] 359s Get:62 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-pluggy all 1.5.0-1 [21.0 kB] 359s Get:63 http://ftpmaster.internal/ubuntu oracular-proposed/universe amd64 python3-pytest all 8.2.2-1ubuntu1 [250 kB] 359s Get:64 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-ruamel.yaml.clib amd64 0.2.8-1build1 [132 kB] 359s Get:65 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-ruamel.yaml all 0.17.21-1 [86.6 kB] 359s Get:66 http://ftpmaster.internal/ubuntu oracular/main amd64 python3-simplejson amd64 3.19.2-1build2 [54.5 kB] 359s Get:67 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-syrupy all 4.6.1-1 [42.8 kB] 359s Get:68 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-translate all 3.12.2-1ubuntu1 [318 kB] 359s Get:69 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-vobject all 0.9.6.1-2 [40.6 kB] 359s Get:70 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-xapian amd64 1.4.22-1build5 [373 kB] 359s Get:71 http://ftpmaster.internal/ubuntu oracular/universe amd64 subversion amd64 1.14.3-1build4 [908 kB] 359s Get:72 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-iniparse all 0.5-2 [20.0 kB] 359s Get:73 http://ftpmaster.internal/ubuntu oracular/universe amd64 python3-pycountry all 23.12.11+ds1-2 [29.9 kB] 359s Preconfiguring packages ... 359s Fetched 73.5 MB in 1s (120 MB/s) 359s Selecting previously unselected package gcc-13-base:amd64. 359s (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.) 359s Preparing to unpack .../00-gcc-13-base_13.2.0-23ubuntu4_amd64.deb ... 359s Unpacking gcc-13-base:amd64 (13.2.0-23ubuntu4) ... 359s Selecting previously unselected package libisl23:amd64. 359s Preparing to unpack .../01-libisl23_0.26-3build1_amd64.deb ... 359s Unpacking libisl23:amd64 (0.26-3build1) ... 359s Selecting previously unselected package libmpc3:amd64. 359s Preparing to unpack .../02-libmpc3_1.3.1-1build1_amd64.deb ... 359s Unpacking libmpc3:amd64 (1.3.1-1build1) ... 359s Selecting previously unselected package cpp-13-x86-64-linux-gnu. 359s Preparing to unpack .../03-cpp-13-x86-64-linux-gnu_13.2.0-23ubuntu4_amd64.deb ... 359s Unpacking cpp-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 360s Selecting previously unselected package cpp-13. 360s Preparing to unpack .../04-cpp-13_13.2.0-23ubuntu4_amd64.deb ... 360s Unpacking cpp-13 (13.2.0-23ubuntu4) ... 360s Selecting previously unselected package cpp-x86-64-linux-gnu. 360s Preparing to unpack .../05-cpp-x86-64-linux-gnu_4%3a13.2.0-7ubuntu1_amd64.deb ... 360s Unpacking cpp-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 360s Selecting previously unselected package cpp. 360s Preparing to unpack .../06-cpp_4%3a13.2.0-7ubuntu1_amd64.deb ... 360s Unpacking cpp (4:13.2.0-7ubuntu1) ... 360s Selecting previously unselected package libcc1-0:amd64. 360s Preparing to unpack .../07-libcc1-0_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking libcc1-0:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package libgomp1:amd64. 360s Preparing to unpack .../08-libgomp1_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking libgomp1:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package libitm1:amd64. 360s Preparing to unpack .../09-libitm1_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking libitm1:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package libatomic1:amd64. 360s Preparing to unpack .../10-libatomic1_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking libatomic1:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package libasan8:amd64. 360s Preparing to unpack .../11-libasan8_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking libasan8:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package liblsan0:amd64. 360s Preparing to unpack .../12-liblsan0_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking liblsan0:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package libtsan2:amd64. 360s Preparing to unpack .../13-libtsan2_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking libtsan2:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package libubsan1:amd64. 360s Preparing to unpack .../14-libubsan1_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking libubsan1:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package libhwasan0:amd64. 360s Preparing to unpack .../15-libhwasan0_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking libhwasan0:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package libquadmath0:amd64. 360s Preparing to unpack .../16-libquadmath0_14.1.0-1ubuntu1_amd64.deb ... 360s Unpacking libquadmath0:amd64 (14.1.0-1ubuntu1) ... 360s Selecting previously unselected package libgcc-13-dev:amd64. 360s Preparing to unpack .../17-libgcc-13-dev_13.2.0-23ubuntu4_amd64.deb ... 360s Unpacking libgcc-13-dev:amd64 (13.2.0-23ubuntu4) ... 360s Selecting previously unselected package gcc-13-x86-64-linux-gnu. 360s Preparing to unpack .../18-gcc-13-x86-64-linux-gnu_13.2.0-23ubuntu4_amd64.deb ... 360s Unpacking gcc-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 361s Selecting previously unselected package gcc-13. 361s Preparing to unpack .../19-gcc-13_13.2.0-23ubuntu4_amd64.deb ... 361s Unpacking gcc-13 (13.2.0-23ubuntu4) ... 361s Selecting previously unselected package gcc-x86-64-linux-gnu. 361s Preparing to unpack .../20-gcc-x86-64-linux-gnu_4%3a13.2.0-7ubuntu1_amd64.deb ... 361s Unpacking gcc-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 361s Selecting previously unselected package gcc. 361s Preparing to unpack .../21-gcc_4%3a13.2.0-7ubuntu1_amd64.deb ... 361s Unpacking gcc (4:13.2.0-7ubuntu1) ... 361s Selecting previously unselected package libstdc++-13-dev:amd64. 361s Preparing to unpack .../22-libstdc++-13-dev_13.2.0-23ubuntu4_amd64.deb ... 361s Unpacking libstdc++-13-dev:amd64 (13.2.0-23ubuntu4) ... 361s Selecting previously unselected package g++-13-x86-64-linux-gnu. 361s Preparing to unpack .../23-g++-13-x86-64-linux-gnu_13.2.0-23ubuntu4_amd64.deb ... 361s Unpacking g++-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 361s Selecting previously unselected package g++-13. 361s Preparing to unpack .../24-g++-13_13.2.0-23ubuntu4_amd64.deb ... 361s Unpacking g++-13 (13.2.0-23ubuntu4) ... 361s Selecting previously unselected package g++-x86-64-linux-gnu. 361s Preparing to unpack .../25-g++-x86-64-linux-gnu_4%3a13.2.0-7ubuntu1_amd64.deb ... 361s Unpacking g++-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 361s Selecting previously unselected package g++. 361s Preparing to unpack .../26-g++_4%3a13.2.0-7ubuntu1_amd64.deb ... 361s Unpacking g++ (4:13.2.0-7ubuntu1) ... 361s Selecting previously unselected package build-essential. 361s Preparing to unpack .../27-build-essential_12.10ubuntu1_amd64.deb ... 361s Unpacking build-essential (12.10ubuntu1) ... 361s Selecting previously unselected package emacsen-common. 361s Preparing to unpack .../28-emacsen-common_3.0.5_all.deb ... 361s Unpacking emacsen-common (3.0.5) ... 361s Selecting previously unselected package dictionaries-common. 361s Preparing to unpack .../29-dictionaries-common_1.29.7_all.deb ... 361s Adding 'diversion of /usr/share/dict/words to /usr/share/dict/words.pre-dictionaries-common by dictionaries-common' 361s Unpacking dictionaries-common (1.29.7) ... 361s Selecting previously unselected package gettext. 361s Preparing to unpack .../30-gettext_0.21-14ubuntu2_amd64.deb ... 361s Unpacking gettext (0.21-14ubuntu2) ... 362s Selecting previously unselected package hunspell-en-us. 362s Preparing to unpack .../31-hunspell-en-us_1%3a2020.12.07-2_all.deb ... 362s Unpacking hunspell-en-us (1:2020.12.07-2) ... 362s Selecting previously unselected package libapr1t64:amd64. 362s Preparing to unpack .../32-libapr1t64_1.7.2-3.2_amd64.deb ... 362s Unpacking libapr1t64:amd64 (1.7.2-3.2) ... 362s Selecting previously unselected package libaprutil1t64:amd64. 362s Preparing to unpack .../33-libaprutil1t64_1.6.3-1.1ubuntu7_amd64.deb ... 362s Unpacking libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 362s Selecting previously unselected package libaspell15:amd64. 362s Preparing to unpack .../34-libaspell15_0.60.8.1-1build1_amd64.deb ... 362s Unpacking libaspell15:amd64 (0.60.8.1-1build1) ... 362s Selecting previously unselected package libhunspell-1.7-0:amd64. 362s Preparing to unpack .../35-libhunspell-1.7-0_1.7.2+really1.7.2-10build3_amd64.deb ... 362s Unpacking libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 362s Selecting previously unselected package libenchant-2-2:amd64. 362s Preparing to unpack .../36-libenchant-2-2_2.3.3-2build2_amd64.deb ... 362s Unpacking libenchant-2-2:amd64 (2.3.3-2build2) ... 362s Selecting previously unselected package libexttextcat-data. 362s Preparing to unpack .../37-libexttextcat-data_3.4.7-1build1_all.deb ... 362s Unpacking libexttextcat-data (3.4.7-1build1) ... 362s Selecting previously unselected package libserf-1-1:amd64. 362s Preparing to unpack .../38-libserf-1-1_1.3.10-2_amd64.deb ... 362s Unpacking libserf-1-1:amd64 (1.3.10-2) ... 362s Selecting previously unselected package libutf8proc3:amd64. 362s Preparing to unpack .../39-libutf8proc3_2.9.0-1build1_amd64.deb ... 362s Unpacking libutf8proc3:amd64 (2.9.0-1build1) ... 362s Selecting previously unselected package libsvn1:amd64. 362s Preparing to unpack .../40-libsvn1_1.14.3-1build4_amd64.deb ... 362s Unpacking libsvn1:amd64 (1.14.3-1build4) ... 362s Selecting previously unselected package libxapian30:amd64. 362s Preparing to unpack .../41-libxapian30_1.4.22-1build1_amd64.deb ... 362s Unpacking libxapian30:amd64 (1.4.22-1build1) ... 362s Selecting previously unselected package libxslt1.1:amd64. 362s Preparing to unpack .../42-libxslt1.1_1.1.39-0exp1build1_amd64.deb ... 362s Unpacking libxslt1.1:amd64 (1.1.39-0exp1build1) ... 362s Selecting previously unselected package python3-aeidon. 362s Preparing to unpack .../43-python3-aeidon_1.11-2_all.deb ... 362s Unpacking python3-aeidon (1.11-2) ... 362s Selecting previously unselected package python3-all. 362s Preparing to unpack .../44-python3-all_3.12.3-0ubuntu1_amd64.deb ... 362s Unpacking python3-all (3.12.3-0ubuntu1) ... 362s Selecting previously unselected package python3-soupsieve. 362s Preparing to unpack .../45-python3-soupsieve_2.5-1_all.deb ... 362s Unpacking python3-soupsieve (2.5-1) ... 362s Selecting previously unselected package python3-bs4. 362s Preparing to unpack .../46-python3-bs4_4.12.3-1_all.deb ... 362s Unpacking python3-bs4 (4.12.3-1) ... 362s Selecting previously unselected package python3-more-itertools. 362s Preparing to unpack .../47-python3-more-itertools_10.2.0-1_all.deb ... 362s Unpacking python3-more-itertools (10.2.0-1) ... 362s Selecting previously unselected package python3-jaraco.functools. 362s Preparing to unpack .../48-python3-jaraco.functools_4.0.0-1_all.deb ... 362s Unpacking python3-jaraco.functools (4.0.0-1) ... 362s Selecting previously unselected package python3-cheroot. 362s Preparing to unpack .../49-python3-cheroot_10.0.0+ds1-2_all.deb ... 362s Unpacking python3-cheroot (10.0.0+ds1-2) ... 362s Selecting previously unselected package python3-dateutil. 362s Preparing to unpack .../50-python3-dateutil_2.9.0-2_all.deb ... 362s Unpacking python3-dateutil (2.9.0-2) ... 362s Selecting previously unselected package python3-diff-match-patch. 362s Preparing to unpack .../51-python3-diff-match-patch_20230430-1_all.deb ... 362s Unpacking python3-diff-match-patch (20230430-1) ... 362s Selecting previously unselected package python3-enchant. 362s Preparing to unpack .../52-python3-enchant_3.2.2-1_all.deb ... 362s Unpacking python3-enchant (3.2.2-1) ... 362s Selecting previously unselected package python3-iniconfig. 362s Preparing to unpack .../53-python3-iniconfig_1.1.1-2_all.deb ... 362s Unpacking python3-iniconfig (1.1.1-2) ... 362s Selecting previously unselected package python3-rapidfuzz. 362s Preparing to unpack .../54-python3-rapidfuzz_3.6.2+ds-3_amd64.deb ... 362s Unpacking python3-rapidfuzz (3.6.2+ds-3) ... 362s Selecting previously unselected package python3-levenshtein. 362s Preparing to unpack .../55-python3-levenshtein_0.25.1-3_amd64.deb ... 362s Unpacking python3-levenshtein (0.25.1-3) ... 362s Selecting previously unselected package python3-lxml:amd64. 362s Preparing to unpack .../56-python3-lxml_5.2.1-1_amd64.deb ... 362s Unpacking python3-lxml:amd64 (5.2.1-1) ... 363s Selecting previously unselected package python3-mistletoe. 363s Preparing to unpack .../57-python3-mistletoe_1.3.0-1_all.deb ... 363s Unpacking python3-mistletoe (1.3.0-1) ... 363s Selecting previously unselected package python3-packaging. 363s Preparing to unpack .../58-python3-packaging_24.0-1_all.deb ... 363s Unpacking python3-packaging (24.0-1) ... 363s Selecting previously unselected package python3-ply. 363s Preparing to unpack .../59-python3-ply_3.11-6_all.deb ... 363s Unpacking python3-ply (3.11-6) ... 363s Selecting previously unselected package python3-phply. 363s Preparing to unpack .../60-python3-phply_1.2.6-1_all.deb ... 363s Unpacking python3-phply (1.2.6-1) ... 363s Selecting previously unselected package python3-pluggy. 363s Preparing to unpack .../61-python3-pluggy_1.5.0-1_all.deb ... 363s Unpacking python3-pluggy (1.5.0-1) ... 363s Selecting previously unselected package python3-pytest. 363s Preparing to unpack .../62-python3-pytest_8.2.2-1ubuntu1_all.deb ... 363s Unpacking python3-pytest (8.2.2-1ubuntu1) ... 363s Selecting previously unselected package python3-ruamel.yaml.clib:amd64. 363s Preparing to unpack .../63-python3-ruamel.yaml.clib_0.2.8-1build1_amd64.deb ... 363s Unpacking python3-ruamel.yaml.clib:amd64 (0.2.8-1build1) ... 363s Selecting previously unselected package python3-ruamel.yaml. 363s Preparing to unpack .../64-python3-ruamel.yaml_0.17.21-1_all.deb ... 363s Unpacking python3-ruamel.yaml (0.17.21-1) ... 363s Selecting previously unselected package python3-simplejson. 363s Preparing to unpack .../65-python3-simplejson_3.19.2-1build2_amd64.deb ... 363s Unpacking python3-simplejson (3.19.2-1build2) ... 363s Selecting previously unselected package python3-syrupy. 363s Preparing to unpack .../66-python3-syrupy_4.6.1-1_all.deb ... 363s Unpacking python3-syrupy (4.6.1-1) ... 363s Selecting previously unselected package python3-translate. 363s Preparing to unpack .../67-python3-translate_3.12.2-1ubuntu1_all.deb ... 363s Unpacking python3-translate (3.12.2-1ubuntu1) ... 363s Selecting previously unselected package python3-vobject. 363s Preparing to unpack .../68-python3-vobject_0.9.6.1-2_all.deb ... 363s Unpacking python3-vobject (0.9.6.1-2) ... 363s Selecting previously unselected package python3-xapian. 363s Preparing to unpack .../69-python3-xapian_1.4.22-1build5_amd64.deb ... 363s Unpacking python3-xapian (1.4.22-1build5) ... 363s Selecting previously unselected package subversion. 363s Preparing to unpack .../70-subversion_1.14.3-1build4_amd64.deb ... 363s Unpacking subversion (1.14.3-1build4) ... 363s Selecting previously unselected package python3-iniparse. 363s Preparing to unpack .../71-python3-iniparse_0.5-2_all.deb ... 363s Unpacking python3-iniparse (0.5-2) ... 363s Selecting previously unselected package python3-pycountry. 363s Preparing to unpack .../72-python3-pycountry_23.12.11+ds1-2_all.deb ... 363s Unpacking python3-pycountry (23.12.11+ds1-2) ... 363s Setting up python3-more-itertools (10.2.0-1) ... 364s Setting up python3-iniconfig (1.1.1-2) ... 364s Setting up libxapian30:amd64 (1.4.22-1build1) ... 364s Setting up python3-rapidfuzz (3.6.2+ds-3) ... 364s Setting up python3-diff-match-patch (20230430-1) ... 364s Setting up python3-jaraco.functools (4.0.0-1) ... 364s Setting up python3-aeidon (1.11-2) ... 364s Setting up libutf8proc3:amd64 (2.9.0-1build1) ... 364s Setting up libaspell15:amd64 (0.60.8.1-1build1) ... 364s Setting up python3-ply (3.11-6) ... 365s Setting up python3-ruamel.yaml.clib:amd64 (0.2.8-1build1) ... 365s Setting up python3-all (3.12.3-0ubuntu1) ... 365s Setting up libgomp1:amd64 (14.1.0-1ubuntu1) ... 365s Setting up python3-simplejson (3.19.2-1build2) ... 365s Setting up python3-packaging (24.0-1) ... 365s Setting up gcc-13-base:amd64 (13.2.0-23ubuntu4) ... 365s Setting up emacsen-common (3.0.5) ... 365s Setting up python3-cheroot (10.0.0+ds1-2) ... 365s Setting up libquadmath0:amd64 (14.1.0-1ubuntu1) ... 365s Setting up python3-pycountry (23.12.11+ds1-2) ... 365s Setting up python3-xapian (1.4.22-1build5) ... 365s Setting up libmpc3:amd64 (1.3.1-1build1) ... 365s Setting up libatomic1:amd64 (14.1.0-1ubuntu1) ... 365s Setting up python3-pluggy (1.5.0-1) ... 366s Setting up libubsan1:amd64 (14.1.0-1ubuntu1) ... 366s Setting up python3-ruamel.yaml (0.17.21-1) ... 366s Setting up python3-mistletoe (1.3.0-1) ... 366s Setting up libhwasan0:amd64 (14.1.0-1ubuntu1) ... 366s Setting up libasan8:amd64 (14.1.0-1ubuntu1) ... 366s Setting up libexttextcat-data (3.4.7-1build1) ... 366s Setting up libapr1t64:amd64 (1.7.2-3.2) ... 366s Setting up libxslt1.1:amd64 (1.1.39-0exp1build1) ... 366s Setting up python3-dateutil (2.9.0-2) ... 366s Setting up python3-levenshtein (0.25.1-3) ... 366s Setting up libtsan2:amd64 (14.1.0-1ubuntu1) ... 366s Setting up libhunspell-1.7-0:amd64 (1.7.2+really1.7.2-10build3) ... 366s Setting up libisl23:amd64 (0.26-3build1) ... 366s Setting up python3-soupsieve (2.5-1) ... 366s Setting up python3-iniparse (0.5-2) ... 367s Setting up libcc1-0:amd64 (14.1.0-1ubuntu1) ... 367s Setting up liblsan0:amd64 (14.1.0-1ubuntu1) ... 367s Setting up libitm1:amd64 (14.1.0-1ubuntu1) ... 367s Setting up libaprutil1t64:amd64 (1.6.3-1.1ubuntu7) ... 367s Setting up python3-vobject (0.9.6.1-2) ... 367s /usr/lib/python3/dist-packages/vobject/base.py:736: SyntaxWarning: invalid escape sequence '\-' 367s patterns['name'] = '[a-zA-Z0-9\-_]+' 367s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\;' 367s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 367s /usr/lib/python3/dist-packages/vobject/base.py:1219: SyntaxWarning: invalid escape sequence '\,' 367s s = s.replace("\\", "\\\\").replace(";", "\;").replace(",", "\,") 367s /usr/lib/python3/dist-packages/vobject/hcalendar.py:1: SyntaxWarning: invalid escape sequence '\,' 367s """ 367s Setting up gettext (0.21-14ubuntu2) ... 367s Setting up python3-phply (1.2.6-1) ... 367s Setting up dictionaries-common (1.29.7) ... 367s Setting up cpp-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 367s Setting up python3-pytest (8.2.2-1ubuntu1) ... 368s Setting up python3-syrupy (4.6.1-1) ... 368s Setting up libserf-1-1:amd64 (1.3.10-2) ... 368s Setting up python3-bs4 (4.12.3-1) ... 368s Setting up libgcc-13-dev:amd64 (13.2.0-23ubuntu4) ... 368s Setting up python3-lxml:amd64 (5.2.1-1) ... 368s Setting up hunspell-en-us (1:2020.12.07-2) ... 368s Setting up libsvn1:amd64 (1.14.3-1build4) ... 368s Setting up libstdc++-13-dev:amd64 (13.2.0-23ubuntu4) ... 368s Setting up cpp-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 368s Setting up cpp-13 (13.2.0-23ubuntu4) ... 368s Setting up libenchant-2-2:amd64 (2.3.3-2build2) ... 368s Setting up gcc-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 368s Setting up subversion (1.14.3-1build4) ... 368s Setting up python3-enchant (3.2.2-1) ... 369s Setting up gcc-13 (13.2.0-23ubuntu4) ... 369s Setting up python3-translate (3.12.2-1ubuntu1) ... 369s Setting up cpp (4:13.2.0-7ubuntu1) ... 369s Setting up g++-13-x86-64-linux-gnu (13.2.0-23ubuntu4) ... 369s Setting up gcc-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 369s Setting up gcc (4:13.2.0-7ubuntu1) ... 369s Setting up g++-x86-64-linux-gnu (4:13.2.0-7ubuntu1) ... 369s Setting up g++-13 (13.2.0-23ubuntu4) ... 369s Setting up g++ (4:13.2.0-7ubuntu1) ... 369s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 369s Setting up build-essential (12.10ubuntu1) ... 369s Processing triggers for libc-bin (2.39-0ubuntu8.1) ... 369s Processing triggers for man-db (2.12.1-1) ... 371s Processing triggers for install-info (7.1-3build2) ... 371s Processing triggers for dictionaries-common (1.29.7) ... 372s Reading package lists... 372s Building dependency tree... 372s Reading state information... 373s Starting pkgProblemResolver with broken count: 0 373s Starting 2 pkgProblemResolver with broken count: 0 373s Done 373s The following NEW packages will be installed: 373s autopkgtest-satdep 373s 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 373s Need to get 0 B/700 B of archives. 373s After this operation, 0 B of additional disk space will be used. 373s Get:1 /tmp/autopkgtest.ut5eEf/4-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [700 B] 373s Selecting previously unselected package autopkgtest-satdep. 373s (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 ... 79068 files and directories currently installed.) 373s Preparing to unpack .../4-autopkgtest-satdep.deb ... 373s Unpacking autopkgtest-satdep (0) ... 373s Setting up autopkgtest-satdep (0) ... 374s autopkgtest: WARNING: package python3-translate:i386 is not installed though it should be 375s (Reading database ... 79068 files and directories currently installed.) 375s Removing autopkgtest-satdep (0) ... 376s autopkgtest [01:29:38]: test python3-translate: [----------------------- 376s ============================= test session starts ============================== 376s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 376s cachedir: .pytest_cache 376s rootdir: /tmp/autopkgtest.ut5eEf/autopkgtest_tmp 376s plugins: syrupy-4.6.1 382s collecting ... collected 3313 items / 2 skipped 382s 382s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 382s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 382s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 382s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 382s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 382s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 382s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 382s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 382s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 382s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 382s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 382s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 382s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 383s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 383s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 383s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 383s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 383s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 383s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 383s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 383s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 383s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 383s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 383s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 383s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 383s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 383s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 383s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 383s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 383s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 383s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 383s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 383s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 383s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 383s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 383s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 383s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 383s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 383s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 383s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 383s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 383s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 383s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 383s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 383s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 384s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 384s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 384s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 384s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 384s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 384s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 384s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 384s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 384s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 384s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 384s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 384s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 384s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 384s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 384s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 384s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 384s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 384s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 384s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 385s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 385s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 385s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 385s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 385s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 385s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 385s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 385s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 385s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 385s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 385s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 385s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 385s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 385s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 385s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 385s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 385s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 385s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 385s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 385s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 386s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 386s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 386s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 386s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 386s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 386s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 386s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 386s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 386s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 386s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 386s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 386s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 386s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 386s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 386s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 386s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 386s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 386s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 386s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 386s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 386s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 386s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 386s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 386s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 386s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 386s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 386s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 386s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 386s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 386s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 386s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 386s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 386s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 386s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 386s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 387s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 387s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 387s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 387s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 387s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 387s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 387s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 387s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 387s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 387s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 387s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 387s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 387s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 387s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 387s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 387s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 387s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 387s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 387s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 387s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 387s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 387s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 387s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 387s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 387s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 387s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 387s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 387s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 387s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 387s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 387s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 387s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 387s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 387s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 387s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 387s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 387s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 387s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 387s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 387s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 387s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 387s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 387s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 387s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 387s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 387s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 387s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 387s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 387s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 387s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 387s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 387s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 388s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 388s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 388s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 388s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 388s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 388s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 388s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 389s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 389s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 389s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 389s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 389s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 389s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 389s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 389s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 389s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 389s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 389s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 389s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 389s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 389s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 389s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 389s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 389s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 389s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 389s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 389s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 389s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 389s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 389s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 389s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 389s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 389s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 389s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 389s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 389s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 389s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 389s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 389s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 389s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 389s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 389s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 389s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 389s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 389s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 389s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 389s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 389s tests/translate/storage/test_mo.py::TestMOFile::test_output SKIPPED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 389s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[\u015e\u0167\u0159\u012b\u019e\u0260 {ok}-\u015e\u0167\u0159\u012b\u019e\u0260] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 389s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 389s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 389s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 389s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 389s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 389s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 389s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 389s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 390s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 390s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 390s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 390s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 390s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 390s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 390s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 390s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 390s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 390s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 390s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 390s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 390s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 390s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 390s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 390s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 390s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 390s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 391s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 391s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 391s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 391s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 391s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 391s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 391s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 391s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 391s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 391s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 391s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 391s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 391s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 391s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 391s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 391s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 391s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 391s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 391s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 391s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 391s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 391s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 392s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 392s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 392s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 392s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 392s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 392s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 392s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 392s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 392s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 392s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 392s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 392s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 392s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 392s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 392s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 392s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 392s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 392s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 392s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 392s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 392s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 392s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 393s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 393s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 394s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 394s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 394s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 394s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 394s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 394s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 394s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 394s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 394s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 394s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 394s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 394s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 394s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 394s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 394s tests/translate/tools/test_help.py::test_help[build_tmdb] SKIPPED (S...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[phppo2pypo] SKIPPED (S...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[poclean] SKIPPED (Skip...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[pocompile] SKIPPED (Sk...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[poconflicts] SKIPPED (...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[pocount] SKIPPED (Skip...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[podebug] SKIPPED (Skip...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[pogrep] SKIPPED (Skip ...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[pomerge] SKIPPED (Skip...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[porestructure] SKIPPED [ 94%] 394s tests/translate/tools/test_help.py::test_help[posegment] SKIPPED (Sk...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[poswap] SKIPPED (Skip ...) [ 94%] 394s tests/translate/tools/test_help.py::test_help[poterminology] SKIPPED [ 95%] 394s tests/translate/tools/test_help.py::test_help[pretranslate] SKIPPED [ 95%] 394s tests/translate/tools/test_help.py::test_help[pydiff] SKIPPED (Skip ...) [ 95%] 394s tests/translate/tools/test_help.py::test_help[pypo2phppo] SKIPPED (S...) [ 95%] 394s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 394s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 394s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 394s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 394s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 394s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 394s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 394s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 394s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 394s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 394s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 394s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 395s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 395s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 395s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff SKIPPED [ 99%] 395s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff SKIPPED [100%] 395s 395s ================================== XFAILURES =================================== 395s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 395s 395s self = 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_accelerator_keys_not_in_sentence(self): 395s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 395s dtdtemplate = """ 395s """ 395s dtdlanguage = """ 395s """ 395s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 395s print(pofile) 395s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 395s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 395s 395s tests/translate/convert/test_dtd2po.py:348: AttributeError 395s ----------------------------- Captured stdout call ----------------------------- 395s 395s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 395s 395s self = 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_accelerator_keys_not_in_sentence(self): 395s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 395s dtdtemplate = """ 395s """ 395s dtdlanguage = """ 395s """ 395s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 395s print(pofile) 395s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 395s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 395s 395s tests/translate/convert/test_dtd2po.py:348: AttributeError 395s ----------------------------- Captured stdout call ----------------------------- 395s 395s ________________ TestPO2Php.test_merging_propertyless_template _________________ 395s 395s self = 395s 395s @mark.xfail(reason="Need to review if we want this behaviour") 395s def test_merging_propertyless_template(self): 395s """Check that when merging with a template with no property values that we copy the template.""" 395s posource = "" 395s proptemplate = "# A comment\n" 395s propexpected = proptemplate 395s > propfile = self.merge2prop(proptemplate, posource) 395s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 395s 395s tests/translate/convert/test_po2php.py:386: AttributeError 395s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 395s 395s self = 395s 395s @mark.xfail(reason="Need to review if we want this behaviour") 395s def test_merging_propertyless_template(self): 395s """Check that when merging with a template with no property values that we copy the template.""" 395s posource = "" 395s proptemplate = "# A comment\n" 395s propexpected = proptemplate 395s > propfile = self.merge2prop(proptemplate, posource) 395s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 395s 395s tests/translate/convert/test_po2php.py:386: AttributeError 395s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 395s 395s self = 395s 395s @mark.xfail(reason="Not implemented - review if this is even correct") 395s def test_merging_msgid_change(self): 395s """Tests that if the msgid changes but the location stays the same that we merge.""" 395s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 395s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s newpo = self.convertpot(potsource, posource) 395s print(newpo) 395s > assert str(self.singleunit(newpo)) == poexpected 395s 395s tests/translate/convert/test_pot2po.py:121: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s pofile = 395s 395s @staticmethod 395s def singleunit(pofile): 395s """Checks that the pofile contains a single non-header unit, and returns it.""" 395s > assert len(pofile.units) == 2 395s E assert 3 == 2 395s E + where 3 = len([, , ]) 395s E + where [, , ] = .units 395s 395s tests/translate/convert/test_pot2po.py:25: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s 395s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 395s 395s self = 395s 395s @mark.xfail(reason="Not Implemented - needs review") 395s def test_merging_accelerator_changes(self): 395s """Test that a change in the accelerator localtion still allows merging.""" 395s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 395s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 395s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 395s newpo = self.convertpot(potsource, posource) 395s print(newpo) 395s > assert str(self.singleunit(newpo)) == poexpected 395s 395s tests/translate/convert/test_pot2po.py:190: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s pofile = 395s 395s @staticmethod 395s def singleunit(pofile): 395s """Checks that the pofile contains a single non-header unit, and returns it.""" 395s > assert len(pofile.units) == 2 395s E assert 3 == 2 395s E + where 3 = len([, , ]) 395s E + where [, , ] = .units 395s 395s tests/translate/convert/test_pot2po.py:25: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s 395s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 395s 395s self = 395s 395s @mark.xfail(reason="Not Implemented - review if this is even correct") 395s def test_lines_cut_differently(self): 395s """Checks that the correct formatting is preserved when pot an po lines differ.""" 395s potsource = ( 395s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 395s ) 395s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 395s newpo = self.convertpot(potsource, posource) 395s newpounit = self.singleunit(newpo) 395s > assert str(newpounit) == posource 395s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 395s E 395s E #: simple.label 395s E - msgid "Line" 395s E + msgid "Line split " 395s E ? +++++++ 395s E - " split differently" 395s E ? ------- 395s E + "differently" 395s E msgstr "Lyne verskillend gesny" 395s 395s tests/translate/convert/test_pot2po.py:201: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s #: simple.label 395s msgid "Line split " 395s "differently" 395s msgstr "Lyne verskillend gesny" 395s 395s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 395s 395s self = 395s 395s @mark.xfail(reason="Not implemented - review if this is even correct") 395s def test_merging_msgid_change(self): 395s """Tests that if the msgid changes but the location stays the same that we merge.""" 395s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 395s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s newpo = self.convertpot(potsource, posource) 395s print(newpo) 395s > assert str(self.singleunit(newpo)) == poexpected 395s 395s tests/translate/convert/test_pot2po.py:121: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s pofile = 395s 395s @staticmethod 395s def singleunit(pofile): 395s """Checks that the pofile contains a single non-header unit, and returns it.""" 395s > assert len(pofile.units) == 2 395s E assert 3 == 2 395s E + where 3 = len([, , ]) 395s E + where [, , ] = .units 395s 395s tests/translate/convert/test_pot2po.py:25: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s 395s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 395s 395s self = 395s 395s @mark.xfail(reason="Not Implemented - needs review") 395s def test_merging_accelerator_changes(self): 395s """Test that a change in the accelerator localtion still allows merging.""" 395s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 395s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 395s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 395s newpo = self.convertpot(potsource, posource) 395s print(newpo) 395s > assert str(self.singleunit(newpo)) == poexpected 395s 395s tests/translate/convert/test_pot2po.py:190: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s pofile = 395s 395s @staticmethod 395s def singleunit(pofile): 395s """Checks that the pofile contains a single non-header unit, and returns it.""" 395s > assert len(pofile.units) == 2 395s E assert 3 == 2 395s E + where 3 = len([, , ]) 395s E + where [, , ] = .units 395s 395s tests/translate/convert/test_pot2po.py:25: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s 395s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 395s 395s self = 395s 395s @mark.xfail(reason="Not Implemented - review if this is even correct") 395s def test_lines_cut_differently(self): 395s """Checks that the correct formatting is preserved when pot an po lines differ.""" 395s potsource = ( 395s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 395s ) 395s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 395s newpo = self.convertpot(potsource, posource) 395s newpounit = self.singleunit(newpo) 395s > assert str(newpounit) == posource 395s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 395s E 395s E #: simple.label 395s E - msgid "Line" 395s E + msgid "Line split " 395s E ? +++++++ 395s E - " split differently" 395s E ? ------- 395s E + "differently" 395s E msgstr "Lyne verskillend gesny" 395s 395s tests/translate/convert/test_pot2po.py:201: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s #: simple.label 395s msgid "Line split " 395s "differently" 395s msgstr "Lyne verskillend gesny" 395s 395s ________________________ TestYAML2PO.test_no_duplicates ________________________ 395s 395s self = 395s input = '\nfoo: bar\nfoo: baz\n' 395s 395s def parse(self, input): 395s """Parse the given file or file source string.""" 395s if hasattr(input, "name"): 395s self.filename = input.name 395s elif not getattr(self, "filename", ""): 395s self.filename = "" 395s if hasattr(input, "read"): 395s src = input.read() 395s input.close() 395s input = src 395s if isinstance(input, bytes): 395s input = input.decode("utf-8") 395s try: 395s > self._original = self.yaml.load(input) 395s 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 395s return constructor.get_single_data() 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 395s return self.construct_document(node) 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 395s for _dummy in generator: 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 395s self.construct_mapping(node, data, deep=True) 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 395s if self.check_mapping_key(node, key_node, maptyp, key, value): 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = 395s node = MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag=...'bar')), (ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag='tag:yaml.org,2002:str', value='baz'))]) 395s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 395s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 395s 395s def check_mapping_key(self, node, key_node, mapping, key, value): 395s # type: (Any, Any, Any, Any, Any) -> bool 395s """return True if key is unique""" 395s if key in mapping: 395s if not self.allow_duplicate_keys: 395s mk = mapping.get(key) 395s args = [ 395s 'while constructing a mapping', 395s node.start_mark, 395s 'found duplicate key "{}" with value "{}" ' 395s '(original value: "{}")'.format(key, value, mk), 395s key_node.start_mark, 395s """ 395s To suppress this check see: 395s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 395s """, 395s """\ 395s Duplicate keys will become an error in future releases, and are errors 395s by default when using the new API. 395s """, 395s ] 395s if self.allow_duplicate_keys is None: 395s warnings.warn(DuplicateKeyFutureWarning(*args)) 395s else: 395s > raise DuplicateKeyError(*args) 395s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 395s E in "", line 2, column 1: 395s E foo: bar 395s E ^ (line: 2) 395s E found duplicate key "foo" with value "baz" (original value: "bar") 395s E in "", line 3, column 1: 395s E foo: baz 395s E ^ (line: 3) 395s E 395s E To suppress this check see: 395s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 395s 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 395s 395s During handling of the above exception, another exception occurred: 395s 395s self = 395s 395s @pytest.mark.xfail(reason="This is invalid YAML document") 395s def test_no_duplicates(self): 395s """Check converting drops duplicates.""" 395s input_string = """ 395s foo: bar 395s foo: baz 395s """ 395s > target_store = self._convert_to_store(input_string) 395s 395s tests/translate/convert/test_yaml2po.py:112: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 395s return self._convert(*args, **kwargs)[0] 395s tests/translate/convert/test_yaml2po.py:28: in _convert 395s converter = self.ConverterClass( 395s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 395s self.source_store = self.SourceStoreClass(input_file) 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 395s self.parse(inputfile) 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = 395s input = '\nfoo: bar\nfoo: baz\n' 395s 395s def parse(self, input): 395s """Parse the given file or file source string.""" 395s if hasattr(input, "name"): 395s self.filename = input.name 395s elif not getattr(self, "filename", ""): 395s self.filename = "" 395s if hasattr(input, "read"): 395s src = input.read() 395s input.close() 395s input = src 395s if isinstance(input, bytes): 395s input = input.decode("utf-8") 395s try: 395s self._original = self.yaml.load(input) 395s except YAMLError as e: 395s message = getattr(e, "problem", getattr(e, "message", str(e))) 395s if hasattr(e, "problem_mark"): 395s message += f" {e.problem_mark}" 395s > raise base.ParseError(message) 395s E translate.storage.base.ParseError: 'found duplicate key "foo" with value "baz" (original value: "bar") in "", line 3, column 1:\n foo: baz\n ^ (line: 3)' 395s 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 395s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 395s 395s self = 395s input = '\nfoo: bar\nfoo: baz\n' 395s 395s def parse(self, input): 395s """Parse the given file or file source string.""" 395s if hasattr(input, "name"): 395s self.filename = input.name 395s elif not getattr(self, "filename", ""): 395s self.filename = "" 395s if hasattr(input, "read"): 395s src = input.read() 395s input.close() 395s input = src 395s if isinstance(input, bytes): 395s input = input.decode("utf-8") 395s try: 395s > self._original = self.yaml.load(input) 395s 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 395s return constructor.get_single_data() 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 395s return self.construct_document(node) 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 395s for _dummy in generator: 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 395s self.construct_mapping(node, data, deep=True) 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 395s if self.check_mapping_key(node, key_node, maptyp, key, value): 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = 395s node = MappingNode(tag='tag:yaml.org,2002:map', value=[(ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag=...'bar')), (ScalarNode(tag='tag:yaml.org,2002:str', value='foo'), ScalarNode(tag='tag:yaml.org,2002:str', value='baz'))]) 395s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 395s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 395s 395s def check_mapping_key(self, node, key_node, mapping, key, value): 395s # type: (Any, Any, Any, Any, Any) -> bool 395s """return True if key is unique""" 395s if key in mapping: 395s if not self.allow_duplicate_keys: 395s mk = mapping.get(key) 395s args = [ 395s 'while constructing a mapping', 395s node.start_mark, 395s 'found duplicate key "{}" with value "{}" ' 395s '(original value: "{}")'.format(key, value, mk), 395s key_node.start_mark, 395s """ 395s To suppress this check see: 395s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 395s """, 395s """\ 395s Duplicate keys will become an error in future releases, and are errors 395s by default when using the new API. 395s """, 395s ] 395s if self.allow_duplicate_keys is None: 395s warnings.warn(DuplicateKeyFutureWarning(*args)) 395s else: 395s > raise DuplicateKeyError(*args) 395s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 395s E in "", line 2, column 1: 395s E foo: bar 395s E ^ (line: 2) 395s E found duplicate key "foo" with value "baz" (original value: "bar") 395s E in "", line 3, column 1: 395s E foo: baz 395s E ^ (line: 3) 395s E 395s E To suppress this check see: 395s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 395s 395s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 395s 395s During handling of the above exception, another exception occurred: 395s 395s self = 395s 395s @pytest.mark.xfail(reason="This is invalid YAML document") 395s def test_no_duplicates(self): 395s """Check converting drops duplicates.""" 395s input_string = """ 395s foo: bar 395s foo: baz 395s """ 395s > target_store = self._convert_to_store(input_string) 395s 395s tests/translate/convert/test_yaml2po.py:112: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 395s return self._convert(*args, **kwargs)[0] 395s tests/translate/convert/test_yaml2po.py:28: in _convert 395s converter = self.ConverterClass( 395s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 395s self.source_store = self.SourceStoreClass(input_file) 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 395s self.parse(inputfile) 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = 395s input = '\nfoo: bar\nfoo: baz\n' 395s 395s def parse(self, input): 395s """Parse the given file or file source string.""" 395s if hasattr(input, "name"): 395s self.filename = input.name 395s elif not getattr(self, "filename", ""): 395s self.filename = "" 395s if hasattr(input, "read"): 395s src = input.read() 395s input.close() 395s input = src 395s if isinstance(input, bytes): 395s input = input.decode("utf-8") 395s try: 395s self._original = self.yaml.load(input) 395s except YAMLError as e: 395s message = getattr(e, "problem", getattr(e, "message", str(e))) 395s if hasattr(e, "problem_mark"): 395s message += f" {e.problem_mark}" 395s > raise base.ParseError(message) 395s E translate.storage.base.ParseError: 'found duplicate key "foo" with value "baz" (original value: "bar") in "", line 3, column 1:\n foo: baz\n ^ (line: 3)' 395s 395s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 395s __________________________ test_acceleratedvariables ___________________________ 395s 395s @mark.xfail(reason="Accelerated variables needs a better implementation") 395s def test_acceleratedvariables(): 395s """Test for accelerated variables.""" 395s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 395s mozillachecker = checks.MozillaChecker() 395s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 395s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 395s 395s tests/translate/filters/test_checks.py:206: AttributeError 395s ___________________________ test_musttranslatewords ____________________________ 395s 395s @mark.xfail(reason="FIXME: All fails() tests are not working") 395s def test_musttranslatewords(): 395s """Tests stopwords.""" 395s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 395s assert passes( 395s stdchecker.musttranslatewords, 395s "This uses Mozilla of course", 395s "hierdie gebruik le mozille natuurlik", 395s ) 395s stdchecker = checks.StandardChecker( 395s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 395s ) 395s assert passes( 395s stdchecker.musttranslatewords, 395s "This uses Mozilla of course", 395s "hierdie gebruik le mozille natuurlik", 395s ) 395s > assert fails( 395s stdchecker.musttranslatewords, 395s "This uses Mozilla of course", 395s "hierdie gebruik Mozilla natuurlik", 395s ) 395s E AssertionError: assert False 395s E + where False = fails(>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 395s E + where > = .musttranslatewords 395s 395s tests/translate/filters/test_checks.py:612: AssertionError 395s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 395s 395s @mark.xfail(reason="Bug #3408") 395s def test_persian_single_and_double_quote_fail_at_the_same_time(): 395s """Test Persian single and double quote failures in string with single quotes.""" 395s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 395s 395s # With single quote check. 395s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 395s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 395s E assert False 395s E + where False = fails(>, "Path: '%S'", 'مسیر: "%S"\u200e') 395s E + where > = .singlequoting 395s 395s tests/translate/filters/test_checks.py:1271: AssertionError 395s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 395s 395s @mark.xfail(reason="Bug #3506") 395s def test_bengali_mozilla_inverted_xmltags(): 395s """Test Bengali Mozilla XML tags.""" 395s bn_mozilla_checker = checks.MozillaChecker( 395s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 395s ) 395s str_en = """We co-founded the WHAT-WG to.""" 395s str_bn = """এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।""" 395s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 395s E assert False 395s E + where False = passes(>, 'We co-founded the WHAT-WG to.', 'এর প্রচলন ঘটাতে আমরা WHAT-WG প্রতিষ্ঠায় সহযোগী ছিলাম।ন।') 395s E + where > = .xmltags 395s 395s tests/translate/filters/test_checks.py:2065: AssertionError 395s _______________________________ test_word_khmer ________________________________ 395s 395s @mark.xfail( 395s reason="ZWS is not considered a space in Python 2.6+. Khmer " 395s "should extend words() to include \\u200b in addition to " 395s "other word breakers." 395s ) 395s def test_word_khmer(): 395s language = common.Common 395s # Let's test Khmer with zero width space (\u200b) 395s words = language.words("ផ្ដល់\u200bយោបល់") 395s print("ផ្ដល់\u200bយោបល់") 395s print(language.words("ផ្ដល់<200b>យោបល់")) 395s print(["ផ្ដល់", "យោបល់"]) 395s > assert words == ["ផ្ដល់", "យោបល់"] 395s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 395s E 395s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 395s E Right contains one more item: 'យោបល់' 395s E 395s E Full diff: 395s E [ 395s E + 'ផ្ដល់\u200bយោបល់',... 395s E 395s E ...Full output truncated (3 lines hidden), use '-vv' to show 395s 395s tests/translate/lang/test_common.py:47: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s ផ្ដល់​យោបល់ 395s ['ផ្ដល់<200b>យោបល់'] 395s ['ផ្ដល់', 'យោបល់'] 395s __________________ TestConverters.test_to_general_placeables ___________________ 395s 395s self = 395s 395s @mark.xfail(reason="Test needs fixing, disabled for now") 395s def test_to_general_placeables(self): 395s basetree = base.to_base_placeables(self.elem) 395s gentree = general.to_general_placeables(basetree) 395s > assert gentree == self.elem 395s E assert '])>])> == '])>])> 395s E 395s E Full diff: 395s E - , '])>, , '])>])> 395s E ? ^^^ 395s E + , '])>, , '])>])> 395s E ? ^^^^^^ 395s 395s tests/translate/storage/placeables/test_base.py:210: AssertionError 395s ___________________ TestConverters.test_to_xliff_placeables ____________________ 395s 395s self = 395s 395s @mark.xfail(reason="Test needs fixing, disabled for now") 395s def test_to_xliff_placeables(self): 395s basetree = base.to_base_placeables(self.elem) 395s xliff_from_base = xliff.to_xliff_placeables(basetree) 395s > assert str(xliff_from_base) != str(self.elem) 395s E assert 'Ģët &brandLong;' != 'Ģët &brandLong;' 395s E + where 'Ģët &brandLong;' = str(, '])>, , '])>])>) 395s E + and 'Ģët &brandLong;' = str(, '])>, , '])>])>) 395s E + where , '])>, , '])>])> = .elem 395s 395s tests/translate/storage/placeables/test_base.py:216: AssertionError 395s _____________________ test_quotefordtd_unimplemented_cases _____________________ 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_quotefordtd_unimplemented_cases(): 395s """Test unimplemented quoting DTD cases.""" 395s > assert dtd.quotefordtd("Between

and

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

and

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

and

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

and

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

and

' 395s E 395s E -

and

395s E + <p> and </p> 395s 395s tests/translate/storage/test_dtd.py:103: AssertionError 395s ________________________ TestDTD.test_comment_following ________________________ 395s 395s self = 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_comment_following(self): 395s """Check that comments that appear after and entity are not pushed onto another line.""" 395s dtdsource = ' ' 395s dtdregen = self.dtdregen(dtdsource) 395s > assert dtdsource == dtdregen 395s E assert '' == ' 395s E - 395s E - 395s 395s tests/translate/storage/test_dtd.py:344: AssertionError 395s _________________________ TestDTD.test_invalid_quoting _________________________ 395s 395s self = 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_invalid_quoting(self): 395s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 395s # TODO: we should rather raise an error 395s dtdsource = '\n' 395s assert ( 395s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 395s ) 395s dtdfile = self.dtdparse(dtdsource) 395s assert len(dtdfile.units) == 1 395s dtdunit = dtdfile.units[0] 395s assert dtdunit.definition == '"bananas for sale"' 395s > assert bytes(dtdfile) == b'\n' 395s E assert b'' == b'\n' 395s E 395s E Full diff: 395s E - (b'\n') 395s E + b'' 395s 395s tests/translate/storage/test_dtd.py:364: AssertionError 395s __________________________ TestOtFile.test_extensions __________________________ 395s 395s self = 395s 395s @mark.xfail( 395s reason="This doesn't work, due to two store classes handling different " 395s "extensions, but factory listing it as one supported file type" 395s ) 395s def test_extensions(self): 395s > super().test_extensions() 395s 395s tests/translate/storage/test_omegat.py:20: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = 395s 395s def test_extensions(self): 395s """Test that the factory knows the extensions for this class.""" 395s supported = factory.supported_files() 395s supported_dict = { 395s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 395s } 395s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 395s return 395s detail = supported_dict[ 395s self.StoreClass.Name 395s ] # will start to get problematic once translated 395s print("Factory:", detail[0]) 395s print("StoreClass:", self.StoreClass.Extensions) 395s for ext in detail[0]: 395s > assert ext in self.StoreClass.Extensions 395s E AssertionError: assert 'tab' in ['utf8'] 395s E + where ['utf8'] = .Extensions 395s E + where = .StoreClass 395s 395s tests/translate/storage/test_base.py:386: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s Factory: ['utf8', 'tab'] 395s StoreClass: ['utf8'] 395s _________________________ TestPOFile.test_kde_plurals __________________________ 395s 395s self = 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_kde_plurals(self): 395s """Tests kde-style plurals. (Bug: 191).""" 395s posource = r"""msgid "_n Singular\n" 395s "Plural" 395s msgstr "Een\n" 395s "Twee\n" 395s "Drie" 395s """ 395s pofile = self.poparse(posource) 395s assert len(pofile.units) == 1 395s unit = pofile.units[0] 395s > assert unit.hasplural() 395s E assert False 395s E + where False = >() 395s E + where > = .hasplural 395s 395s tests/translate/storage/test_po.py:374: AssertionError 395s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 395s 395s self = 395s 395s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 395s def test_makeobsolete_untranslated(self): 395s """Tests making an untranslated unit obsolete.""" 395s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 395s pofile = self.poparse(posource) 395s unit = pofile.units[0] 395s print(bytes(pofile)) 395s assert not unit.isobsolete() 395s unit.makeobsolete() 395s > assert str(unit) == "" 395s E assert '#~ msgid "te...~ msgstr ""\n' == '' 395s E 395s E + #~ msgid "test" 395s E + #~ msgstr "" 395s 395s tests/translate/storage/test_po.py:449: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 395s ________________________ TestXWikiFullPage.test_remove _________________________ 395s 395s self = 395s 395s @mark.xfail(reason="removal not working in full page") 395s def test_remove(self): 395s > super().test_remove() 395s 395s tests/translate/storage/test_properties.py:1614: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = 395s 395s def test_remove(self): 395s """Tests removing a unit with a source string.""" 395s store = self.StoreClass() 395s unit = store.addsourceunit("Test String") 395s # Some storages (MO, OmegaT) serialize only translated units 395s unit.target = "Test target" 395s assert headerless_len(store.units) == 1 395s withunit = bytes(store) 395s print(withunit) 395s store.removeunit(unit) 395s assert headerless_len(store.units) == 0 395s withoutunit = bytes(store) 395s print(withoutunit) 395s > assert withoutunit != withunit 395s E assert b'\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' 395s 395s tests/translate/storage/test_base.py:278: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'<?xml version="1.1" encoding="UTF-8"?>\n\n<!--\n * See the NOTICE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n-->\n\n<xwikidoc>\n <translation>0</translation>\n <language/>\n <title/>\n <content/>\n </xwikidoc>\n' 395s b'<?xml version="1.1" encoding="UTF-8"?>\n\n<!--\n * See the NOTICE file distributed with this work for additional\n * information regarding copyright ownership.\n *\n * This is free software; you can redistribute it and/or modify it\n * under the terms of the GNU Lesser General Public License as\n * published by the Free Software Foundation; either version 2.1 of\n * the License, or (at your option) any later version.\n *\n * This software is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n * Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public\n * License along with this software; if not, write to the Free\n * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA\n * 02110-1301 USA, or see the FSF site: http://www.fsf.org.\n-->\n\n<xwikidoc>\n <translation>0</translation>\n <language/>\n <title/>\n <content/>\n </xwikidoc>\n' 395s ________________________ TestPYPOFile.test_kde_plurals _________________________ 395s 395s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x73a16f1ca1b0> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_kde_plurals(self): 395s """Tests kde-style plurals. (Bug: 191).""" 395s posource = r"""msgid "_n Singular\n" 395s "Plural" 395s msgstr "Een\n" 395s "Twee\n" 395s "Drie" 395s """ 395s pofile = self.poparse(posource) 395s assert len(pofile.units) == 1 395s unit = pofile.units[0] 395s > assert unit.hasplural() 395s E assert False 395s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x73a16ca47830>>() 395s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x73a16ca47830>> = <translate.storage.pypo.pounit object at 0x73a16ca47830>.hasplural 395s 395s tests/translate/storage/test_po.py:374: AssertionError 395s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 395s 395s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x73a16f1cbaa0> 395s 395s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 395s def test_makeobsolete_untranslated(self): 395s """Tests making an untranslated unit obsolete.""" 395s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 395s pofile = self.poparse(posource) 395s unit = pofile.units[0] 395s print(bytes(pofile)) 395s assert not unit.isobsolete() 395s unit.makeobsolete() 395s > assert str(unit) == "" 395s E assert '#~ msgid "te...~ msgstr ""\n' == '' 395s E 395s E + #~ msgid "test" 395s E + #~ msgstr "" 395s 395s tests/translate/storage/test_po.py:449: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 395s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 395s 395s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x73a16f1c8680> 395s 395s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 395s def test_mixed_newlines_typecomment(self): 395s """Checks that mixed newlines in typecomments are properly parsed.""" 395s # This was generated by translate-tookit prior to 395s # issue that test_dos_newlines_write is covering was fixed. 395s posource = b"""#, fuzzy 395s msgid "test me"\r 395s msgstr ""\r 395s """ 395s > pofile = self.poparse(posource) 395s 395s tests/translate/storage/test_pypo.py:620: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s tests/translate/storage/test_po.py:214: in poparse 395s return self.StoreClass(dummyfile) 395s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 395s super().__init__(inputfile, **kwargs) 395s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 395s self.parse(inputfile) 395s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 395s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s parse_state = <translate.storage.poparser.ParseState object at 0x73a16ca45970> 395s store = <translate.storage.pypo.pofile object at 0x73a16ca458e0> 395s 395s def parse_units(parse_state, store): 395s unit = parse_header(parse_state, store) 395s while unit: 395s unit.infer_state() 395s store.addunit(unit) 395s unit = parse_unit(parse_state) 395s if not parse_state.eof: 395s > raise PoParseError(parse_state) 395s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 395s 395s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 395s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 395s 395s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x73a16ef79790> 395s 395s @pytest.mark.xfail(reason="Not Implemented") 395s def test_note_sanity(self): 395s > super().test_note_sanity() 395s 395s tests/translate/storage/test_subtitles.py:13: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x73a16ef79790> 395s 395s def test_note_sanity(self): 395s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 395s unit = self.unit 395s 395s unit.addnote("Test note 1", origin="translator") 395s unit.addnote("Test note 2", origin="translator") 395s unit.addnote("Test note 3", origin="translator") 395s expected_notes = "Test note 1\nTest note 2\nTest note 3" 395s actual_notes = unit.getnotes(origin="translator") 395s > assert actual_notes == expected_notes 395s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 395s E 395s E - Test note 1 395s E - Test note 2 395s E - Test note 3 395s 395s tests/translate/storage/test_base.py:180: AssertionError 395s __________________________ TestCount.test_plurals_kde __________________________ 395s 395s self = <tests.translate.tools.test_pocount.TestCount object at 0x73a170629100> 395s 395s @mark.xfail(reason="Support commented out pending removal") 395s def test_plurals_kde(self): 395s """Test that we correcly count old style KDE plurals.""" 395s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 395s 395s tests/translate/tools/test_pocount.py:91: 395s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 395s 395s source = '_n: Singular\\n\nPlural', expectedsource = 2 395s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 395s 395s @staticmethod 395s def count(source, expectedsource, target=None, expectedtarget=None): 395s """Simple helper to check the respective word counts.""" 395s poelement = po.pounit(source) 395s if target is not None: 395s poelement.target = target 395s wordssource, wordstarget = pocount.wordsinunit(poelement) 395s print( 395s 'Source (expected=%d; actual=%d): "%s"' 395s % (expectedsource, wordssource, source) 395s ) 395s > assert wordssource == expectedsource 395s E assert 3 == 2 395s 395s tests/translate/tools/test_pocount.py:33: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s Source (expected=2; actual=3): "_n: Singular\n 395s Plural" 395s _________________________ TestPOMerge.test_escape_tabs _________________________ 395s 395s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x73a1706264e0> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_escape_tabs(self): 395s """Ensure that input tabs are escaped in the output, like gettext does.""" 395s # The strings below contains the tab character, not spaces. 395s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 395s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 395s expectedpo = r"""msgid "First\tSecond" 395s msgstr "Eerste\tTweede" 395s """ 395s pofile = self.mergestore(templatepo, mergepo) 395s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 395s > assert bytes(pofile).decode("utf-8") == expectedpo 395s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 395s E 395s E - msgid "First\tSecond" 395s E ? ^^ 395s E + msgid "First Second" 395s E ? ^ 395s E msgstr "Eerste\tTweede" 395s 395s tests/translate/tools/test_pomerge.py:349: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s Expected: 395s msgid "First\tSecond" 395s msgstr "Eerste\tTweede" 395s 395s 395s Merged: 395s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 395s __________________ TestPretranslate.test_merging_msgid_change __________________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x73a170650680> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_merging_msgid_change(self): 395s """ 395s tests that if the msgid changes but the location stays the same that 395s we merge. 395s """ 395s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 395s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s print(bytes(newpo)) 395s > assert bytes(newpo).decode("utf-8") == poexpected 395s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 395s E 395s E #: simple.label 395s E #: simple.accesskey 395s E - #, fuzzy 395s E msgid "Its &hard coding a newline.\n" 395s E - msgstr "&Hart gekoeerde nuwe lyne\n" 395s E + msgstr "" 395s 395s tests/translate/tools/test_pretranslate.py:130: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 395s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x73a170650440> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_merging_accelerator_changes(self): 395s """ 395s test that a change in the accelerator localtion still allows 395s merging. 395s """ 395s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 395s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 395s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s print(bytes(newpo)) 395s > assert bytes(newpo).decode("utf-8") == poexpected 395s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 395s E 395s E #: someline.c 395s E msgid "A&bout" 395s E - msgstr "&Info" 395s E ? ----- 395s E + msgstr "" 395s 395s tests/translate/tools/test_pretranslate.py:185: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 395s _________________ TestPretranslate.test_lines_cut_differently __________________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x73a170650b30> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_lines_cut_differently(self): 395s """ 395s Checks that the correct formatting is preserved when pot an po lines 395s differ. 395s """ 395s input_source = ( 395s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 395s ) 395s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s newpounit = self.singleunit(newpo) 395s > assert str(newpounit) == template_source 395s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 395s E 395s E #: simple.label 395s E - msgid "Line" 395s E + msgid "Line split " 395s E ? +++++++ 395s E - " split differently" 395s E ? ------- 395s E + "differently" 395s E msgstr "Lyne verskillend gesny" 395s 395s tests/translate/tools/test_pretranslate.py:199: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s #: simple.label 395s msgid "Line split " 395s "differently" 395s msgstr "Lyne verskillend gesny" 395s 395s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x73a1706512e0> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_merging_msgid_change(self): 395s """ 395s tests that if the msgid changes but the location stays the same that 395s we merge. 395s """ 395s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 395s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s print(bytes(newpo)) 395s > assert bytes(newpo).decode("utf-8") == poexpected 395s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 395s E 395s E #: simple.label 395s E #: simple.accesskey 395s E - #, fuzzy 395s E msgid "Its &hard coding a newline.\n" 395s E - msgstr "&Hart gekoeerde nuwe lyne\n" 395s E + msgstr "" 395s 395s tests/translate/tools/test_pretranslate.py:130: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 395s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x73a170650560> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_merging_accelerator_changes(self): 395s """ 395s test that a change in the accelerator localtion still allows 395s merging. 395s """ 395s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 395s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 395s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s print(bytes(newpo)) 395s > assert bytes(newpo).decode("utf-8") == poexpected 395s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 395s E 395s E #: someline.c 395s E msgid "A&bout" 395s E - msgstr "&Info" 395s E ? ----- 395s E + msgstr "" 395s 395s tests/translate/tools/test_pretranslate.py:185: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 395s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 395s 395s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x73a170652690> 395s 395s @mark.xfail(reason="Not Implemented") 395s def test_lines_cut_differently(self): 395s """ 395s Checks that the correct formatting is preserved when pot an po lines 395s differ. 395s """ 395s input_source = ( 395s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 395s ) 395s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 395s newpo = self.pretranslatepo(input_source, template_source) 395s newpounit = self.singleunit(newpo) 395s > assert str(newpounit) == template_source 395s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 395s E 395s E #: simple.label 395s E - msgid "Line" 395s E + msgid "Line split " 395s E ? +++++++ 395s E - " split differently" 395s E ? ------- 395s E + "differently" 395s E msgstr "Lyne verskillend gesny" 395s 395s tests/translate/tools/test_pretranslate.py:199: AssertionError 395s ----------------------------- Captured stdout call ----------------------------- 395s #: simple.label 395s msgid "Line split " 395s "differently" 395s msgstr "Lyne verskillend gesny" 395s 395s =============================== warnings summary =============================== 395s tests/translate/storage/test_cpo.py:15 395s Warning: 395s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 395s ImportError('gettext PO library not found') 395s In pytest 9.1 this warning will become an error by default. 395s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 395s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 395s 395s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 395s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ut5eEf/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 395s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 395s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 395s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 395s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 395s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 395s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 395s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 395s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 395s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 395s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 395s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 395s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 395s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 395s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 395s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 395s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 395s Warning: Could not find accesskey for key.accesskey 395s 395s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 395s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 395s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 395s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 395s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 395s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ut5eEf/autopkgtest_tmp/tests/translate/convert/test.idml'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 395s Warning: unclosed file <_io.BufferedReader name='translation.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 395s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 395s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 395s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 395s Warning: Could not find accesskey for prop.accesskey 395s 395s tests/translate/convert/test_po2tmx.py: 26 warnings 395s tests/translate/filters/test_pofilter.py: 13 warnings 395s tests/translate/storage/test_tbx.py: 17 warnings 395s tests/translate/storage/test_tmx.py: 24 warnings 395s Warning: This search incorrectly ignores the root element, and will be fixed in a future version. If you rely on the current behaviour, change it to './/body' 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 395s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 395s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 395s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 395s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 395s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 395s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 395s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ut5eEf/autopkgtest_tmp/tests/translate/convert/test.odt'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 395s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 395s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 395s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 395s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 395s Enable tracemalloc to get traceback where the object was allocated. 395s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 395s 395s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 395s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 395s 395s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 395s Warning: DTD file '' does not validate 395s 395s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 395s --------------------------- snapshot report summary ---------------------------- 395s 23 snapshots passed. 395s =========================== short test summary info ============================ 395s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 395s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 395s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 395s SKIPPED [1] tests/translate/storage/test_mo.py:498: Skip testing command line tools 395s SKIPPED [16] tests/translate/tools/test_help.py:16: Skip testing command line tools 395s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:49: Skip testing command line tools 395s SKIPPED [1] tests/xliff_conformance/test_xliff_conformance.py:58: Skip testing command line tools 395s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 395s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 395s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 395s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 395s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 395s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 395s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 395s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 395s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 395s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 395s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 395s XFAIL tests/translate/lang/test_common.py::test_word_khmer - ZWS is not considered a space in Python 2.6+. Khmer should extend words() to include \u200b in addition to other word breakers. 395s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 395s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 395s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 395s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 395s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 395s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 395s XFAIL tests/translate/storage/test_omegat.py::TestOtFile::test_extensions - This doesn't work, due to two store classes handling different extensions, but factory listing it as one supported file type 395s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 395s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 395s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 395s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 395s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 395s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 395s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 395s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 395s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 395s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 395s ========= 3254 passed, 22 skipped, 39 xfailed, 127 warnings in 18.76s ========== 396s autopkgtest [01:29:58]: test python3-translate: -----------------------] 396s python3-translate PASS 396s autopkgtest [01:29:58]: test python3-translate: - - - - - - - - - - results - - - - - - - - - - 396s autopkgtest [01:29:58]: test python3-translate-commands: preparing testbed 398s Note, using file '/tmp/autopkgtest.ut5eEf/5-autopkgtest-satdep.dsc' to get the build dependencies 398s Reading package lists... 398s Building dependency tree... 398s Reading state information... 399s Starting pkgProblemResolver with broken count: 0 399s Starting 2 pkgProblemResolver with broken count: 0 399s Done 399s The following NEW packages will be installed: 399s translate-toolkit 399s 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 399s Need to get 88.2 kB of archives. 399s After this operation, 253 kB of additional disk space will be used. 399s Get:1 http://ftpmaster.internal/ubuntu oracular/universe amd64 translate-toolkit all 3.12.2-1ubuntu1 [88.2 kB] 400s Fetched 88.2 kB in 0s (3257 kB/s) 400s Selecting previously unselected package translate-toolkit. 400s (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 ... 79068 files and directories currently installed.) 400s Preparing to unpack .../translate-toolkit_3.12.2-1ubuntu1_all.deb ... 400s Unpacking translate-toolkit (3.12.2-1ubuntu1) ... 400s Setting up translate-toolkit (3.12.2-1ubuntu1) ... 400s Processing triggers for man-db (2.12.1-1) ... 401s Reading package lists... 402s Building dependency tree... 402s Reading state information... 402s Starting pkgProblemResolver with broken count: 0 402s Starting 2 pkgProblemResolver with broken count: 0 402s Done 403s The following NEW packages will be installed: 403s autopkgtest-satdep 403s 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. 403s Need to get 0 B/700 B of archives. 403s After this operation, 0 B of additional disk space will be used. 403s Get:1 /tmp/autopkgtest.ut5eEf/6-autopkgtest-satdep.deb autopkgtest-satdep amd64 0 [700 B] 403s Selecting previously unselected package autopkgtest-satdep. 403s (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 ... 79241 files and directories currently installed.) 403s Preparing to unpack .../6-autopkgtest-satdep.deb ... 403s Unpacking autopkgtest-satdep (0) ... 403s Setting up autopkgtest-satdep (0) ... 404s autopkgtest: WARNING: package python3-translate:i386 is not installed though it should be 404s autopkgtest: WARNING: package translate-toolkit:i386 is not installed though it should be 405s (Reading database ... 79241 files and directories currently installed.) 405s Removing autopkgtest-satdep (0) ... 406s autopkgtest [01:30:08]: test python3-translate-commands: [----------------------- 406s ============================= test session starts ============================== 406s platform linux -- Python 3.12.3, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3.12 406s cachedir: .pytest_cache 406s rootdir: /tmp/autopkgtest.ut5eEf/autopkgtest_tmp 406s plugins: syrupy-4.6.1 412s collecting ... collected 3313 items / 2 skipped 412s 412s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff PASSED [ 0%] 412s tests/odf_xliff/test_odf_xliff.py::test_roundtrip PASSED [ 0%] 412s tests/odf_xliff/test_odf_xliff.py::test_odf2xliff2_inline PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_get_label_and_accesskey PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_extract_bad_accesskeys PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_ignore_entities PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_alternate_accesskey_marker PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_unicode PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_numeric PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_empty_string PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_end_of_string PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_combine_label_accesskey_different_capitals PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_uncombinable PASSED [ 0%] 412s tests/translate/convert/test_accesskey.py::test_accesskey_already_in_text PASSED [ 0%] 412s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_no_template_units PASSED [ 0%] 412s tests/translate/convert/test_android2po.py::TestAndroid2PO::test_template_units PASSED [ 0%] 412s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_no_template_units PASSED [ 0%] 412s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_template_units PASSED [ 0%] 412s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_help PASSED [ 0%] 412s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid PASSED [ 0%] 412s tests/translate/convert/test_convert.py::TestConvertCommand::test_help PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::test_replacestrings PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_simpleentity_with_template PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_newlines PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_tabs PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_quotes PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_empties PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_kdecomment PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2PO::test_escaped_newlines PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_simpleentity_with_template PASSED [ 0%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_newlines PASSED [ 1%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_tabs PASSED [ 1%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_quotes PASSED [ 1%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_empties PASSED [ 1%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_kdecomment PASSED [ 1%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_escaped_newlines PASSED [ 1%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_help PASSED [ 1%] 412s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_simpleentity PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_convertdtd PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_apos PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_quotes PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_two_empty_entities PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_emptyentity_translated PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisaton_note_simple PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_localisation_note_merge PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_simple PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_label PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_onlyentity PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_donttranslate_commentedout PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_spaces_at_start_of_dtd_lines PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_folding PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accesskeys_mismatch PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_carriage_return_in_multiline_dtd PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_with_blankline PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_multiline_closing_quotes PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_preserving_spaces PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_escaping_newline_tabs PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_abandoned_accelerator PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_unassociable_accelerator PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_changed_labels_and_accelerators PASSED [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence XFAIL [ 1%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_exclude_entity_includes PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_linewraps PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merging_with_new_untranslated PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_merge_without_template PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_simpleentity PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_convertdtd PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_apos PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_quotes PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_two_empty_entities PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_emptyentity_translated PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisaton_note_simple PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_localisation_note_merge PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_simple PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_label PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_onlyentity PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_donttranslate_commentedout PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_spaces_at_start_of_dtd_lines PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_folding PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accesskeys_mismatch PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_carriage_return_in_multiline_dtd PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_with_blankline PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_multiline_closing_quotes PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_preserving_spaces PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_escaping_newline_tabs PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_abandoned_accelerator PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_unassociable_accelerator PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_changed_labels_and_accelerators PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence XFAIL [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_exclude_entity_includes PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_linewraps PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merging_with_new_untranslated PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_merge_without_template PASSED [ 2%] 412s tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_help PASSED [ 3%] 412s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_defaults PASSED [ 3%] 412s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_root_name PASSED [ 3%] 412s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_value_name PASSED [ 3%] 412s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_key PASSED [ 3%] 412s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_default_namespace PASSED [ 3%] 412s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_namespace_prefix PASSED [ 3%] 412s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_all_parameters PASSED [ 3%] 412s tests/translate/convert/test_flatxml2po.py::TestFlatXML2PO::test_empty_file_is_empty_store PASSED [ 3%] 412s tests/translate/convert/test_flatxml2po.py::TestFlatXML2POCommand::test_help PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_extract_lang_attribute_from_html_tag PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_title_with_linebreak PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_meta PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_br PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_p_with_linebreak_and_embedded_br PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_uppercase_html PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_div_with_linebreaks PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_a_with_linebreak PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_sequence_of_anchor_elements PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_img_empty PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_img_inside_a PASSED [ 3%] 412s tests/translate/convert/test_html2po.py::TestHTML2PO::test_tag_table_summary PASSED [ 3%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_simple PASSED [ 3%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_complex PASSED [ 3%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_table_empty PASSED [ 3%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_address PASSED [ 3%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_headings_with_linebreaks PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dt PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_dd PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_span PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_ul PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_lists PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_duplicates PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiline_reflow PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_nested_tags PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_carriage_return PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_encoding_latin1 PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_strip_html PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_text PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_entityrefs_in_attributes PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_charrefs PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_multiple_php PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_multiline PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_php_with_embedded_html PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_comments PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2PO::test_attribute_without_value PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_extract_lang_attribute_from_html_tag PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_do_not_extract_lang_attribute_from_tags_other_than_html PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_title_with_linebreak PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_meta PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_br PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_p_with_linebreak_and_embedded_br PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_uppercase_html PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div PASSED [ 4%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_div_with_linebreaks PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_a_with_linebreak PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_sequence_of_anchor_elements PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_img_empty PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_img_inside_a PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_tag_table_summary PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_simple PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_complex PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_table_empty PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_address PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_headings_with_linebreaks PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dt PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_dd PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_span PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_ul PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_lists PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_duplicates PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiline_reflow PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_nested_tags PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_carriage_return PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_encoding_latin1 PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_strip_html PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_text PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_entityrefs_in_attributes PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_charrefs PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multiple_php PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_multiline PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_php_with_embedded_html PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_comments PASSED [ 5%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_attribute_without_value PASSED [ 6%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_help PASSED [ 6%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_single PASSED [ 6%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile PASSED [ 6%] 413s tests/translate/convert/test_html2po.py::TestHTML2POCommand::test_multifile_onefile_to_stdout PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_convert_empty_file PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_translations PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_summary PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_description PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_location PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_comment PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_no_template_duplicate_style PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_misaligned_files PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_blank_msgstr PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2PO::test_merge_duplicate_style PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_convert_empty_file PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_translations PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_summary PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_description PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_location PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_comment PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_no_template_duplicate_style PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_misaligned_files PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_blank_msgstr PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_merge_duplicate_style PASSED [ 6%] 413s tests/translate/convert/test_ical2po.py::TestIcal2POCommand::test_help PASSED [ 6%] 413s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_help PASSED [ 6%] 413s tests/translate/convert/test_idml2po.py::TestIDML2POCommand::test_convert PASSED [ 6%] 413s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_empty_file PASSED [ 6%] 413s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_no_translation PASSED [ 6%] 413s tests/translate/convert/test_ini2po.py::TestIni2PO::test_convert_simple PASSED [ 6%] 413s tests/translate/convert/test_ini2po.py::TestIni2PO::test_no_duplicates PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_simple PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_misaligned_files PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2PO::test_merge_blank_msgstr PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2PO::test_dialects_inno PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_empty_file PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_no_translation PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_convert_simple PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_no_duplicates PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_simple PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_misaligned_files PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_merge_blank_msgstr PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_dialects_inno PASSED [ 7%] 413s tests/translate/convert/test_ini2po.py::TestIni2POCommand::test_help PASSED [ 7%] 413s tests/translate/convert/test_json2po.py::TestJson2PO::test_simple PASSED [ 7%] 413s tests/translate/convert/test_json2po.py::TestJson2PO::test_filter PASSED [ 7%] 413s tests/translate/convert/test_json2po.py::TestJson2PO::test_miltiple_units PASSED [ 7%] 413s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_simple PASSED [ 7%] 413s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_filter PASSED [ 7%] 413s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_miltiple_units PASSED [ 7%] 413s tests/translate/convert/test_json2po.py::TestJson2POCommand::test_help PASSED [ 7%] 413s tests/translate/convert/test_md2po.py::TestMD2PO::test_help PASSED [ 7%] 413s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_single PASSED [ 7%] 413s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_file_with_multifile_onefile PASSED [ 7%] 413s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_single PASSED [ 7%] 413s tests/translate/convert/test_md2po.py::TestMD2PO::test_markdown_directory_with_multifile_onefile PASSED [ 7%] 413s tests/translate/convert/test_moz2po.py::TestMoz2POCommand::test_help PASSED [ 7%] 413s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_simpleentry PASSED [ 7%] 413s tests/translate/convert/test_mozfunny2prop.py::TestInc2PO::test_uncomment_contributors PASSED [ 7%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_convert_empty PASSED [ 7%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_string PASSED [ 7%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_merge PASSED [ 7%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_entry PASSED [ 7%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_simple_comment PASSED [ 7%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_meta_tags PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_keep_duplicates PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2PO::test_drop_duplicates PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_convert_empty PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_string PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_merge PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_entry PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_simple_comment PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_meta_tags PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_keep_duplicates PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_drop_duplicates PASSED [ 8%] 413s tests/translate/convert/test_mozlang2po.py::TestLang2POCommand::test_help PASSED [ 8%] 413s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_help PASSED [ 8%] 413s tests/translate/convert/test_ods2xliff.py::TestODF2XLIFFCommand::test_convert PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2PO::test_simpleentity PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_escape PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2PO::test_roundtrip_whitespaceonly PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2PO::test_double_escapes PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2PO::test_escapes_helpcontent2 PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2PO::test_msgid_bug_error_address PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2PO::test_x_comment_inclusion PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simpleentity PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_double_escapes PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_help PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_preserve_filename PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot PASSED [ 8%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 413s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_simpleentity PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_escape PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_roundtrip_whitespaceonly PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_double_escapes PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_escapes_helpcontent2 PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_x_comment_inclusion PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2XLIFF::test_msgid_bug_error_address PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simpleentity PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_escape PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_roundtrip_whitespaceonly PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_double_escapes PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_escapes_helpcontent2 PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_x_comment_inclusion PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_msgid_bug_error_address PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_help PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_preserve_filename PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po PASSED [ 9%] 413s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_onefile_nonrecursive PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_simpleentry PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphp PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphptemplate PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpmissing PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_convertphpempty PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unicode PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_multiline PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_comments_before PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry PASSED [ 9%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_hash_comment_with_equals PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_emptyentry_translated PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_newlines_in_value PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_spaces_in_name PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_array PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_array PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_named_nested_arrays PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2PO::test_unnamed_nested_arrays PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_simpleentry PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphp PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphptemplate PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpmissing PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_convertphpempty PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unicode PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_multiline PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_comments_before PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_hash_comment_with_equals PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_emptyentry_translated PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_newlines_in_value PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_spaces_in_name PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_array PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_array PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_named_nested_arrays PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_unnamed_nested_arrays PASSED [ 10%] 413s tests/translate/convert/test_php2po.py::TestPhp2POCommand::test_help PASSED [ 10%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_simpleentity PASSED [ 10%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_multiline PASSED [ 10%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapednewlines PASSED [ 10%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedtabs PASSED [ 10%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedquotes PASSED [ 10%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_escapedescape PASSED [ 10%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_singlequotes PASSED [ 10%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_empties PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSV::test_kdecomments PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_simpleentity PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_multiline PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapednewlines PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedtabs PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedquotes PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_escapedescape PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_singlequotes PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_empties PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_kdecomments PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_help PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder PASSED [ 11%] 413s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_joinlines PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_escapedstr PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_missingaccesskey PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskeycase PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_types PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities_two PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_entities PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments_translator PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_retains_hashprefix PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_convertdtd PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_with_template PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_untranslated_without_template PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_blank_source PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_newlines_escapes PASSED [ 11%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_simple PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_escape PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_quotes PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_roundtrip_amp PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_merging_entries_with_spaces_removed PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_preserving_spaces_after_value PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_comments PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_duplicates PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_joinlines PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_escapedstr PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_missingaccesskey PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskeycase PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_types PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_source_no_amp_in_target PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_both_amp_and_accesskey PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities_two PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_entities PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments_translator PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_retains_hashprefix PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_convertdtd PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_with_template PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_untranslated_without_template PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_blank_source PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_newlines_escapes PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_simple PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_escape PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_quotes PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_roundtrip_amp PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_merging_entries_with_spaces_removed PASSED [ 12%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces PASSED [ 13%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_preserving_spaces_after_value PASSED [ 13%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_comments PASSED [ 13%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_duplicates PASSED [ 13%] 413s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_help PASSED [ 13%] 413s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_defaults PASSED [ 13%] 413s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_root_name PASSED [ 13%] 413s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_value_name PASSED [ 13%] 413s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_key PASSED [ 13%] 413s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_default_namespace PASSED [ 13%] 413s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_namespace_prefix PASSED [ 13%] 413s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_indent_eight PASSED [ 13%] 413s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXML::test_noindent PASSED [ 13%] 413s tests/translate/convert/test_po2flatxml.py::TestPO2FlatXMLCommand::test_help PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_simple PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_linebreaks PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_replace_substrings PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_outside_translatable_content PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_embedded_within_translatable_content PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_attribute_without_value PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_entities PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_escapes PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_translated PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_untranslated PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_states_fuzzy PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2Html::test_untranslated_attributes PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_simple PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_linebreaks PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_replace_substrings PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_outside_translatable_content PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_within_translatable_content_not_embedded PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_embedded_within_translatable_content PASSED [ 13%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_attribute_without_value PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_entities PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_escapes PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_translated PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_untranslated PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_states_fuzzy PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_untranslated_attributes PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_help PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_individual_files PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_fully_recursive PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_input_specified PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_output_specified PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file PASSED [ 14%] 413s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_empty_file PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_summary PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_description PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_location PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_comment PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_complex_icalendar PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_skip_fuzzy PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_include_fuzzy PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_no_template PASSED [ 14%] 413s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_template_location_not_in_source_file PASSED [ 14%] 414s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_below_threshold PASSED [ 14%] 414s tests/translate/convert/test_po2ical.py::TestPO2Ical::test_convert_completion_above_threshold PASSED [ 14%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_empty_file PASSED [ 14%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_summary PASSED [ 14%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_description PASSED [ 14%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_location PASSED [ 14%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_comment PASSED [ 14%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_complex_icalendar PASSED [ 14%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_skip_fuzzy PASSED [ 15%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_include_fuzzy PASSED [ 15%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_no_template PASSED [ 15%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_template_location_not_in_source_file PASSED [ 15%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_below_threshold PASSED [ 15%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_convert_completion_above_threshold PASSED [ 15%] 414s tests/translate/convert/test_po2ical.py::TestPO2IcalCommand::test_help PASSED [ 15%] 414s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_help PASSED [ 15%] 414s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_no_templates PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_simple PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_space_preservation PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_blank_entries PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_fuzzy PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_propertyless_template PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_empty_value PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_dialects_inno PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_misaligned_files PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_below_threshold PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_convert_completion_above_threshold PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_no_fuzzy PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_allow_fuzzy PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_missing_source PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2Ini::test_merging_repeated_locations PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_no_templates PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_simple PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_space_preservation PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_blank_entries PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_fuzzy PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_propertyless_template PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_empty_value PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_dialects_inno PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_misaligned_files PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_below_threshold PASSED [ 15%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_convert_completion_above_threshold PASSED [ 16%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_no_fuzzy PASSED [ 16%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_allow_fuzzy PASSED [ 16%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_missing_source PASSED [ 16%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_merging_repeated_locations PASSED [ 16%] 414s tests/translate/convert/test_po2ini.py::TestPO2IniCommand::test_help PASSED [ 16%] 414s tests/translate/convert/test_po2json.py::TestPO2JSON::test_basic PASSED [ 16%] 414s tests/translate/convert/test_po2json.py::TestPO2JSON::test_ordering_serialize PASSED [ 16%] 414s tests/translate/convert/test_po2json.py::TestPO2JSON::test_dont_use_empty_translation PASSED [ 16%] 414s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_false PASSED [ 16%] 414s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_false_remove_untranslated_true PASSED [ 16%] 414s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_false PASSED [ 16%] 414s tests/translate/convert/test_po2json.py::TestPO2JSON::test_includefuzzy_true_remove_untranslated_true PASSED [ 16%] 414s tests/translate/convert/test_po2md.py::TestPO2MD::test_help PASSED [ 16%] 414s tests/translate/convert/test_po2md.py::TestPO2MD::test_single_markdown_file_with_single_po PASSED [ 16%] 414s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po PASSED [ 16%] 414s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_and_directory_of_po_files PASSED [ 16%] 414s tests/translate/convert/test_po2moz.py::TestPO2MozCommand::test_help PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_empty PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_simple PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_comment PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_ok_marker PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_below_threshold PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_completion_above_threshold PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_convert_skip_non_translatable_input PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_no_fuzzy PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_allow_fuzzy PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2Lang::test_mark_active PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_empty PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_simple PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_comment PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_ok_marker PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_below_threshold PASSED [ 16%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_completion_above_threshold PASSED [ 17%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_convert_skip_non_translatable_input PASSED [ 17%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_no_fuzzy PASSED [ 17%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_allow_fuzzy PASSED [ 17%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_mark_active PASSED [ 17%] 414s tests/translate/convert/test_po2mozlang.py::TestPO2LangCommand::test_help PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_convertoo PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_pofilter PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_simple PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_escape PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_quotes PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_roundtrip_spaces PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_default_timestamp PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_escape_conversion PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OO::test_helpcontent_escapes2 PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_convertoo PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_pofilter PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_escape PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_quotes PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_spaces PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_default_timestamp PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_escape_conversion PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_helpcontent_escapes2 PASSED [ 17%] 414s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_help PASSED [ 17%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp PASSED [ 17%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_notemplate PASSED [ 17%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_convertphp_empty_template PASSED [ 17%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_simple PASSED [ 17%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_space_preservation PASSED [ 17%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_preserve_unused_statement PASSED [ 17%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_not_translated_multiline PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_blank_entries PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_fuzzy PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_locations_with_spaces PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_inline_comments PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_block_comments PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_variables PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_multiline PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_hash_comment PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_arrays PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_named_nested_array PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_unnamed_nested_arrays PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template XFAIL [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_notemplate PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_convertphp_empty_template PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_simple PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_space_preservation PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_preserve_unused_statement PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_not_translated_multiline PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_blank_entries PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_fuzzy PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_locations_with_spaces PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_inline_comments PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_block_comments PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_variables PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_multiline PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_hash_comment PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_arrays PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_named_nested_array PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_unnamed_nested_arrays PASSED [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template XFAIL [ 18%] 414s tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_help PASSED [ 18%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_simple PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_hard_newlines_preserved PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_space_preservation PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_value PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_no_separator PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank_entries PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_fuzzy PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_margin_whitespace PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_all_whitespace PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_propertyless_template PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_delimiters PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_empty_value PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_personalities PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_simple PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_multiline2 PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_comments PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_untranslated_unchanged PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_merging_blank PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gaia_plurals PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_duplicates PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_gwt_plurals PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_simple PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_hard_newlines_preserved PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_space_preservation PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_value PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_no_separator PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank_entries PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_fuzzy PASSED [ 19%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_margin_whitespace PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_all_whitespace PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_propertyless_template PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_delimiters PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_empty_value PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_personalities PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_simple PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_multiline2 PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_comments PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_untranslated_unchanged PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_merging_blank PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gaia_plurals PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_duplicates PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_gwt_plurals PASSED [ 20%] 414s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_help PASSED [ 20%] 414s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_help PASSED [ 20%] 414s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert PASSED [ 20%] 414s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_quotes PASSED [ 20%] 414s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment PASSED [ 20%] 414s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_dos_eol PASSED [ 20%] 414s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_double_string PASSED [ 20%] 414s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_popup PASSED [ 20%] 414s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_discardable PASSED [ 20%] 415s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_menuex PASSED [ 20%] 415s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_newlines PASSED [ 20%] 415s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_comment_after PASSED [ 20%] 415s tests/translate/convert/test_po2rc.py::TestPO2RCCommand::test_convert_block_language PASSED [ 20%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_simpleunit PASSED [ 20%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_basic PASSED [ 20%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_multiline PASSED [ 20%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapednewlines PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedtabs PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_escapedquotes PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_exclusions PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingcomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingcomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingduplicatecomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_combocomments_existingcomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESX::test_existingcomments PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_simpleunit PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_basic PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_multiline PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapednewlines PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedtabs PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_escapedquotes PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_exclusions PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingcomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_automaticcomments_existingduplicatecommentwithwhitespace PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingcomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_translatorcomments_existingduplicatecomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingduplicatecomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_combocomments_existingcomment PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_existingcomments PASSED [ 21%] 415s tests/translate/convert/test_po2resx.py::TestPO2RESXCommand::test_help PASSED [ 22%] 415s tests/translate/convert/test_po2sub.py::TestPO2Sub::test_subrip PASSED [ 22%] 415s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_subrip PASSED [ 22%] 415s tests/translate/convert/test_po2sub.py::TestPO2SubCommand::test_help PASSED [ 22%] 415s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_empty PASSED [ 22%] 415s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert PASSED [ 22%] 415s tests/translate/convert/test_po2tiki.py::TestPo2Tiki::test_convert_marked_untranslated PASSED [ 22%] 415s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_empty PASSED [ 22%] 415s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert PASSED [ 22%] 415s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_convert_marked_untranslated PASSED [ 22%] 415s tests/translate/convert/test_po2tiki.py::TestPo2TikiCommand::test_help PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_basic PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcelanguage PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_targetlanguage PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_multiline PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapednewlines PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedtabs PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_escapedquotes PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_exclusions PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonascii PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_nonecomments PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_otherscomments PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_sourcecomments PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMX::test_typecomments PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_basic PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcelanguage PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_targetlanguage PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_multiline PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapednewlines PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedtabs PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_escapedquotes PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_exclusions PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonascii PASSED [ 22%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_nonecomments PASSED [ 23%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_otherscomments PASSED [ 23%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_sourcecomments PASSED [ 23%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_typecomments PASSED [ 23%] 415s tests/translate/convert/test_po2tmx.py::TestPO2TMXCommand::test_help PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simpleunit PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TS::test_simple_unicode_unit PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fullunit PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TS::test_fuzzyunit PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TS::test_obsolete PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TS::test_duplicates PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TS::test_linebreak_consecutive PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simpleunit PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_simple_unicode_unit PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fullunit PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_fuzzyunit PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_obsolete PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_duplicates PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_linebreak_consecutive PASSED [ 23%] 415s tests/translate/convert/test_po2ts.py::TestPO2TSCommand::test_help PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_basic PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_nonascii PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_blank_handling PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_fuzzy_handling PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_obsolete_ignore PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_header_ignore PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_below_threshold PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2Txt::test_convert_completion_above_threshold PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_basic PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_nonascii PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_blank_handling PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_fuzzy_handling PASSED [ 23%] 415s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_obsolete_ignore PASSED [ 24%] 415s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_header_ignore PASSED [ 24%] 415s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_below_threshold PASSED [ 24%] 415s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_convert_completion_above_threshold PASSED [ 24%] 415s tests/translate/convert/test_po2txt.py::TestPO2TxtCommand::test_help PASSED [ 24%] 415s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_basic PASSED [ 24%] 415s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_unicode PASSED [ 24%] 415s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_ordering_serialize PASSED [ 24%] 415s tests/translate/convert/test_po2web2py.py::TestPO2WEB2PY::test_markmin PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_minimal PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_basic PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_multiline PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapednewlines PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedtabs PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_escapedquotes PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_locationcomments PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_othercomments PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_automaticcomments PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_header PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_fuzzy PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_germanic_plurals PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_funny_plurals PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_language_tags PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_variables PASSED [ 24%] 415s tests/translate/convert/test_po2xliff.py::TestPO2XLIFF::test_approved PASSED [ 24%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_empty_PO PASSED [ 24%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_no_templates PASSED [ 24%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple_output PASSED [ 24%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_simple PASSED [ 24%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_translated PASSED [ 24%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_no_fuzzy PASSED [ 24%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_allow_fuzzy PASSED [ 24%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_nested PASSED [ 24%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_below_threshold PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAML::test_convert_completion_above_threshold PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_empty_PO PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_no_templates PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple_output PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_simple PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_translated PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_no_fuzzy PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_allow_fuzzy PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_nested PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_below_threshold PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_convert_completion_above_threshold PASSED [ 25%] 415s tests/translate/convert/test_po2yaml.py::TestPO2YAMLCommand::test_help PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_convertpot_blank_plurals PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_simple PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_messages_marked_fuzzy PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals_with_fuzzy_matching PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change XFAIL [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_change PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_and_whitespace_change PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_location_ambiguous_with_disambiguous PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes XFAIL [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently XFAIL [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_dont_duplicate PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_automatic_comments_new_overides_old PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments_with_blank_comment_lines PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_commentlines PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgidcomments PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_with_msgidcomment PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_plurals PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_obsoleting_messages PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_not_obsoleting_empty_messages PASSED [ 25%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_new_before_obsolete PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_header_initialisation PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_comments PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_typecomments PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgctxt_multiline PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_location PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_msgid_merge_on_id PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_empty_msgid PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_migrate_msgidcomment_to_msgctxt PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_obsolete_msgctxt PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2PO::test_small_strings PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_convertpot_blank_plurals PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_simple PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_messages_marked_fuzzy PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change XFAIL [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_change PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_and_whitespace_change PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_location_ambiguous_with_disambiguous PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes XFAIL [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently XFAIL [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_automatic_comments_new_overides_old PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments_with_blank_comment_lines PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_commentlines PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgidcomments PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_with_msgidcomment PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_plurals PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_obsoleting_messages PASSED [ 26%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_not_obsoleting_empty_messages PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_new_before_obsolete PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_resurect_obsolete_messages_into_msgidcomment PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_header_initialisation PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_comments PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_typecomments PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgctxt_multiline PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_location PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_msgid_merge_on_id PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_empty_msgid PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_migrate_msgidcomment_to_msgctxt PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_obsolete_msgctxt PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_small_strings PASSED [ 27%] 415s tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_help PASSED [ 27%] 415s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_no_endlines_added PASSED [ 27%] 415s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_uncomment_contributors PASSED [ 27%] 415s tests/translate/convert/test_prop2mozfunny.py::TestPO2Prop::test_multiline_comment_newlines PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_simpleentry PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_convertprop PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_value_entry PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_no_separator_entry PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_end_of_string PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_tab_at_start_of_value PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unicode PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_escaping PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_comments PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_multiline_comments PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_folding_accesskeys PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_dont_translate PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_emptyproperty_translated PASSED [ 27%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_newlines_in_value PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_header_comments PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_unassociated_comment_order PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_x_header PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gaia_plurals PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_successive_gaia_plurals PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_duplicate_keys PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2PO::test_gwt_plurals PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_simpleentry PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_convertprop PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_value_entry PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_no_separator_entry PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_end_of_string PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_tab_at_start_of_value PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unicode PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_escaping PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_comments PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_multiline_comments PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_folding_accesskeys PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_dont_translate PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_emptyproperty_translated PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_newlines_in_value PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_header_comments PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_unassociated_comment_order PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_x_header PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gaia_plurals PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_successive_gaia_plurals PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_duplicate_keys PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_gwt_plurals PASSED [ 28%] 415s tests/translate/convert/test_prop2po.py::TestProp2POCommand::test_help PASSED [ 28%] 415s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_help PASSED [ 28%] 415s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert PASSED [ 28%] 415s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 PASSED [ 29%] 415s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong PASSED [ 29%] 415s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 PASSED [ 29%] 415s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_simple PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_multiple_units PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_automaticcomments PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_translatorcomments PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2PO::test_locations PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_multiple_units PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_automaticcomments PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_translatorcomments PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_locations PASSED [ 29%] 415s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_help PASSED [ 29%] 416s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot PASSED [ 29%] 416s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po PASSED [ 29%] 416s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates PASSED [ 29%] 416s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_convert_empty PASSED [ 29%] 416s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_defaults PASSED [ 29%] 416s tests/translate/convert/test_tiki2po.py::TestTiki2Po::test_converttiki_includeunused PASSED [ 29%] 416s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_convert_empty PASSED [ 29%] 416s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_defaults PASSED [ 29%] 416s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_converttiki_includeunused PASSED [ 29%] 416s tests/translate/convert/test_tiki2po.py::TestTiki2PoCommand::test_help PASSED [ 29%] 416s tests/translate/convert/test_ts2po.py::TestTS2PO::test_blank PASSED [ 29%] 416s tests/translate/convert/test_ts2po.py::TestTS2PO::test_basic PASSED [ 29%] 416s tests/translate/convert/test_ts2po.py::TestTS2PO::test_unfinished PASSED [ 29%] 416s tests/translate/convert/test_ts2po.py::TestTS2PO::test_multiline PASSED [ 29%] 416s tests/translate/convert/test_ts2po.py::TestTS2PO::test_obsolete PASSED [ 29%] 416s tests/translate/convert/test_ts2po.py::TestTS2PO::test_comment PASSED [ 29%] 416s tests/translate/convert/test_ts2po.py::TestTS2PO::test_extracomment PASSED [ 29%] 416s tests/translate/convert/test_ts2po.py::TestTS2PO::test_emptycontext PASSED [ 29%] 416s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_blank PASSED [ 30%] 416s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_basic PASSED [ 30%] 416s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_unfinished PASSED [ 30%] 416s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_multiline PASSED [ 30%] 416s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_obsolete PASSED [ 30%] 416s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_comment PASSED [ 30%] 416s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_extracomment PASSED [ 30%] 416s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_emptycontext PASSED [ 30%] 416s tests/translate/convert/test_ts2po.py::TestTS2POCommand::test_help PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_convert_empty PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_keep_duplicates PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_drop_duplicates PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_simple PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_multiple_units PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_carriage_return PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_merge PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2PO::test_no_segmentation PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestDoku2po::test_convert_empty PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestDoku2po::test_keep_duplicates PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestDoku2po::test_drop_duplicates PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestDoku2po::test_basic PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestDoku2po::test_bullet_list PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestDoku2po::test_numbered_list PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestDoku2po::test_spacing PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestDoku2po::test_merge PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_convert_empty PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_keep_duplicates PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_drop_duplicates PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_simple PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_multiple_units PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_carriage_return PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_merge PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_no_segmentation PASSED [ 30%] 416s tests/translate/convert/test_txt2po.py::TestTxt2POCommand::test_help PASSED [ 30%] 416s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_basic PASSED [ 31%] 416s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_unicode PASSED [ 31%] 416s tests/translate/convert/test_web2py2po.py::TestWEB2PY2PO::test_markmin PASSED [ 31%] 416s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_help PASSED [ 31%] 416s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_minimal PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_basic PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_translatorcomments PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_autocomment PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_locations PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_fuzzy PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2PO::test_plurals PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_minimal PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_basic PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_translatorcomments PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_autocomment PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_locations PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_fuzzy PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_plurals PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_help PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestBasicXLIFF2PO::test_simple_convert PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_minimal PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_basic PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_translatorcomments PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_autocomment PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_locations PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_fuzzy PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_plurals PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_help PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po PASSED [ 31%] 416s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates PASSED [ 31%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_empty_YAML PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple_output PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_simple PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_nested PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates XFAIL [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_convert_with_template PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_empty_YAML PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple_output PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_simple PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_nested PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates XFAIL [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_convert_with_template PASSED [ 32%] 416s tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_help PASSED [ 32%] 416s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_empty_target PASSED [ 32%] 416s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_ellipsis PASSED [ 32%] 416s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_spacestart_spaceend PASSED [ 32%] 416s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_start_capitals PASSED [ 32%] 416s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_end_punc PASSED [ 32%] 416s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_correct_combinations PASSED [ 32%] 416s tests/translate/filters/test_autocorrect.py::TestAutocorrect::test_nothing_to_do PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_defaults PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_construct PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_accelerator_markers PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_messages PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_accelerators PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_acceleratedvariables XFAIL [ 32%] 416s tests/translate/filters/test_checks.py::test_acronyms PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_blank PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_brackets PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_compendiumconflicts PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_doublequoting PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_doublespacing PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_doublewords PASSED [ 32%] 416s tests/translate/filters/test_checks.py::test_endpunc PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_endwhitespace PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_escapes PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_newlines PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_tabs PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_filepaths PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_kdecomments PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_long PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_musttranslatewords XFAIL [ 33%] 416s tests/translate/filters/test_checks.py::test_notranslatewords PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_numbers PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_persian_numbers PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_bengali_numbers PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_arabic_numbers PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_assamese_numbers PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_options PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_printf PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_pythonbraceformat PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_puncspacing PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_purepunc PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_sentencecount PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_short PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_singlequoting PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_vietnamese_singlequoting PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time XFAIL [ 33%] 416s tests/translate/filters/test_checks.py::test_persian_quoting PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_simplecaps PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_spellcheck SKIPPED (Spe...) [ 33%] 416s tests/translate/filters/test_checks.py::test_startcaps PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_startpunc PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_startwhitespace PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_unchanged PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_untranslated PASSED [ 33%] 416s tests/translate/filters/test_checks.py::test_validchars PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_minimalchecker PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_reducedchecker PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_variables_kde PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_variables_gnome PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_variables_mozilla PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_variables_openoffice PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_variables_cclicense PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_variables_ios PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_xmltags PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags XFAIL [ 34%] 416s tests/translate/filters/test_checks.py::test_ooxmltags PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_functions PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_emails PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_urls PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_simpleplurals PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_nplurals PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_credits PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_gconf PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_validxml PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_hassuggestion PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_dialogsizes PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_skip_checks_per_language_in_some_checkers PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_mozilla_no_accelerators_for_indic PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_noaccelerators_only_in_mozilla_checker PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_ensure_accelerators_not_in_target_if_not_in_source PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_ensure_bengali_languages_script_is_correct PASSED [ 34%] 416s tests/translate/filters/test_checks.py::test_category PASSED [ 34%] 416s tests/translate/filters/test_decoration.py::test_spacestart PASSED [ 34%] 416s tests/translate/filters/test_decoration.py::test_isvalidaccelerator PASSED [ 34%] 416s tests/translate/filters/test_decoration.py::test_find_marked_variables PASSED [ 34%] 416s tests/translate/filters/test_decoration.py::test_getnumbers PASSED [ 34%] 416s tests/translate/filters/test_decoration.py::test_getfunctions PASSED [ 34%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplepass PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_simplefail PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_variables_across_lines PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_ignore_if_already_marked PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_non_existant_check PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_list_all_tests PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_fuzzy PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_test_against_review PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isfuzzy PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_isreview PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_notes PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_unicode PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_preconditions PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestPOFilter::test_msgid_comments PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplepass PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_simplefail PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_variables_across_lines PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_ignore_if_already_marked PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_non_existant_check PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_list_all_tests PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_fuzzy PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_test_against_review PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isfuzzy PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_isreview PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_notes PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_unicode PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestXliffFilter::test_preconditions PASSED [ 35%] 416s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplepass PASSED [ 35%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_simplefail PASSED [ 35%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_variables_across_lines PASSED [ 35%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_ignore_if_already_marked PASSED [ 35%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_non_existant_check PASSED [ 35%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_list_all_tests PASSED [ 35%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_notes PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_unicode PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_preconditions PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_fuzzy PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_test_against_review PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isfuzzy PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestTMXFilter::test_isreview PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplepass PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_simplefail PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_variables_across_lines PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_ignore_if_already_marked PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_non_existant_check PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_list_all_tests PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_fuzzy PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_test_against_review PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isfuzzy PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_isreview PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_notes PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_unicode PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_preconditions PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_msgid_comments PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_cedillas PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_niciun PASSED [ 36%] 417s tests/translate/filters/test_pofilter.py::TestRomanianPOFilter::test_romanian_nicio PASSED [ 36%] 417s tests/translate/filters/test_prefilters.py::test_removekdecomments PASSED [ 36%] 417s tests/translate/filters/test_prefilters.py::test_filterwordswithpunctuation PASSED [ 36%] 417s tests/translate/lang/test_af.py::test_sentences PASSED [ 36%] 417s tests/translate/lang/test_af.py::test_capsstart PASSED [ 36%] 417s tests/translate/lang/test_af.py::test_transliterate_cyrillic PASSED [ 36%] 417s tests/translate/lang/test_am.py::test_punctranslate PASSED [ 36%] 417s tests/translate/lang/test_am.py::test_sentences PASSED [ 36%] 417s tests/translate/lang/test_ar.py::test_punctranslate PASSED [ 36%] 417s tests/translate/lang/test_ar.py::test_sentences PASSED [ 36%] 417s tests/translate/lang/test_common.py::test_characters PASSED [ 37%] 417s tests/translate/lang/test_common.py::test_words PASSED [ 37%] 417s tests/translate/lang/test_common.py::test_word_khmer XFAIL (ZWS is n...) [ 37%] 417s tests/translate/lang/test_common.py::test_sentences PASSED [ 37%] 417s tests/translate/lang/test_common.py::test_capsstart PASSED [ 37%] 417s tests/translate/lang/test_common.py::test_numstart PASSED [ 37%] 417s tests/translate/lang/test_common.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_common.py::test_length_difference PASSED [ 37%] 417s tests/translate/lang/test_common.py::test_alter_length PASSED [ 37%] 417s tests/translate/lang/test_data.py::test_normalise_code PASSED [ 37%] 417s tests/translate/lang/test_data.py::test_simplify_to_common PASSED [ 37%] 417s tests/translate/lang/test_el.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_el.py::test_sentences PASSED [ 37%] 417s tests/translate/lang/test_es.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_es.py::test_sentences PASSED [ 37%] 417s tests/translate/lang/test_fa.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_fa.py::test_sentences PASSED [ 37%] 417s tests/translate/lang/test_factory.py::test_getlanguage PASSED [ 37%] 417s tests/translate/lang/test_factory.py::test_get_all_languages PASSED [ 37%] 417s tests/translate/lang/test_fr.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_fr.py::test_sentences PASSED [ 37%] 417s tests/translate/lang/test_hy.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_hy.py::test_sentences PASSED [ 37%] 417s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_lang PASSED [ 37%] 417s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_identify_store PASSED [ 37%] 417s tests/translate/lang/test_identify.py::TestLanguageIdentifier::test_bad_init_data PASSED [ 37%] 417s tests/translate/lang/test_ja.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_ja.py::test_sentences PASSED [ 37%] 417s tests/translate/lang/test_km.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_km.py::test_sentences PASSED [ 37%] 417s tests/translate/lang/test_ko.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_ko.py::test_sentences PASSED [ 37%] 417s tests/translate/lang/test_ne.py::test_punctranslate PASSED [ 37%] 417s tests/translate/lang/test_ne.py::test_sentences PASSED [ 38%] 417s tests/translate/lang/test_nqo.py::test_punctranslate PASSED [ 38%] 417s tests/translate/lang/test_nqo.py::test_sentences PASSED [ 38%] 417s tests/translate/lang/test_or.py::test_punctranslate PASSED [ 38%] 417s tests/translate/lang/test_or.py::test_country_code PASSED [ 38%] 417s tests/translate/lang/test_or.py::test_sentences PASSED [ 38%] 417s tests/translate/lang/test_poedit.py::test_isocode PASSED [ 38%] 417s tests/translate/lang/test_ro.py::test_cedillas PASSED [ 38%] 417s tests/translate/lang/test_ro.py::test_niciun PASSED [ 38%] 417s tests/translate/lang/test_scn.py::test_italianisms PASSED [ 38%] 417s tests/translate/lang/test_scn.py::test_vocalism PASSED [ 38%] 417s tests/translate/lang/test_scn.py::test_suffixes PASSED [ 38%] 417s tests/translate/lang/test_team.py::test_simple PASSED [ 38%] 417s tests/translate/lang/test_th.py::test_punctranslate PASSED [ 38%] 417s tests/translate/lang/test_th.py::test_sentences PASSED [ 38%] 417s tests/translate/lang/test_tr.py::test_sentences PASSED [ 38%] 417s tests/translate/lang/test_uk.py::test_sentences PASSED [ 38%] 417s tests/translate/lang/test_vi.py::test_punctranslate PASSED [ 38%] 417s tests/translate/lang/test_vi.py::test_sentences PASSED [ 38%] 417s tests/translate/lang/test_zh.py::test_punctranslate PASSED [ 38%] 417s tests/translate/lang/test_zh.py::test_sentences PASSED [ 38%] 417s tests/translate/misc/test_deprecation.py::TestDeprecation::test_deprecated_decorator PASSED [ 38%] 417s tests/translate/misc/test_deprecation.py::TestDeprecation::test_no_deprecated_decorator PASSED [ 38%] 417s tests/translate/misc/test_dictutils.py::test_cidict_has_key PASSED [ 38%] 417s tests/translate/misc/test_multistring.py::TestMultistring::test_constructor PASSED [ 38%] 417s tests/translate/misc/test_multistring.py::TestMultistring::test_repr PASSED [ 38%] 417s tests/translate/misc/test_multistring.py::TestMultistring::test_replace PASSED [ 38%] 417s tests/translate/misc/test_multistring.py::TestMultistring::test_comparison PASSED [ 38%] 417s tests/translate/misc/test_multistring.py::TestMultistring::test_coercion PASSED [ 38%] 417s tests/translate/misc/test_multistring.py::TestMultistring::test_unicode_coercion PASSED [ 38%] 417s tests/translate/misc/test_multistring.py::TestMultistring::test_list_coercion PASSED [ 38%] 417s tests/translate/misc/test_multistring.py::TestMultistring::test_multistring_hash PASSED [ 38%] 417s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_splitext PASSED [ 38%] 417s tests/translate/misc/test_optrecurse.py::TestRecursiveOptionParser::test_outputfile_receives_bytes PASSED [ 38%] 417s tests/translate/misc/test_progressbar.py::test_hashprogressbar PASSED [ 39%] 417s tests/translate/misc/test_quote.py::test_find_all PASSED [ 39%] 417s tests/translate/misc/test_quote.py::test_extract PASSED [ 39%] 417s tests/translate/misc/test_quote.py::test_extractwithoutquotes PASSED [ 39%] 417s tests/translate/misc/test_quote.py::test_extractwithoutquotes_passfunc PASSED [ 39%] 417s tests/translate/misc/test_quote.py::test_stripcomment PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_javapropertiesencode PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_java_utf8_properties_encode PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_escapespace PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_mozillaescapemarginspaces PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_mozilla_control_escapes PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_propertiesdecode PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_properties_decode_slashu PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_existing_entities PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_passthrough PASSED [ 39%] 417s tests/translate/misc/test_quote.py::TestEncoding::test_htmlencoding_nonentities PASSED [ 39%] 417s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_four_spaces PASSED [ 39%] 417s tests/translate/misc/test_xml_helpers.py::TestReindent::test_indent_tab PASSED [ 39%] 417s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_distance PASSED [ 39%] 417s tests/translate/search/test_lshtein.py::TestLevenshtein::test_basic_similarity PASSED [ 39%] 417s tests/translate/search/test_lshtein.py::TestLevenshtein::test_long_similarity PASSED [ 39%] 417s tests/translate/search/test_match.py::TestMatch::test_matching PASSED [ 39%] 417s tests/translate/search/test_match.py::TestMatch::test_multiple_store PASSED [ 39%] 417s tests/translate/search/test_match.py::TestMatch::test_extendtm PASSED [ 39%] 417s tests/translate/search/test_match.py::TestMatch::test_terminology PASSED [ 39%] 417s tests/translate/search/test_match.py::TestMatch::test_brackets PASSED [ 39%] 417s tests/translate/search/test_match.py::TestMatch::test_past_tences PASSED [ 39%] 417s tests/translate/search/test_match.py::TestMatch::test_space_mismatch PASSED [ 39%] 417s tests/translate/search/test_match.py::TestMatch::test_hyphen_mismatch PASSED [ 39%] 417s tests/translate/search/test_terminology.py::TestTerminology::test_basic PASSED [ 39%] 417s tests/translate/services/test_tmserver.py::TestTMServer::test_import PASSED [ 39%] 417s tests/translate/services/test_tmserver.py::TestTMServer::test_server PASSED [ 39%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_parse PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_tree PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_add PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_contains PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getitem PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_getslice PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_iter PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_len PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_mul PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_offset PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_elem_at_offset PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_find_elems_with PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_flatten PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case1 PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case2 PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case3 PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_delete_range_case4 PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_insert PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_isleaf PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestStringElem::test_prune PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_base_placeables PASSED [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables XFAIL [ 40%] 417s tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables XFAIL [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_numbers PASSED [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_newline PASSED [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_alt_attr PASSED [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_qt_formatting PASSED [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_camelcase PASSED [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_space PASSED [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_punctuation PASSED [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_xml_entity PASSED [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_xml_tag PASSED [ 40%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_option PASSED [ 41%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_file PASSED [ 41%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_email PASSED [ 41%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_caps PASSED [ 41%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_formatting PASSED [ 41%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_doubleat PASSED [ 41%] 417s tests/translate/storage/placeables/test_general.py::test_placeable_brace PASSED [ 41%] 417s tests/translate/storage/placeables/test_general.py::test_python_placeable PASSED [ 41%] 417s tests/translate/storage/placeables/test_lisa.py::test_xml_to_strelem PASSED [ 41%] 417s tests/translate/storage/placeables/test_lisa.py::test_xml_space PASSED [ 41%] 417s tests/translate/storage/placeables/test_lisa.py::test_chunk_list PASSED [ 41%] 417s tests/translate/storage/placeables/test_lisa.py::test_set_strelem_to_xml PASSED [ 41%] 417s tests/translate/storage/placeables/test_lisa.py::test_unknown_xml_placeable PASSED [ 41%] 417s tests/translate/storage/placeables/test_terminology.py::TestTerminologyPlaceable::test_simple_terminology PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_isfuzzy PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_create PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_eq PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escapes PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_difficult_escapes PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_note_sanity PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_target PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_get PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_rich_set PASSED [ 41%] 417s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quotes_with_newline PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_message_with_newline_in_xml PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_twitter PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quote PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_question PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_double_space PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_leading_space PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_tailing_space PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_xml_entities PASSED [ 41%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_code_quote_newline PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_arrows PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_link_and_text PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_blank_string PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_escape_message_with_newline PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_invalid_lang PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_quote PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_leading_space PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_trailing_space PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_with_ampersand PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_double_space PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_html_deep_double_space PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_complex_xml PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_escape_quoted_newlines PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_message_with_newline_in_xml PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_twitter PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_question PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quote PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_space PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_space PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_quoted_newlines PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_xml_entities PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_code PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_arrows PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_link_and_text PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_space PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_spaces PASSED [ 42%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_leading_spaces PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_trailing_newline PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_many_quotes PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_blank_string_again PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_double_quotes_string PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_newline_in_string PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_not_translatable_string PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_newline PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_plural_parse_message_with_comments PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_quote PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_leading_space_quoted PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_trailing_space_quoted PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_with_ampersand PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_double_space_quoted PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_html_deep_double_space_quoted PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_complex_xml PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_parse_unicode PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_unescaped PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_alone PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceUnit::test_single_escaped_full PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_create_blank PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_remove PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_find PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_parse PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_files PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_save PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_extensions PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_mimetypes PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_translate PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup PASSED [ 43%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_nonascii PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_default_handlings PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_targetlanguage_auto_detection_invalid_filename PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_namespaces PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_serialize PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_add_formatting PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_invalid_entity PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_indent PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_markup PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_entity_add_noedit PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_remove PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_set PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_others PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_markup_quotes_set PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_g PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_xliff_namespace PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_zh_hk PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_edit_plural_b_zh_hk PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_missing_plural PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_removeunit PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_cdata PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_prefix PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestAndroidResourceFile::test_rtl PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_isfuzzy PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_create PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_eq PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_escapes PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_difficult_escapes PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_note_sanity PASSED [ 44%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_target PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_get PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceUnit::test_rich_set PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_create_blank PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_add PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_remove PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_find PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_parse PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_files PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_save PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_extensions PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_mimetypes PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_translate PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_markup PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_nonascii PASSED [ 45%] 418s tests/translate/storage/test_aresource.py::TestMOKOResourceFile::test_plural PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationUnit::test_isfuzzy PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationUnit::test_create PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationUnit::test_eq PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationUnit::test_target PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationUnit::test_escapes PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationUnit::test_difficult_escapes PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationUnit::test_note_sanity PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_get PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationUnit::test_rich_set PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_create_blank PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_add PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_remove PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_find PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_translate PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_parse PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_files PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_save PASSED [ 45%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_markup PASSED [ 46%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_nonascii PASSED [ 46%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_extensions PASSED [ 46%] 418s tests/translate/storage/test_base.py::TestTranslationStore::test_mimetypes PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_isfuzzy PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_create PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_eq PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_target PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_escapes PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_get PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_rich_set PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_difficult_escapes PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_newlines PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_istranslated PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysUnit::test_note_sanity PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_create_blank PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_add PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_remove PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_find PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_translate PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_parse PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_files PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_save PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_markup PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_nonascii PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_extensions PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_mimetypes PASSED [ 46%] 418s tests/translate/storage/test_catkeys.py::TestCatkeysFile::test_checksum PASSED [ 46%] 418s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_isfuzzy PASSED [ 46%] 418s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_create PASSED [ 46%] 418s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_eq PASSED [ 46%] 418s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_target PASSED [ 46%] 418s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_escapes PASSED [ 46%] 418s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_difficult_escapes PASSED [ 46%] 418s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_note_sanity PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_get PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSVUnit::test_rich_set PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_create_blank PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_add PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_remove PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_find PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_translate PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_files PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_save PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_markup PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_nonascii PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_extensions PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_mimetypes PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_singlequoting PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8 PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_sig PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_default PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_location_is_parsed PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_context_is_parsed PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_newline PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_parse_sample PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_utf_8_detection PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_encoding PASSED [ 47%] 418s tests/translate/storage/test_csvl10n.py::TestCSV::test_corrupt PASSED [ 47%] 418s tests/translate/storage/test_directory.py::TestDirectory::test_created PASSED [ 47%] 418s tests/translate/storage/test_directory.py::TestDirectory::test_basic PASSED [ 47%] 418s tests/translate/storage/test_directory.py::TestDirectory::test_structure PASSED [ 47%] 418s tests/translate/storage/test_directory.py::TestDirectory::test_getunits PASSED [ 47%] 418s tests/translate/storage/test_dtd.py::test_roundtrip_quoting PASSED [ 47%] 418s tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases XFAIL [ 47%] 418s tests/translate/storage/test_dtd.py::test_quotefordtd PASSED [ 47%] 418s tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases XFAIL [ 48%] 418s tests/translate/storage/test_dtd.py::test_unquotefromdtd PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::test_android_roundtrip_quoting PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::test_quoteforandroid PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::test_unquotefromandroid PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::test_removeinvalidamp PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTDUnit::test_isfuzzy PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTDUnit::test_create PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTDUnit::test_eq PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTDUnit::test_escapes PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTDUnit::test_difficult_escapes PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTDUnit::test_note_sanity PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTDUnit::test_target PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_get PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTDUnit::test_rich_set PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_create_blank PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_add PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_remove PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_find PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_parse PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_files PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_save PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_extensions PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_mimetypes PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_translate PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_markup PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_nonascii PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_blanklines PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_simpleentity_source PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_hashcomment_source PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_commentclosing PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_commententity PASSED [ 48%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_newlines_in_entity PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_conflate_comments PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_localisation_notes PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_in_source PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_entitityreference_order_in_source PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_comment_following XFAIL [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_comment_newline_space_closing PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting XFAIL [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_missing_quotes PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestDTD::test_entity_escaping_roundtrip PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_create_blank PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_add PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_remove PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_find PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_parse PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_files PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_save PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_extensions PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_mimetypes PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_translate PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_markup PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_nonascii PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_single_quote_escape_parse_and_convert_back PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape PASSED [ 49%] 418s tests/translate/storage/test_dtd.py::TestAndroidDTD::test_android_double_quote_escape_parse_and_convert_back PASSED [ 49%] 418s tests/translate/storage/test_factory.py::TestPOFactory::test_getclass PASSED [ 49%] 418s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject_store PASSED [ 49%] 418s tests/translate/storage/test_factory.py::TestPOFactory::test_getobject PASSED [ 49%] 418s tests/translate/storage/test_factory.py::TestPOFactory::test_get_noname_object PASSED [ 49%] 418s tests/translate/storage/test_factory.py::TestPOFactory::test_gzfile PASSED [ 49%] 418s tests/translate/storage/test_factory.py::TestPOFactory::test_bz2file PASSED [ 49%] 418s tests/translate/storage/test_factory.py::TestPOFactory::test_directory PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestXliffFactory::test_getclass PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject_store PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestXliffFactory::test_getobject PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestXliffFactory::test_get_noname_object PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestXliffFactory::test_gzfile PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestXliffFactory::test_bz2file PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestXliffFactory::test_directory PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getclass PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject_store PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_getobject PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_get_noname_object PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_gzfile PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_bz2file PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestPOXliffFactory::test_directory PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getclass PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject_store PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestWordfastFactory::test_getobject PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestWordfastFactory::test_get_noname_object PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestWordfastFactory::test_gzfile PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestWordfastFactory::test_bz2file PASSED [ 50%] 418s tests/translate/storage/test_factory.py::TestWordfastFactory::test_directory PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_isfuzzy PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_create PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_eq PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_escapes PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_difficult_escapes PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_note_sanity PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_target PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_get PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLUnit::test_rich_set PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_create_blank PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_add PASSED [ 50%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_remove PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_find PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_parse PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_files PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_save PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_extensions PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_mimetypes PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_translate PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_markup PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_nonascii PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_root_config_detect PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_detect PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_key_config_detect PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_value_config_mixed_ok PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_namespace_config_detect PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_four_spaces PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_tab PASSED [ 51%] 418s tests/translate/storage/test_flatxml.py::TestFlatXMLFile::test_indent_none_linearizes PASSED [ 51%] 418s tests/translate/storage/test_html.py::test_guess_encoding PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLParsing::test_mismatched_tags PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLParsing::test_self_closing_tags PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLParsing::test_escaping_script_and_pre PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLExtraction::test_strip_html PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_figcaption PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_tag_caption_td_th PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_alt PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_attr_title PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre PASSED [ 51%] 418s tests/translate/storage/test_html.py::TestHTMLExtraction::test_extraction_pre_code PASSED [ 51%] 418s tests/translate/storage/test_ini.py::TestINIUnit::test_isfuzzy PASSED [ 51%] 418s tests/translate/storage/test_ini.py::TestINIUnit::test_create PASSED [ 51%] 418s tests/translate/storage/test_ini.py::TestINIUnit::test_eq PASSED [ 51%] 418s tests/translate/storage/test_ini.py::TestINIUnit::test_escapes PASSED [ 51%] 418s tests/translate/storage/test_ini.py::TestINIUnit::test_difficult_escapes PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIUnit::test_note_sanity PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIUnit::test_target PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_get PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIUnit::test_rich_set PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_create_blank PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_add PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_remove PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_find PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_parse PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_files PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_save PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_extensions PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_mimetypes PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_translate PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_markup PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_nonascii PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_serialize PASSED [ 52%] 418s tests/translate/storage/test_ini.py::TestINIStore::test_rem PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_isfuzzy PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_create PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_eq PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_escapes PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_difficult_escapes PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_note_sanity PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_target PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_get PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceUnit::test_rich_set PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_create_blank PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_remove PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_find PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_parse PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_files PASSED [ 52%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_save PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_extensions PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_mimetypes PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_translate PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_markup PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_nonascii PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_serialize PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_can_not_detect PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_error PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_filter PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_ordering PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_args PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_bom PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_complex_array PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_list_like PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_add_blank PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_types PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONResourceStore::test_null PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_isfuzzy PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_create PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_eq PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_escapes PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_difficult_escapes PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_note_sanity PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_target PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_get PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_rich_set PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_serialize PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_ordering PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_array PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index PASSED [ 53%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_index_nested PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_nested_list_mixed PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_list_to_dict PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_complex_keys PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_add_other PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0]-expected0] PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0]-expected1] PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[test[0][1][2][3]-expected2] PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test]selection-expected3] PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[test][0]selection-expected4] PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[[0][test]selection-expected5] PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestJSONNestedResourceStore::test_from_string[-expected6] PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_isfuzzy PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_create PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_eq PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_escapes PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_difficult_escapes PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_note_sanity PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_target PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_get PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionUnit::test_rich_set PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_create_blank PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_add PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_remove PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_find PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_parse PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_files PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_save PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_extensions PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_mimetypes PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_translate PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_markup PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_nonascii PASSED [ 54%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_serialize_no_description PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_set_target PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestWebExtensionStore::test_placeholders PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_create_blank PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_add PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_remove PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_find PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_parse PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_files PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_save PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_extensions PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_mimetypes PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_translate PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_markup PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nonascii PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_serialize PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_units PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_plurals PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_nested_array PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextStore::test_new_plural_id PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_create_blank PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_add PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_remove PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_find PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_parse PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_files PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_save PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_extensions PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_mimetypes PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_translate PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_markup PASSED [ 55%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_nonascii PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_plurals_missing PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_case_no_msg PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoTextJsonFile::test_complex_id PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_create_blank PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_add PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_remove PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_find PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_parse PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_files PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_save PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_extensions PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_mimetypes PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_translate PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_markup PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nonascii PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_serialize PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_units PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_plurals PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_nested_array PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_new_plural PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestI18NextV4Store::test_ru PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_create_blank PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_add PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_remove PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_find PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_parse PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_files PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_save PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_extensions PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_mimetypes PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_translate PASSED [ 56%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_markup PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_nonascii PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_plurals_missing PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NJsonFile::test_invalid PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_create_blank PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_add PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_remove PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_find PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_parse PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_files PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_save PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_extensions PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_mimetypes PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_translate PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_markup PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_nonascii PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_1 PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_2 PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_plurals_missing PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_simplification PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestGoI18NV2JsonFile::test_invalid PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_create_blank PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_add PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_remove PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_find PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_parse PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_files PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_save PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_extensions PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_mimetypes PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_translate PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_markup PASSED [ 57%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_nonascii PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestARBJsonFile::test_roundtrip PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_create_blank PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_add PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_remove PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_find PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_parse PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_files PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_save PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_extensions PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_mimetypes PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_translate PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_markup PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_nonascii PASSED [ 58%] 418s tests/translate/storage/test_jsonl10n.py::TestFormatJSJsonFile::test_roundtrip PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_atx_heading PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_autolink PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_block_quote PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_block PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_code_span PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_atx_heading PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_document PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_empty_list_item PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_escaped_character PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_hard_line_break PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_block PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_character_entities PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_html_span PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_image_embedded_in_link PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_collapsed_reference_link PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_full_reference_link PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_link_reference_definition_and_shortcut_reference_link PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_merging_of_adjacent_placeholders PASSED [ 58%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_block_tokens PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_nested_list PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_basic_markup PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_paragraph_with_only_whitespace_and_placeholders PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_placeholder_trimming PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_image_no_title PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_link PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_plain_text_paragraph PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_remove_placeholders_from_both_ends_of_translation_units PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_setext_heading PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_table_with_header PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownTranslationUnitExtractionAndTranslation::test_thematic_break PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_hard_line_break_in_translation_unit PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_missing_placeholder PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_duplicate_placeholder PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_extraneous_placeholder PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_reordered_placeholders PASSED [ 59%] 418s tests/translate/storage/test_markdown.py::TestMarkdownRendering::test_invalid_markdown_in_translation PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_isfuzzy PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_create PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_eq PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_target PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_escapes PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_difficult_escapes PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_note_sanity PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_get PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_rich_set PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOUnit::test_context PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_create_blank PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_add PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_remove PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_find PASSED [ 59%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_translate PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_parse PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_files PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_save PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_markup PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_nonascii PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_extensions PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_mimetypes PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_language PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_context PASSED [ 60%] 418s tests/translate/storage/test_mo.py::TestMOFile::test_output PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_isfuzzy PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_create PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_eq PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_escapes PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_difficult_escapes PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_note_sanity PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_target PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_get PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualUnit::test_rich_set PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_create_blank PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_add PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_remove PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_find PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_parse PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_files PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_save PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_extensions PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_mimetypes PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_translate PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_markup PASSED [ 60%] 418s tests/translate/storage/test_monolingual.py::TestMonolingualStore::test_nonascii PASSED [ 60%] 418s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[-] PASSED [ 60%] 418s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String-String] PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {OK}-String] PASSED [ 61%] 418s 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%] 418s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{ok}-String] PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String{OK}-String] PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok}-String] PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::test_strip_ok[String {ok} -String] PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_isfuzzy PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_create PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_eq PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_target PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_escapes PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_difficult_escapes PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_note_sanity PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_get PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_rich_set PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_translate_but_same PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_untranslated PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_comments PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangUnit::test_copy_target PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_create_blank PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_add PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_remove PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_find PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_translate PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_parse PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_files PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_save PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_markup PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_extensions PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_mimetypes PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_nonascii PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_format_layout PASSED [ 61%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_crlf PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_active_flag PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_multiline_comments PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_template PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[--False] PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ -Source -True] PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok}-Source-True] PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[ {ok} -Source-True] PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_ok_translations[{ok}-Source-True] PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_headers PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_not_headers PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[0] PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[1] PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[2] PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_header_blanklines[3] PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_tag_comments PASSED [ 62%] 418s tests/translate/storage/test_mozilla_lang.py::TestMozLangFile::test_maxlength PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtUnit::test_isfuzzy PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtUnit::test_create PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtUnit::test_eq PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtUnit::test_target PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtUnit::test_escapes PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtUnit::test_difficult_escapes PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtUnit::test_note_sanity PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_get PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtUnit::test_rich_set PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_create_blank PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_add PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_remove PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_find PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_translate PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_parse PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_files PASSED [ 62%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_save PASSED [ 63%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_markup PASSED [ 63%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_nonascii PASSED [ 63%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_mimetypes PASSED [ 63%] 418s tests/translate/storage/test_omegat.py::TestOtFile::test_extensions XFAIL [ 63%] 418s tests/translate/storage/test_oo.py::test_makekey PASSED [ 63%] 418s tests/translate/storage/test_oo.py::test_escape_help_text PASSED [ 63%] 418s tests/translate/storage/test_oo.py::TestOO::test_simpleentry PASSED [ 63%] 418s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_quickhelptest PASSED [ 63%] 418s tests/translate/storage/test_oo.py::TestOO::test_simpleentry_title PASSED [ 63%] 418s tests/translate/storage/test_oo.py::TestOO::test_blankline PASSED [ 63%] 418s tests/translate/storage/test_oo.py::TestOO::test_fieldlength PASSED [ 63%] 418s tests/translate/storage/test_oo.py::TestOO::test_escapes PASSED [ 63%] 418s tests/translate/storage/test_php.py::test_php_escaping_single_quote PASSED [ 63%] 418s tests/translate/storage/test_php.py::test_php_escaping_double_quote PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpUnit::test_isfuzzy PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpUnit::test_create PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpUnit::test_eq PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpUnit::test_escapes PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpUnit::test_note_sanity PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpUnit::test_target PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_get PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpUnit::test_rich_set PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpUnit::test_difficult_escapes PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_create_blank PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_add PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_remove PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_find PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parse PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_files PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_save PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_extensions PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_mimetypes PASSED [ 63%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_translate PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_markup PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_nonascii PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_source PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_spaces_in_name PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_comment_definition PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_comment_blocks PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_comment_output PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_comment_add PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_multiline PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_no_array_syntax PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_keys_with_spaces PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_non_textual PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_define_with_spaces_before_key PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_after_equal_delimiter_and_before_key PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equal_delimiter PASSED [ 64%] 418s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_no_spaces_after_equaldel_but_before_key PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_entries_with_quotes PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_comments_at_entry_line_end PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_double_slash_comments_before_entries PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_define_spaces_before_end_delimiter PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simpledefinition_spaces_before_end_delimiter PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_no_trailing_comma PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_space_before_comma PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_space_before_array_declaration PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_declared_in_a_single_line PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_with_no_keys_assigned_to_array PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_no_keys PASSED [ 64%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_assignment_in_line_where_multiline_comment_ends PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_arrays_using_short_array_syntax PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_space_before_array_declaration PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_unnamed_nested_arrays PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_array_declaration_in_next_line PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_array_with_newline_after_delimiter PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_nested_arrays_with_blank_entries PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_slashstar_in_string PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_parsing_simple_heredoc_syntax PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_simpledefinition_after_define PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_quotes PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_concatenation PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_serialize PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_space_before_comma PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_equals_in_id PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_comma_in_string PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_nowdoc PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_plain_concatenation PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_array_keys PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_double_var PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_return_array PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_return_array_short_quotes PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestPhpFile::test_addunit PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_isfuzzy PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_create PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_eq PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_escapes PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_difficult_escapes PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_note_sanity PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_target PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_get PASSED [ 65%] 419s tests/translate/storage/test_php.py::TestLaravelPhpUnit::test_rich_set PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_create_blank PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_add PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_remove PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_find PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_parse PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_files PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_save PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_extensions PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_mimetypes PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_translate PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_markup PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_nonascii PASSED [ 66%] 419s tests/translate/storage/test_php.py::TestLaravelPhpFile::test_plurals PASSED [ 66%] 419s tests/translate/storage/test_po.py::test_roundtrip_quoting PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_isfuzzy PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_create PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_eq PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_target PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_escapes PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_difficult_escapes PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_note_sanity PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_rich_get PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_rich_set PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_istranslatable PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_locations PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_nongettext_location PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_adding_empty_note PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_markreview PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_errors PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_no_plural_settarget PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_wrapping_bug PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_extract_msgidcomments_from_text PASSED [ 66%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_isheader PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOUnit::test_buildfromunit PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_create_blank PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_add PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_remove PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_find PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_translate PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_parse PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_files PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_save PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_markup PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_nonascii PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_extensions PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_mimetypes PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_context_only PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_simpleentry PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_copy PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_parse_source_string PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_parse_file PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_unicode PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_plurals PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_plural_unicode PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_nongettext_location PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_percent_location PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals XFAIL [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_empty_lines_notes PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_fuzzy PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated XFAIL [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_merging_automaticcomments PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_malformed_units PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_malformed_obsolete_units PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_uniforum_po PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_obsolete PASSED [ 67%] 419s tests/translate/storage/test_po.py::TestPOFile::test_obsolete_with_prev_msgid PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_header_escapes PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_plural PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgctxt PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_msgidcomments PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_multiline_obsolete PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_merge_duplicates PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_merge_mixed_sources PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_parse_context PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_parse_advanced_context PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_kde_context PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_broken_kde_context PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_id PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_non_ascii_header_comments_2 PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_final_slash PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_unfinished_lines PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_encoding_change PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_istranslated PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_wrapping PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_wrapping_cjk PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_wrap_gettext PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_msgidcomments PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_unicode_ids PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_syntax_error PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_invalid PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_wrapped_msgid PASSED [ 68%] 419s tests/translate/storage/test_po.py::TestPOFile::test_missing_plural PASSED [ 68%] 419s tests/translate/storage/test_pocommon.py::test_roundtrip_quote_plus PASSED [ 68%] 419s tests/translate/storage/test_poheader.py::test_parseheaderstring PASSED [ 68%] 419s tests/translate/storage/test_poheader.py::test_update PASSED [ 68%] 419s tests/translate/storage/test_poheader.py::test_po_dates PASSED [ 68%] 419s tests/translate/storage/test_poheader.py::test_timezones PASSED [ 69%] 419s tests/translate/storage/test_poheader.py::test_header_blank PASSED [ 69%] 419s tests/translate/storage/test_poheader.py::test_plural_equation PASSED [ 69%] 419s tests/translate/storage/test_poheader.py::test_plural_equation_across_lines PASSED [ 69%] 419s tests/translate/storage/test_poheader.py::test_updatecontributor PASSED [ 69%] 419s tests/translate/storage/test_poheader.py::test_updatecontributor_header PASSED [ 69%] 419s tests/translate/storage/test_poheader.py::test_language PASSED [ 69%] 419s tests/translate/storage/test_poheader.py::test_project PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_isfuzzy PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_create PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_eq PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_target PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_escapes PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_difficult_escapes PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_note_sanity PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_get PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_rich_set PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_markreview PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_errors PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_accepted_control_chars PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_plurals PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFUnit::test_ids PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_create_blank PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_remove PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_find PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_translate PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_files PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_save PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_markup PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_nonascii PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_extensions PASSED [ 69%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_mimetypes PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_basic PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_namespace PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_source PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_rich_target PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_source PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_target PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_sourcelanguage PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_targetlanguage_multi PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_alttrans PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_fuzzy PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_xml_space PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parsing PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_entities PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_multiple_filenodes PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_indent PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_add_target PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_closing_tags PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_context_groups PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_getlocations PASSED [ 70%] 419s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_addlocation PASSED [ 70%] 420s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_huge PASSED [ 70%] 420s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_preserve_add PASSED [ 70%] 420s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse PASSED [ 70%] 420s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_parse_plural_alpha_id PASSED [ 70%] 420s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_notes PASSED [ 70%] 420s tests/translate/storage/test_poxliff.py::TestPOXLIFFfile::test_plural PASSED [ 70%] 420s tests/translate/storage/test_properties.py::test_find_delimiter_pos_simple PASSED [ 70%] 420s tests/translate/storage/test_properties.py::test_find_delimiter_pos_multiple PASSED [ 70%] 420s tests/translate/storage/test_properties.py::test_find_delimiter_pos_none PASSED [ 70%] 420s tests/translate/storage/test_properties.py::test_find_delimiter_pos_whitespace PASSED [ 70%] 420s tests/translate/storage/test_properties.py::test_find_delimiter_pos_escapes PASSED [ 71%] 420s tests/translate/storage/test_properties.py::test_is_line_continuation PASSED [ 71%] 420s tests/translate/storage/test_properties.py::test_key_strip PASSED [ 71%] 420s tests/translate/storage/test_properties.py::test_get_comment_one_line PASSED [ 71%] 420s tests/translate/storage/test_properties.py::test_get_comment_start PASSED [ 71%] 420s tests/translate/storage/test_properties.py::test_get_comment_end PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestPropUnit::test_isfuzzy PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestPropUnit::test_create PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestPropUnit::test_eq PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestPropUnit::test_escapes PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestPropUnit::test_difficult_escapes PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestPropUnit::test_note_sanity PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestPropUnit::test_target PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_get PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestPropUnit::test_rich_set PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_create_blank PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_add PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_remove PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_find PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_parse PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_files PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_save PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_extensions PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_mimetypes PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_translate PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_markup PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_nonascii PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_quotes PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_simpledefinition PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_doubledefinition_source PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_reduce PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_increase PASSED [ 71%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_extra_plurals PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_non_plurals PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestGwtProp::test_encoding PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_create_blank PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_add PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_remove PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_find PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_parse PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_files PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_save PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_extensions PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_mimetypes PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_translate PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_markup PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_nonascii PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_simpledefinition_source PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_controlutf8_source PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_control_source PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_unicode_escaping PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_newlines_startend PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_whitespace_handling PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_key_value_delimiters_simple PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_comments PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_latin1 PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_fullspec_delimiters PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_fullspec_escaped_key PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_fullspec_line_continuation PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_fullspec_key_without_value PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_utf_16_save PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_multiline_strings PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_unicode PASSED [ 72%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_utf8 PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_newlines PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_multilines_comments PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_comments_dropping PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_quotes PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_equals PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_serialization PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_mac_strings_double_backslashes PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_override_encoding PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_trailing_comments PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_utf16_byte_order_mark PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_raise_ioerror_if_cannot_detect_encoding PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_utf8_byte_order_mark PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_joomla_set_target PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_joomla PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_joomla_escape PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_delimiter PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_serialize_missing_value PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_multi_comments PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_serialize_note PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestProp::test_serialize_long_note PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_create_blank PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_add PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_remove PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_find PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_parse PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_files PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_save PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_extensions PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_mimetypes PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_translate PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_markup PASSED [ 73%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_nonascii PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_simpledefinition PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_missing_definition_source PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_definition_with_simple_quote_and_argument PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_header_preserved PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_blank_line_before_comment_preserved PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWiki::test_deprecated_comments_preserved PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_create_blank PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_add PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_remove PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_find PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_parse PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_files PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_save PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_extensions PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_mimetypes PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_markup PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_nonascii PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_simpledefinition PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_missing_definition_source PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_simple_quote_and_argument PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_definition_with_encoded_html PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_cleaning_attributes PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiPageProperties::test_translate_source PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_create_blank PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_add PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_find PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_extensions PASSED [ 74%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_mimetypes PASSED [ 75%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_translate PASSED [ 75%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_markup PASSED [ 75%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_nonascii PASSED [ 75%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_simpledefinition PASSED [ 75%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_parse PASSED [ 75%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_files PASSED [ 75%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_save PASSED [ 75%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_cleaning_attributes PASSED [ 75%] 420s tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove XFAIL [ 75%] 420s tests/translate/storage/test_pypo.py::TestHelpers::test_unescape PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestHelpers::test_quoteforpo_escaped_quotes PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isfuzzy PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_create PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_eq PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_target PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_escapes PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_difficult_escapes PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_note_sanity PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_get PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_rich_set PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_istranslatable PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_locations PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_nongettext_location PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_adding_empty_note PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_markreview PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_errors PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_no_plural_settarget PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrapping_bug PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_extract_msgidcomments_from_text PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_isheader PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_buildfromunit PASSED [ 75%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plurals PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_plural_reduction PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_notes_withcomments PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_firstlines PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_newlines PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_max_line_length PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_wrap_on_slash PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOUnit::test_spacing_max_line PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_create_blank PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_add PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_remove PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_find PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_translate PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_files PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_save PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_markup PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nonascii PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_extensions PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mimetypes PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_context_only PASSED [ 76%] 420s tests/translate/storage/test_pypo.py::TestPYPOFile::test_simpleentry PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_copy PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_source_string PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_file PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plurals PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_plural_unicode PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_nongettext_location PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_percent_location PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals XFAIL [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_empty_lines_notes PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_fuzzy PASSED [ 76%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated XFAIL [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merging_automaticcomments PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_units PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_malformed_obsolete_units PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_uniforum_po PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_obsolete_with_prev_msgid PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_header_escapes PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_plural PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgctxt PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_msgidcomments PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_multiline_obsolete PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_mixed_sources PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_context PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_parse_advanced_context PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_context PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_broken_kde_context PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_id PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_non_ascii_header_comments_2 PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_final_slash PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unfinished_lines PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_encoding_change PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_istranslated PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapping_cjk PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_gettext PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_msgidcomments PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_ids PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_syntax_error PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrapped_msgid PASSED [ 77%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_missing_plural PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_combine_msgidcomments PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_duplicates_msgctxt PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_merge_blanks PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_output_str_unicode PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_posections PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_typecomments PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unassociated_comments PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unicode_header PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_prevmsgid_parse PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_newlines PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_unix_newlines PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mac_newlines PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_header PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_comment PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_bom PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_long_msgidcomments PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_incomplete PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_invalid PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_write PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment XFAIL [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_dos_newlines_typecomment PASSED [ 78%] 421s tests/translate/storage/test_pypo.py::TestPYPOFile::test_wrap_custom PASSED [ 78%] 421s tests/translate/storage/test_qm.py::TestQtUnit::test_isfuzzy PASSED [ 78%] 421s tests/translate/storage/test_qm.py::TestQtUnit::test_create PASSED [ 78%] 421s tests/translate/storage/test_qm.py::TestQtUnit::test_eq PASSED [ 78%] 421s tests/translate/storage/test_qm.py::TestQtUnit::test_target PASSED [ 78%] 421s tests/translate/storage/test_qm.py::TestQtUnit::test_escapes PASSED [ 78%] 421s tests/translate/storage/test_qm.py::TestQtUnit::test_difficult_escapes PASSED [ 78%] 421s tests/translate/storage/test_qm.py::TestQtUnit::test_note_sanity PASSED [ 78%] 421s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_get PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtUnit::test_rich_set PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_create_blank PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_find PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_translate PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_markup PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_extensions PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_mimetypes PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_parse PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_save PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_files PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_nonascii PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_add PASSED [ 79%] 421s tests/translate/storage/test_qm.py::TestQtFile::test_remove PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphUnit::test_isfuzzy PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphUnit::test_create PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphUnit::test_eq PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphUnit::test_target PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphUnit::test_escapes PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphUnit::test_difficult_escapes PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphUnit::test_note_sanity PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_get PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphUnit::test_rich_set PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_create_blank PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_add PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_remove PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_find PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_translate PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_parse PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_files PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_save PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_markup PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_nonascii PASSED [ 79%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_extensions PASSED [ 80%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_mimetypes PASSED [ 80%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_basic PASSED [ 80%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_source PASSED [ 80%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_target PASSED [ 80%] 421s tests/translate/storage/test_qph.py::TestQphFile::test_language PASSED [ 80%] 421s tests/translate/storage/test_rc.py::test_escaping PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_comments PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_parse_only_textinclude PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_parse_dialog PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_parse_stringtable PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_lf PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_crlf PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_parse_newlines_cr PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_parse_no_language PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_multiline PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_str PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_empty PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_utf_8 PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_utf_16 PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_comment PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_stringtables PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_textinclude_appstudio PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_id_whitespace PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_menu_comment PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_decompiled PASSED [ 80%] 421s tests/translate/storage/test_rc.py::TestRcFile::test_quotes PASSED [ 80%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_isfuzzy PASSED [ 80%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_create PASSED [ 80%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_eq PASSED [ 80%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_escapes PASSED [ 80%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_difficult_escapes PASSED [ 80%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_note_sanity PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_target PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_get PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryUnit::test_rich_set PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_create_blank PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_add PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_remove PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_find PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_parse PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_files PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_save PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_extensions PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_mimetypes PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_translate PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_markup PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_nonascii PASSED [ 81%] 421s tests/translate/storage/test_resourcedictionary.py::TestResourceDictionaryFile::test_roundtrip PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnit::test_isfuzzy PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnit::test_create PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnit::test_eq PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnit::test_escapes PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnit::test_difficult_escapes PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnit::test_note_sanity PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnit::test_target PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_get PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnit::test_rich_set PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_isfuzzy PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_create PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_eq PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_escapes PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_difficult_escapes PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_note_sanity PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_target PASSED [ 81%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_get PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_rich_set PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXUnitFromParsedString::test_newunit_comment PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_create_blank PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_add PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_remove PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_find PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_parse PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_files PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_save PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_extensions PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_mimetypes PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_translate PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_markup PASSED [ 82%] 421s tests/translate/storage/test_resx.py::TestRESXfile::test_nonascii PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_isfuzzy PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_create PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_escapes PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_difficult_escapes PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_note_sanity PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_target PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_get PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_rich_set PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_source PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_eq_formatvaluetype PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictUnit::test_innerkey PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_create_blank PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_remove PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_find PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_parse PASSED [ 82%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_files PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_save PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_extensions PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_mimetypes PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_translate PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_markup PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_nonascii PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_serialize PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_default_handlings PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_base_filename PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_targetlanguage_auto_detection_filename_default_language PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_plural_zero_always_set PASSED [ 83%] 421s tests/translate/storage/test_stringsdict.py::TestStringsDictFile::test_add_unit PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_isfuzzy PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_create PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_eq PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_escapes PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_difficult_escapes PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_target PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_get PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_rich_set PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity XFAIL [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_create_blank PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_add PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_remove PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_find PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_parse PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_files PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_save PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_extensions PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_mimetypes PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_translate PASSED [ 83%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_markup PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubRipFile::test_nonascii PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_create_blank PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_add PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_remove PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_find PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_parse PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_files PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_save PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_extensions PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_mimetypes PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_translate PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_markup PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestMicroDVDFile::test_nonascii PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_create_blank PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_add PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_remove PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_find PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_parse PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_files PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_save PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_extensions PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_mimetypes PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_translate PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_markup PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestAdvSubStationAlphaFile::test_nonascii PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_create_blank PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_add PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_remove PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_find PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_parse PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_files PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_save PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_extensions PASSED [ 84%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_mimetypes PASSED [ 85%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_translate PASSED [ 85%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_markup PASSED [ 85%] 421s tests/translate/storage/test_subtitles.py::TestSubStationAlphaFile::test_nonascii PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXUnit::test_isfuzzy PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXUnit::test_create PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXUnit::test_eq PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXUnit::test_target PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXUnit::test_escapes PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXUnit::test_difficult_escapes PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXUnit::test_note_sanity PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_get PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXUnit::test_rich_set PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_create_blank PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_add PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_remove PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_find PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_translate PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_parse PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_files PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_save PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_markup PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_nonascii PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_extensions PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_mimetypes PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_basic PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_source PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_target PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_setid PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_indent PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_descrip PASSED [ 85%] 421s tests/translate/storage/test_tbx.py::TestTBXfile::test_note_from PASSED [ 85%] 421s tests/translate/storage/test_tiki.py::TestTikiUnit::test_locations PASSED [ 85%] 421s tests/translate/storage/test_tiki.py::TestTikiUnit::test_to_unicode PASSED [ 86%] 421s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_simple PASSED [ 86%] 421s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_encode PASSED [ 86%] 421s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_locations PASSED [ 86%] 421s tests/translate/storage/test_tiki.py::TestTikiStore::test_parse_ignore_extras PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnit::test_isfuzzy PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnit::test_create PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnit::test_eq PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnit::test_target PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnit::test_escapes PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnit::test_difficult_escapes PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnit::test_note_sanity PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_get PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnit::test_rich_set PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_isfuzzy PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_create PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_eq PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_target PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_escapes PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_difficult_escapes PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_note_sanity PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_get PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXUnitFromParsedString::test_rich_set PASSED [ 86%] 421s tests/translate/storage/test_tmx.py::TestTMXfile::test_create_blank PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_add PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_remove PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_find PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_parse PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_files PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_save PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_markup PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_nonascii PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_extensions PASSED [ 86%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_mimetypes PASSED [ 87%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_translate PASSED [ 87%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_addtranslation PASSED [ 87%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_withcomment PASSED [ 87%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_withnewlines PASSED [ 87%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_xmlentities PASSED [ 87%] 422s tests/translate/storage/test_tmx.py::TestTMXfile::test_controls_cleaning PASSED [ 87%] 422s tests/translate/storage/test_trados.py::test_unescape PASSED [ 87%] 422s tests/translate/storage/test_trados.py::test_escape PASSED [ 87%] 422s tests/translate/storage/test_ts.py::TestTS::test_construct PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSUnit::test_isfuzzy PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSUnit::test_create PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSUnit::test_eq PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSUnit::test_target PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSUnit::test_escapes PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSUnit::test_difficult_escapes PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSUnit::test_note_sanity PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_get PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSUnit::test_rich_set PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_create_blank PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_add PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_remove PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_find PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_translate PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_parse PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_files PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_save PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_markup PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_nonascii PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_extensions PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_mimetypes PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_basic PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_source PASSED [ 87%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_target PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_plurals PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_nplural PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_language PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_edit PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_obsolete PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_locations PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_merge_with_fuzzies PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_getid PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_backnforth PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_context PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_roundtrip_context PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_edit_missing_translation PASSED [ 88%] 422s tests/translate/storage/test_ts2.py::TestTSfile::test_missing_source PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtUnit::test_isfuzzy PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtUnit::test_create PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtUnit::test_eq PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtUnit::test_escapes PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtUnit::test_difficult_escapes PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtUnit::test_note_sanity PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtUnit::test_target PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_get PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtUnit::test_rich_set PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_create_blank PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_add PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_remove PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_find PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_parse PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_files PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_save PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_extensions PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_mimetypes PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_translate PASSED [ 88%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_markup PASSED [ 89%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_nonascii PASSED [ 89%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_simpleblock PASSED [ 89%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_multipleblocks PASSED [ 89%] 422s tests/translate/storage/test_txt.py::TestTxtFile::test_no_segmentation PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxUnit::test_isfuzzy PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxUnit::test_create PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxUnit::test_eq PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxUnit::test_target PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxUnit::test_escapes PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxUnit::test_difficult_escapes PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxUnit::test_note_sanity PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_get PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxUnit::test_rich_set PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_create_blank PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_add PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_remove PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_find PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_translate PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_parse PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_files PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_save PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_markup PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_nonascii PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_extensions PASSED [ 89%] 422s tests/translate/storage/test_utx.py::TestUtxFile::test_mimetypes PASSED [ 89%] 422s tests/translate/storage/test_wordfast.py::TestWFTime::test_timestring PASSED [ 89%] 422s tests/translate/storage/test_wordfast.py::TestWFTime::test_time PASSED [ 89%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_isfuzzy PASSED [ 89%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_create PASSED [ 89%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_eq PASSED [ 89%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_target PASSED [ 89%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_escapes PASSED [ 89%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_note_sanity PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_get PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_rich_set PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_difficult_escapes PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_wordfast_escaping PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_newlines PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_language_setting PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFUnit::test_istranslated PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_create_blank PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_add PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_remove PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_find PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_translate PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_parse PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_files PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_save PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_markup PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_nonascii PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_extensions PASSED [ 90%] 422s tests/translate/storage/test_wordfast.py::TestWFFile::test_mimetypes PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_isfuzzy PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_create PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_eq PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_target PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_escapes PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_difficult_escapes PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_note_sanity PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_get PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_rich_set PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_markreview PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_errors PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_accepted_control_chars PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars PASSED [ 90%] 422s tests/translate/storage/test_xliff.py::TestXLIFFUnit::test_unaccepted_control_chars_escapes_roundtrip PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_create_blank PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_remove PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_find PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_translate PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parse PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_files PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_save PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_markup PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_nonascii PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_extensions PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_mimetypes PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_basic PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_namespace PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_source PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_rich_target PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_source PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_target PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_sourcelanguage PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_targetlanguage_multi PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_notes PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_alttrans PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_fuzzy PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_xml_space PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_parsing PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_entities PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_multiple_filenodes PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_indent PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_add_target PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_closing_tags PASSED [ 91%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_context_groups PASSED [ 92%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_getlocations PASSED [ 92%] 422s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_addlocation PASSED [ 92%] 423s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_huge PASSED [ 92%] 423s tests/translate/storage/test_xliff.py::TestXLIFFfile::test_preserve_add PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_isfuzzy PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_create PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_eq PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_escapes PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_difficult_escapes PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_note_sanity PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_target PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_get PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_rich_set PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceUnit::test_getlocations PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_create_blank PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_find PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_files PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_save PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_extensions PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_mimetypes PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_translate PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_markup PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nonascii PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_serialize PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_edit_unicode PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_parse_unicode_list PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_ordering PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_initial_comments PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_string_key PASSED [ 92%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_nested PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_multiline PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_boolean PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_integer PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_no_quote_strings PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_double_quote_strings PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_single_quote_strings PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_double_quote_strings PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_avoid_escaping_single_quote_strings PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_escaped_double_quotes PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_newlines PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_list PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_abbreviated_dictionary PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_key_nesting PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_add_to_mepty PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_empty_key PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dict_in_list PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_dump_args PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_anchors PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_tagged_scalar PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_numeric PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_remove PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_special PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestYAMLResourceStore::test_quotes_roundtrip PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_create_blank PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_remove PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_find PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_parse PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_files PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_save PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_extensions PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_mimetypes PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_translate PASSED [ 93%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_markup PASSED [ 94%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_nonascii PASSED [ 94%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_list PASSED [ 94%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby PASSED [ 94%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_invalid_value PASSED [ 94%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_ruby_plural PASSED [ 94%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_empty PASSED [ 94%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_anchors PASSED [ 94%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_type_change PASSED [ 94%] 423s tests/translate/storage/test_yaml.py::TestRubyYAMLResourceStore::test_add PASSED [ 94%] 423s tests/translate/storage/test_zip.py::TestZIPFile::test_created PASSED [ 94%] 423s tests/translate/storage/test_zip.py::TestZIPFile::test_basic PASSED [ 94%] 423s tests/translate/storage/test_zip.py::TestZIPFile::test_structure PASSED [ 94%] 423s tests/translate/storage/test_zip.py::TestZIPFile::test_getunits PASSED [ 94%] 423s tests/translate/storage/xml_extract/test_misc.py::test_reduce_tree PASSED [ 94%] 423s tests/translate/storage/xml_extract/test_misc.py::test_compose_mappings PASSED [ 94%] 423s tests/translate/storage/xml_extract/test_misc.py::test_parse_tag PASSED [ 94%] 423s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath_component PASSED [ 94%] 423s tests/translate/storage/xml_extract/test_unit_tree.py::test__split_xpath PASSED [ 94%] 423s tests/translate/storage/xml_extract/test_unit_tree.py::test__add_unit_to_tree PASSED [ 94%] 423s tests/translate/storage/xml_extract/test_xpath_breadcrumb.py::test_breadcrumb PASSED [ 94%] 423s tests/translate/tools/test_help.py::test_help[build_tmdb] PASSED [ 94%] 423s tests/translate/tools/test_help.py::test_help[phppo2pypo] PASSED [ 94%] 423s tests/translate/tools/test_help.py::test_help[poclean] PASSED [ 94%] 423s tests/translate/tools/test_help.py::test_help[pocompile] PASSED [ 94%] 423s tests/translate/tools/test_help.py::test_help[poconflicts] PASSED [ 94%] 423s tests/translate/tools/test_help.py::test_help[pocount] PASSED [ 94%] 423s tests/translate/tools/test_help.py::test_help[podebug] PASSED [ 94%] 424s tests/translate/tools/test_help.py::test_help[pogrep] PASSED [ 94%] 424s tests/translate/tools/test_help.py::test_help[pomerge] PASSED [ 94%] 424s tests/translate/tools/test_help.py::test_help[porestructure] PASSED [ 94%] 424s tests/translate/tools/test_help.py::test_help[posegment] PASSED [ 94%] 424s tests/translate/tools/test_help.py::test_help[poswap] PASSED [ 94%] 424s tests/translate/tools/test_help.py::test_help[poterminology] PASSED [ 95%] 424s tests/translate/tools/test_help.py::test_help[pretranslate] PASSED [ 95%] 424s tests/translate/tools/test_help.py::test_help[pydiff] PASSED [ 95%] 424s tests/translate/tools/test_help.py::test_help[pypo2phppo] PASSED [ 95%] 424s tests/translate/tools/test_junitmsgfmt.py::test_output[failure] PASSED [ 95%] 424s tests/translate/tools/test_junitmsgfmt.py::test_output[untranslated] PASSED [ 95%] 424s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_single_po PASSED [ 95%] 424s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPo::test_plural_po PASSED [ 95%] 424s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_single_po PASSED [ 95%] 424s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_plural_po PASSED [ 95%] 424s tests/translate/tools/test_phppo2pypo.py::TestPhpPo2PyPoCommand::test_help PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_zero PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_one PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_simple_count_two PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_punctuation_divides_words PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_xml_tags PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_newlines PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_variables_are_words PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_plurals PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde XFAIL [ 95%] 424s tests/translate/tools/test_pocount.py::TestCount::test_msgid_blank PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestPOCount::test_translated PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzy PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslated PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestPOCount::test_total PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestPOCount::test_translatedsourcewords PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestPOCount::test_fuzzysourcewords PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestPOCount::test_untranslatedsourcewords PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::TestPOCount::test_totalsourcewords PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-csv] PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-full] PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-strings] PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=True-short-words] PASSED [ 95%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-csv] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-full] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-strings] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=True-incomplete=False-short-words] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-csv] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-full] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-strings] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=True-short-words] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-csv] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-full] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-strings] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_output[no-color=False-incomplete=False-short-words] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_cases[po-file] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_cases[po-file-fuzzy] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_cases[po-file-csv] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_cases[xliff-states-yes] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_cases[xliff-states-no] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_error_cases[mutually-exclusive] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_error_cases[missing-file] PASSED [ 96%] 424s tests/translate/tools/test_pocount.py::test_error_cases[no-args] PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_ignore_gtk PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_keep_target PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_blank PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_en PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_xxx PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_bracket PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_at_placeholders PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_single_brace_placeholders PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_double_brace_placeholders PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_html PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_unicode_preserves_multiple_styles_of_placeholder PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped PASSED [ 96%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_at_placeholders PASSED [ 97%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_single_brace_placeholders PASSED [ 97%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_double_brace_placeholders PASSED [ 97%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_preserves_html PASSED [ 97%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_flipped_multiple_styles_of_placeholder PASSED [ 97%] 424s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified PASSED [ 97%] 425s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_at_placeholders PASSED [ 97%] 425s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_single_brace_placeholders PASSED [ 97%] 425s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_double_brace_placeholders PASSED [ 97%] 425s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_preserves_html PASSED [ 97%] 425s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_classified_multiple_styles_of_placeholder PASSED [ 97%] 425s tests/translate/tools/test_podebug.py::TestPODebug::test_rewrite_chef PASSED [ 97%] 425s tests/translate/tools/test_podebug.py::TestPODebug::test_po_variables PASSED [ 97%] 425s tests/translate/tools/test_podebug.py::TestPODebug::test_xliff_rewrite PASSED [ 97%] 425s tests/translate/tools/test_podebug.py::TestPODebug::test_hash PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgid PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_msgstr PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_comments PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestPOGrep::test_simplegrep_locations_with_comment_enabled PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_searchstring PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_message_regex_searchstring PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestPOGrep::test_keep_translations PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestPOGrep::test_unicode_normalise PASSED [ 97%] 425s tests/translate/tools/test_pogrep.py::TestXLiffGrep::test_simplegrep PASSED [ 97%] 425s tests/translate/tools/test_pomerge.py::test_str2bool PASSED [ 97%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_mergesore_bad_data PASSED [ 97%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge PASSED [ 97%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_simplemerge_no_locations PASSED [ 97%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_replacemerge PASSED [ 97%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_blanks PASSED [ 97%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_fuzzies PASSED [ 97%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_locations PASSED [ 97%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_with_locations PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_unit_missing_in_template_no_locations PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_reflowed_source_comments PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_comments_with_blank_lines PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dont_delete_unassociated_comments PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_trailing_newlines PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_minor_start_and_end_of_sentence_changes PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_format_last_entry_in_a_file PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs XFAIL [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_preserve_comments_layout PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merge_dos2unix PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_xliff PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_po_into_xliff PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_xliff_into_po PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_dont_merge_kde_comments_found_in_translation PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_untranslated_with_kde_disambiguation PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_header_entries PASSED [ 98%] 425s tests/translate/tools/test_pomerge.py::TestPOMerge::test_merging_different_locations PASSED [ 98%] 425s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_simple PASSED [ 98%] 425s tests/translate/tools/test_posegment.py::TestPOSegment::test_en_ja_punctuation PASSED [ 98%] 425s tests/translate/tools/test_poterminology.py::TestPOTerminology::test_term_extraction PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_pretranslatepo_blank PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_simple PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_messages_marked_fuzzy PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals_with_fuzzy_matching PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change XFAIL [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_change PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_location_and_whitespace_change PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes XFAIL [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently XFAIL [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_dont_duplicate PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_automatic_comments_new_overides_old PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments_with_blank_comment_lines PASSED [ 98%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_empty_commentlines PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgidcomments PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_plurals PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_resurect_obsolete_messages PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_comments PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_typecomments PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslate::test_xliff_states PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_pretranslatepo_blank PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_simple PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_messages_marked_fuzzy PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals_with_fuzzy_matching PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change XFAIL [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_change PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_location_and_whitespace_change PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes XFAIL [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently XFAIL [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_dont_duplicate PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_automatic_comments_new_overides_old PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments_with_blank_comment_lines PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_empty_commentlines PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgidcomments PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_plurals PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_resurect_obsolete_messages PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_comments PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_typecomments PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_xliff_states PASSED [ 99%] 425s tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_help PASSED [ 99%] 425s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_single_po PASSED [ 99%] 425s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPo::test_plural_po PASSED [ 99%] 425s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_single_po PASSED [ 99%] 425s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_plural_po PASSED [ 99%] 425s tests/translate/tools/test_pypo2phppo.py::TestPyPo2PhpPoCommand::test_help PASSED [ 99%] 425s tests/xliff_conformance/test_xliff_conformance.py::test_open_office_to_xliff PASSED [ 99%] 426s tests/xliff_conformance/test_xliff_conformance.py::test_po_to_xliff PASSED [100%] 426s 426s ================================== XFAILURES =================================== 426s _______________ TestDTD2PO.test_accelerator_keys_not_in_sentence _______________ 426s 426s self = <tests.translate.convert.test_dtd2po.TestDTD2PO object at 0x7e8d304654f0> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_accelerator_keys_not_in_sentence(self): 426s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 426s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 426s <!ENTITY useAutoScroll.accesskey "a">""" 426s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 426s <!ENTITY useAutoScroll.accesskey "a">""" 426s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 426s print(pofile) 426s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 426s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 426s 426s tests/translate/convert/test_dtd2po.py:348: AttributeError 426s ----------------------------- Captured stdout call ----------------------------- 426s <translate.storage.pypo.pofile object at 0x7e8d2e441310> 426s ___________ TestDTD2POCommand.test_accelerator_keys_not_in_sentence ____________ 426s 426s self = <tests.translate.convert.test_dtd2po.TestDTD2POCommand object at 0x7e8d3045be30> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_accelerator_keys_not_in_sentence(self): 426s """Tests to ensure that we can manage accelerator keys that are not part of the transated sentence eg in Chinese.""" 426s dtdtemplate = """<!ENTITY useAutoScroll.label "Use autoscrolling"> 426s <!ENTITY useAutoScroll.accesskey "a">""" 426s dtdlanguage = """<!ENTITY useAutoScroll.label "使用自動捲動(Autoscrolling)"> 426s <!ENTITY useAutoScroll.accesskey "a">""" 426s pofile = self.dtd2po(dtdlanguage, dtdtemplate) 426s print(pofile) 426s > expected_target = "使用自動捲動(&Autoscrolling)".decode("utf-8") 426s E AttributeError: 'str' object has no attribute 'decode'. Did you mean: 'encode'? 426s 426s tests/translate/convert/test_dtd2po.py:348: AttributeError 426s ----------------------------- Captured stdout call ----------------------------- 426s <translate.storage.pypo.pofile object at 0x7e8d2e443c50> 426s ________________ TestPO2Php.test_merging_propertyless_template _________________ 426s 426s self = <tests.translate.convert.test_po2php.TestPO2Php object at 0x7e8d2fc1ac60> 426s 426s @mark.xfail(reason="Need to review if we want this behaviour") 426s def test_merging_propertyless_template(self): 426s """Check that when merging with a template with no property values that we copy the template.""" 426s posource = "" 426s proptemplate = "# A comment\n" 426s propexpected = proptemplate 426s > propfile = self.merge2prop(proptemplate, posource) 426s E AttributeError: 'TestPO2Php' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 426s 426s tests/translate/convert/test_po2php.py:386: AttributeError 426s _____________ TestPO2PhpCommand.test_merging_propertyless_template _____________ 426s 426s self = <tests.translate.convert.test_po2php.TestPO2PhpCommand object at 0x7e8d2fc19490> 426s 426s @mark.xfail(reason="Need to review if we want this behaviour") 426s def test_merging_propertyless_template(self): 426s """Check that when merging with a template with no property values that we copy the template.""" 426s posource = "" 426s proptemplate = "# A comment\n" 426s propexpected = proptemplate 426s > propfile = self.merge2prop(proptemplate, posource) 426s E AttributeError: 'TestPO2PhpCommand' object has no attribute 'merge2prop'. Did you mean: 'merge2php'? 426s 426s tests/translate/convert/test_po2php.py:386: AttributeError 426s _____________________ TestPOT2PO.test_merging_msgid_change _____________________ 426s 426s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7e8d2f752150> 426s 426s @mark.xfail(reason="Not implemented - review if this is even correct") 426s def test_merging_msgid_change(self): 426s """Tests that if the msgid changes but the location stays the same that we merge.""" 426s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 426s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 426s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 426s newpo = self.convertpot(potsource, posource) 426s print(newpo) 426s > assert str(self.singleunit(newpo)) == poexpected 426s 426s tests/translate/convert/test_pot2po.py:121: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s pofile = <translate.storage.pypo.pofile object at 0x7e8d2d975e80> 426s 426s @staticmethod 426s def singleunit(pofile): 426s """Checks that the pofile contains a single non-header unit, and returns it.""" 426s > assert len(pofile.units) == 2 426s E assert 3 == 2 426s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7e8d2d976930>, <translate.storage.pypo.pounit object at 0x7e8d2d976870>, <translate.storage.pypo.pounit object at 0x7e8d2d976960>]) 426s E + where [<translate.storage.pypo.pounit object at 0x7e8d2d976930>, <translate.storage.pypo.pounit object at 0x7e8d2d976870>, <translate.storage.pypo.pounit object at 0x7e8d2d976960>] = <translate.storage.pypo.pofile object at 0x7e8d2d975e80>.units 426s 426s tests/translate/convert/test_pot2po.py:25: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s <translate.storage.pypo.pofile object at 0x7e8d2d975e80> 426s _________________ TestPOT2PO.test_merging_accelerator_changes __________________ 426s 426s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7e8d2f7523f0> 426s 426s @mark.xfail(reason="Not Implemented - needs review") 426s def test_merging_accelerator_changes(self): 426s """Test that a change in the accelerator localtion still allows merging.""" 426s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 426s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 426s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 426s newpo = self.convertpot(potsource, posource) 426s print(newpo) 426s > assert str(self.singleunit(newpo)) == poexpected 426s 426s tests/translate/convert/test_pot2po.py:190: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s pofile = <translate.storage.pypo.pofile object at 0x7e8d2d974650> 426s 426s @staticmethod 426s def singleunit(pofile): 426s """Checks that the pofile contains a single non-header unit, and returns it.""" 426s > assert len(pofile.units) == 2 426s E assert 3 == 2 426s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7e8d2d974890>, <translate.storage.pypo.pounit object at 0x7e8d2d974500>, <translate.storage.pypo.pounit object at 0x7e8d2d974530>]) 426s E + where [<translate.storage.pypo.pounit object at 0x7e8d2d974890>, <translate.storage.pypo.pounit object at 0x7e8d2d974500>, <translate.storage.pypo.pounit object at 0x7e8d2d974530>] = <translate.storage.pypo.pofile object at 0x7e8d2d974650>.units 426s 426s tests/translate/convert/test_pot2po.py:25: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s <translate.storage.pypo.pofile object at 0x7e8d2d974650> 426s ____________________ TestPOT2PO.test_lines_cut_differently _____________________ 426s 426s self = <tests.translate.convert.test_pot2po.TestPOT2PO object at 0x7e8d2f752570> 426s 426s @mark.xfail(reason="Not Implemented - review if this is even correct") 426s def test_lines_cut_differently(self): 426s """Checks that the correct formatting is preserved when pot an po lines differ.""" 426s potsource = ( 426s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 426s ) 426s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 426s newpo = self.convertpot(potsource, posource) 426s newpounit = self.singleunit(newpo) 426s > assert str(newpounit) == posource 426s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 426s E 426s E #: simple.label 426s E - msgid "Line" 426s E + msgid "Line split " 426s E ? +++++++ 426s E - " split differently" 426s E ? ------- 426s E + "differently" 426s E msgstr "Lyne verskillend gesny" 426s 426s tests/translate/convert/test_pot2po.py:201: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s #: simple.label 426s msgid "Line split " 426s "differently" 426s msgstr "Lyne verskillend gesny" 426s 426s _________________ TestPOT2POCommand.test_merging_msgid_change __________________ 426s 426s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7e8d2f3a4980> 426s 426s @mark.xfail(reason="Not implemented - review if this is even correct") 426s def test_merging_msgid_change(self): 426s """Tests that if the msgid changes but the location stays the same that we merge.""" 426s potsource = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 426s posource = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 426s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 426s newpo = self.convertpot(potsource, posource) 426s print(newpo) 426s > assert str(self.singleunit(newpo)) == poexpected 426s 426s tests/translate/convert/test_pot2po.py:121: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s pofile = <translate.storage.pypo.pofile object at 0x7e8d331299a0> 426s 426s @staticmethod 426s def singleunit(pofile): 426s """Checks that the pofile contains a single non-header unit, and returns it.""" 426s > assert len(pofile.units) == 2 426s E assert 3 == 2 426s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7e8d2f751af0>, <translate.storage.pypo.pounit object at 0x7e8d2f899f10>, <translate.storage.pypo.pounit object at 0x7e8d2fc19d30>]) 426s E + where [<translate.storage.pypo.pounit object at 0x7e8d2f751af0>, <translate.storage.pypo.pounit object at 0x7e8d2f899f10>, <translate.storage.pypo.pounit object at 0x7e8d2fc19d30>] = <translate.storage.pypo.pofile object at 0x7e8d331299a0>.units 426s 426s tests/translate/convert/test_pot2po.py:25: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s <translate.storage.pypo.pofile object at 0x7e8d331299a0> 426s ______________ TestPOT2POCommand.test_merging_accelerator_changes ______________ 426s 426s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7e8d2f3a5040> 426s 426s @mark.xfail(reason="Not Implemented - needs review") 426s def test_merging_accelerator_changes(self): 426s """Test that a change in the accelerator localtion still allows merging.""" 426s potsource = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 426s posource = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 426s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 426s newpo = self.convertpot(potsource, posource) 426s print(newpo) 426s > assert str(self.singleunit(newpo)) == poexpected 426s 426s tests/translate/convert/test_pot2po.py:190: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s pofile = <translate.storage.pypo.pofile object at 0x7e8d2d974e00> 426s 426s @staticmethod 426s def singleunit(pofile): 426s """Checks that the pofile contains a single non-header unit, and returns it.""" 426s > assert len(pofile.units) == 2 426s E assert 3 == 2 426s E + where 3 = len([<translate.storage.pypo.pounit object at 0x7e8d2d976300>, <translate.storage.pypo.pounit object at 0x7e8d2d977e60>, <translate.storage.pypo.pounit object at 0x7e8d2d9742f0>]) 426s E + where [<translate.storage.pypo.pounit object at 0x7e8d2d976300>, <translate.storage.pypo.pounit object at 0x7e8d2d977e60>, <translate.storage.pypo.pounit object at 0x7e8d2d9742f0>] = <translate.storage.pypo.pofile object at 0x7e8d2d974e00>.units 426s 426s tests/translate/convert/test_pot2po.py:25: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s <translate.storage.pypo.pofile object at 0x7e8d2d974e00> 426s _________________ TestPOT2POCommand.test_lines_cut_differently _________________ 426s 426s self = <tests.translate.convert.test_pot2po.TestPOT2POCommand object at 0x7e8d2f3a51f0> 426s 426s @mark.xfail(reason="Not Implemented - review if this is even correct") 426s def test_lines_cut_differently(self): 426s """Checks that the correct formatting is preserved when pot an po lines differ.""" 426s potsource = ( 426s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 426s ) 426s posource = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 426s newpo = self.convertpot(potsource, posource) 426s newpounit = self.singleunit(newpo) 426s > assert str(newpounit) == posource 426s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 426s E 426s E #: simple.label 426s E - msgid "Line" 426s E + msgid "Line split " 426s E ? +++++++ 426s E - " split differently" 426s E ? ------- 426s E + "differently" 426s E msgstr "Lyne verskillend gesny" 426s 426s tests/translate/convert/test_pot2po.py:201: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s #: simple.label 426s msgid "Line split " 426s "differently" 426s msgstr "Lyne verskillend gesny" 426s 426s ________________________ TestYAML2PO.test_no_duplicates ________________________ 426s 426s self = <translate.storage.yaml.YAMLFile object at 0x7e8d2dbe2a50> 426s input = '\nfoo: bar\nfoo: baz\n' 426s 426s def parse(self, input): 426s """Parse the given file or file source string.""" 426s if hasattr(input, "name"): 426s self.filename = input.name 426s elif not getattr(self, "filename", ""): 426s self.filename = "" 426s if hasattr(input, "read"): 426s src = input.read() 426s input.close() 426s input = src 426s if isinstance(input, bytes): 426s input = input.decode("utf-8") 426s try: 426s > self._original = self.yaml.load(input) 426s 426s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 426s return constructor.get_single_data() 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 426s return self.construct_document(node) 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 426s for _dummy in generator: 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 426s self.construct_mapping(node, data, deep=True) 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 426s if self.check_mapping_key(node, key_node, maptyp, key, value): 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x7e8d2dbe2db0> 426s 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'))]) 426s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 426s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 426s 426s def check_mapping_key(self, node, key_node, mapping, key, value): 426s # type: (Any, Any, Any, Any, Any) -> bool 426s """return True if key is unique""" 426s if key in mapping: 426s if not self.allow_duplicate_keys: 426s mk = mapping.get(key) 426s args = [ 426s 'while constructing a mapping', 426s node.start_mark, 426s 'found duplicate key "{}" with value "{}" ' 426s '(original value: "{}")'.format(key, value, mk), 426s key_node.start_mark, 426s """ 426s To suppress this check see: 426s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 426s """, 426s """\ 426s Duplicate keys will become an error in future releases, and are errors 426s by default when using the new API. 426s """, 426s ] 426s if self.allow_duplicate_keys is None: 426s warnings.warn(DuplicateKeyFutureWarning(*args)) 426s else: 426s > raise DuplicateKeyError(*args) 426s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 426s E in "<unicode string>", line 2, column 1: 426s E foo: bar 426s E ^ (line: 2) 426s E found duplicate key "foo" with value "baz" (original value: "bar") 426s E in "<unicode string>", line 3, column 1: 426s E foo: baz 426s E ^ (line: 3) 426s E 426s E To suppress this check see: 426s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 426s 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 426s 426s During handling of the above exception, another exception occurred: 426s 426s self = <tests.translate.convert.test_yaml2po.TestYAML2PO object at 0x7e8d2f399550> 426s 426s @pytest.mark.xfail(reason="This is invalid YAML document") 426s def test_no_duplicates(self): 426s """Check converting drops duplicates.""" 426s input_string = """ 426s foo: bar 426s foo: baz 426s """ 426s > target_store = self._convert_to_store(input_string) 426s 426s tests/translate/convert/test_yaml2po.py:112: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 426s return self._convert(*args, **kwargs)[0] 426s tests/translate/convert/test_yaml2po.py:28: in _convert 426s converter = self.ConverterClass( 426s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 426s self.source_store = self.SourceStoreClass(input_file) 426s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 426s self.parse(inputfile) 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s self = <translate.storage.yaml.YAMLFile object at 0x7e8d2dbe2a50> 426s input = '\nfoo: bar\nfoo: baz\n' 426s 426s def parse(self, input): 426s """Parse the given file or file source string.""" 426s if hasattr(input, "name"): 426s self.filename = input.name 426s elif not getattr(self, "filename", ""): 426s self.filename = "" 426s if hasattr(input, "read"): 426s src = input.read() 426s input.close() 426s input = src 426s if isinstance(input, bytes): 426s input = input.decode("utf-8") 426s try: 426s self._original = self.yaml.load(input) 426s except YAMLError as e: 426s message = getattr(e, "problem", getattr(e, "message", str(e))) 426s if hasattr(e, "problem_mark"): 426s message += f" {e.problem_mark}" 426s > raise base.ParseError(message) 426s 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)' 426s 426s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 426s ____________________ TestYAML2POCommand.test_no_duplicates _____________________ 426s 426s self = <translate.storage.yaml.YAMLFile object at 0x7e8d2dbf89e0> 426s input = '\nfoo: bar\nfoo: baz\n' 426s 426s def parse(self, input): 426s """Parse the given file or file source string.""" 426s if hasattr(input, "name"): 426s self.filename = input.name 426s elif not getattr(self, "filename", ""): 426s self.filename = "" 426s if hasattr(input, "read"): 426s src = input.read() 426s input.close() 426s input = src 426s if isinstance(input, bytes): 426s input = input.decode("utf-8") 426s try: 426s > self._original = self.yaml.load(input) 426s 426s /usr/lib/python3/dist-packages/translate/storage/yaml.py:163: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s /usr/lib/python3/dist-packages/ruamel/yaml/main.py:439: in load 426s return constructor.get_single_data() 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:121: in get_single_data 426s return self.construct_document(node) 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:131: in construct_document 426s for _dummy in generator: 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1569: in construct_yaml_map 426s self.construct_mapping(node, data, deep=True) 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:1453: in construct_mapping 426s if self.check_mapping_key(node, key_node, maptyp, key, value): 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s self = <ruamel.yaml.constructor.RoundTripConstructor object at 0x7e8d2dbf8230> 426s 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'))]) 426s key_node = ScalarNode(tag='tag:yaml.org,2002:str', value='foo') 426s mapping = ordereddict({'foo': 'bar'}), key = 'foo', value = 'baz' 426s 426s def check_mapping_key(self, node, key_node, mapping, key, value): 426s # type: (Any, Any, Any, Any, Any) -> bool 426s """return True if key is unique""" 426s if key in mapping: 426s if not self.allow_duplicate_keys: 426s mk = mapping.get(key) 426s args = [ 426s 'while constructing a mapping', 426s node.start_mark, 426s 'found duplicate key "{}" with value "{}" ' 426s '(original value: "{}")'.format(key, value, mk), 426s key_node.start_mark, 426s """ 426s To suppress this check see: 426s http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 426s """, 426s """\ 426s Duplicate keys will become an error in future releases, and are errors 426s by default when using the new API. 426s """, 426s ] 426s if self.allow_duplicate_keys is None: 426s warnings.warn(DuplicateKeyFutureWarning(*args)) 426s else: 426s > raise DuplicateKeyError(*args) 426s E ruamel.yaml.constructor.DuplicateKeyError: while constructing a mapping 426s E in "<unicode string>", line 2, column 1: 426s E foo: bar 426s E ^ (line: 2) 426s E found duplicate key "foo" with value "baz" (original value: "bar") 426s E in "<unicode string>", line 3, column 1: 426s E foo: baz 426s E ^ (line: 3) 426s E 426s E To suppress this check see: 426s E http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys 426s 426s /usr/lib/python3/dist-packages/ruamel/yaml/constructor.py:294: DuplicateKeyError 426s 426s During handling of the above exception, another exception occurred: 426s 426s self = <tests.translate.convert.test_yaml2po.TestYAML2POCommand object at 0x7e8d2f398ef0> 426s 426s @pytest.mark.xfail(reason="This is invalid YAML document") 426s def test_no_duplicates(self): 426s """Check converting drops duplicates.""" 426s input_string = """ 426s foo: bar 426s foo: baz 426s """ 426s > target_store = self._convert_to_store(input_string) 426s 426s tests/translate/convert/test_yaml2po.py:112: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s tests/translate/convert/test_yaml2po.py:36: in _convert_to_store 426s return self._convert(*args, **kwargs)[0] 426s tests/translate/convert/test_yaml2po.py:28: in _convert 426s converter = self.ConverterClass( 426s /usr/lib/python3/dist-packages/translate/convert/yaml2po.py:51: in __init__ 426s self.source_store = self.SourceStoreClass(input_file) 426s /usr/lib/python3/dist-packages/translate/storage/yaml.py:93: in __init__ 426s self.parse(inputfile) 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s self = <translate.storage.yaml.YAMLFile object at 0x7e8d2dbf89e0> 426s input = '\nfoo: bar\nfoo: baz\n' 426s 426s def parse(self, input): 426s """Parse the given file or file source string.""" 426s if hasattr(input, "name"): 426s self.filename = input.name 426s elif not getattr(self, "filename", ""): 426s self.filename = "" 426s if hasattr(input, "read"): 426s src = input.read() 426s input.close() 426s input = src 426s if isinstance(input, bytes): 426s input = input.decode("utf-8") 426s try: 426s self._original = self.yaml.load(input) 426s except YAMLError as e: 426s message = getattr(e, "problem", getattr(e, "message", str(e))) 426s if hasattr(e, "problem_mark"): 426s message += f" {e.problem_mark}" 426s > raise base.ParseError(message) 426s 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)' 426s 426s /usr/lib/python3/dist-packages/translate/storage/yaml.py:168: ParseError 426s __________________________ test_acceleratedvariables ___________________________ 426s 426s @mark.xfail(reason="Accelerated variables needs a better implementation") 426s def test_acceleratedvariables(): 426s """Test for accelerated variables.""" 426s # FIXME: disabled since acceleratedvariables has been removed, but these checks are still needed 426s mozillachecker = checks.MozillaChecker() 426s > assert fails(mozillachecker.acceleratedvariables, "%S &Options", "&%S Ikhetho") 426s E AttributeError: 'MozillaChecker' object has no attribute 'acceleratedvariables' 426s 426s tests/translate/filters/test_checks.py:206: AttributeError 426s ___________________________ test_musttranslatewords ____________________________ 426s 426s @mark.xfail(reason="FIXME: All fails() tests are not working") 426s def test_musttranslatewords(): 426s """Tests stopwords.""" 426s stdchecker = checks.StandardChecker(checks.CheckerConfig(musttranslatewords=[])) 426s assert passes( 426s stdchecker.musttranslatewords, 426s "This uses Mozilla of course", 426s "hierdie gebruik le mozille natuurlik", 426s ) 426s stdchecker = checks.StandardChecker( 426s checks.CheckerConfig(musttranslatewords=["Mozilla"]) 426s ) 426s assert passes( 426s stdchecker.musttranslatewords, 426s "This uses Mozilla of course", 426s "hierdie gebruik le mozille natuurlik", 426s ) 426s > assert fails( 426s stdchecker.musttranslatewords, 426s "This uses Mozilla of course", 426s "hierdie gebruik Mozilla natuurlik", 426s ) 426s E AssertionError: assert False 426s E + where False = fails(<bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x7e8d2dc69100>>, 'This uses Mozilla of course', 'hierdie gebruik Mozilla natuurlik') 426s E + where <bound method StandardChecker.musttranslatewords of <translate.filters.checks.StandardChecker object at 0x7e8d2dc69100>> = <translate.filters.checks.StandardChecker object at 0x7e8d2dc69100>.musttranslatewords 426s 426s tests/translate/filters/test_checks.py:612: AssertionError 426s __________ test_persian_single_and_double_quote_fail_at_the_same_time __________ 426s 426s @mark.xfail(reason="Bug #3408") 426s def test_persian_single_and_double_quote_fail_at_the_same_time(): 426s """Test Persian single and double quote failures in string with single quotes.""" 426s checker = checks.StandardChecker(checks.CheckerConfig(targetlanguage="fa")) 426s 426s # With single quote check. 426s assert fails(checker.singlequoting, "Path: '%S'", "مسیر: '%S'‎") 426s > assert fails(checker.singlequoting, "Path: '%S'", 'مسیر: "%S"‎') 426s E assert False 426s E + where False = fails(<bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x7e8d2dbfb6b0>>, "Path: '%S'", 'مسیر: "%S"\u200e') 426s E + where <bound method StandardChecker.singlequoting of <translate.filters.checks.StandardChecker object at 0x7e8d2dbfb6b0>> = <translate.filters.checks.StandardChecker object at 0x7e8d2dbfb6b0>.singlequoting 426s 426s tests/translate/filters/test_checks.py:1271: AssertionError 426s ____________________ test_bengali_mozilla_inverted_xmltags _____________________ 426s 426s @mark.xfail(reason="Bug #3506") 426s def test_bengali_mozilla_inverted_xmltags(): 426s """Test Bengali Mozilla XML tags.""" 426s bn_mozilla_checker = checks.MozillaChecker( 426s checkerconfig=checks.CheckerConfig(targetlanguage="bn") 426s ) 426s 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.""" 426s str_bn = """এর প্রচলন ঘটাতে আমরা <a href="%(whatwg_url)s" rel="external">WHAT-WG</a> প্রতিষ্ঠায় <a href="%(cofound_url)s" rel="external">সহযোগী</a> ছিলাম।ন।""" 426s > assert passes(bn_mozilla_checker.xmltags, str_en, str_bn) 426s E assert False 426s E + where False = passes(<bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x7e8d2dc27620>>, '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> ছিলাম।ন।') 426s E + where <bound method StandardChecker.xmltags of <translate.filters.checks.MozillaChecker object at 0x7e8d2dc27620>> = <translate.filters.checks.MozillaChecker object at 0x7e8d2dc27620>.xmltags 426s 426s tests/translate/filters/test_checks.py:2065: AssertionError 426s _______________________________ test_word_khmer ________________________________ 426s 426s @mark.xfail( 426s reason="ZWS is not considered a space in Python 2.6+. Khmer " 426s "should extend words() to include \\u200b in addition to " 426s "other word breakers." 426s ) 426s def test_word_khmer(): 426s language = common.Common 426s # Let's test Khmer with zero width space (\u200b) 426s words = language.words("ផ្ដល់\u200bយោបល់") 426s print("ផ្ដល់\u200bយោបល់") 426s print(language.words("ផ្ដល់<200b>យោបល់")) 426s print(["ផ្ដល់", "យោបល់"]) 426s > assert words == ["ផ្ដល់", "យោបល់"] 426s E AssertionError: assert ['ផ្ដល់\u200bយោបល់'] == ['ផ្ដល់', 'យោបល់'] 426s E 426s E At index 0 diff: 'ផ្ដល់\u200bយោបល់' != 'ផ្ដល់' 426s E Right contains one more item: 'យោបល់' 426s E 426s E Full diff: 426s E [ 426s E + 'ផ្ដល់\u200bយោបល់',... 426s E 426s E ...Full output truncated (3 lines hidden), use '-vv' to show 426s 426s tests/translate/lang/test_common.py:47: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s ផ្ដល់​យោបល់ 426s ['ផ្ដល់<200b>យោបល់'] 426s ['ផ្ដល់', 'យោបល់'] 426s __________________ TestConverters.test_to_general_placeables ___________________ 426s 426s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x7e8d2d419ee0> 426s 426s @mark.xfail(reason="Test needs fixing, disabled for now") 426s def test_to_general_placeables(self): 426s basetree = base.to_base_placeables(self.elem) 426s gentree = general.to_general_placeables(basetree) 426s > assert gentree == self.elem 426s E assert <StringElem([...(['</a>'])>])> == <StringElem([...(['</a>'])>])> 426s E 426s E Full diff: 426s E - <StringElem([<StringElem(['Ģët '])>, <XMLTagPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 426s E ? ^^^ 426s E + <StringElem([<StringElem(['Ģët '])>, <XMLEntityPlaceable(['<a href="http://www.example.com" alt="Ģët &brand;!">'])>, <XMLEntityPlaceable(['&brandLong;'])>, <XMLTagPlaceable(['</a>'])>])> 426s E ? ^^^^^^ 426s 426s tests/translate/storage/placeables/test_base.py:210: AssertionError 426s ___________________ TestConverters.test_to_xliff_placeables ____________________ 426s 426s self = <tests.translate.storage.placeables.test_base.TestConverters object at 0x7e8d2d41a750> 426s 426s @mark.xfail(reason="Test needs fixing, disabled for now") 426s def test_to_xliff_placeables(self): 426s basetree = base.to_base_placeables(self.elem) 426s xliff_from_base = xliff.to_xliff_placeables(basetree) 426s > assert str(xliff_from_base) != str(self.elem) 426s 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>' 426s 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>'])>])>) 426s 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>'])>])>) 426s 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 0x7e8d2d41a750>.elem 426s 426s tests/translate/storage/placeables/test_base.py:216: AssertionError 426s _____________________ test_quotefordtd_unimplemented_cases _____________________ 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_quotefordtd_unimplemented_cases(): 426s """Test unimplemented quoting DTD cases.""" 426s > assert dtd.quotefordtd("Between <p> and </p>") == ( 426s '"Between <p> and </p>"' 426s ) 426s E assert '"Between <p> and </p>"' == '"Between <...d </p>"' 426s E 426s E - "Between <p> and </p>" 426s E + "Between <p> and </p>" 426s 426s tests/translate/storage/test_dtd.py:72: AssertionError 426s ___________________ test_unquotefromdtd_unimplemented_cases ____________________ 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_unquotefromdtd_unimplemented_cases(): 426s """Test unimplemented unquoting DTD cases.""" 426s > assert dtd.unquotefromdtd('"<p> and </p>"') == "<p> and </p>" 426s E AssertionError: assert '<p> and </p>' == '<p> and </p>' 426s E 426s E - <p> and </p> 426s E + <p> and </p> 426s 426s tests/translate/storage/test_dtd.py:103: AssertionError 426s ________________________ TestDTD.test_comment_following ________________________ 426s 426s self = <tests.translate.storage.test_dtd.TestDTD object at 0x7e8d2ea509b0> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_comment_following(self): 426s """Check that comments that appear after and entity are not pushed onto another line.""" 426s dtdsource = '<!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards -->' 426s dtdregen = self.dtdregen(dtdsource) 426s > assert dtdsource == dtdregen 426s E assert '<!ENTITY tex...keyboards -->' == '<!-- + is ab...dkey2 "="> \n' 426s E 426s E + <!ENTITY textZoomEnlargeCmd.commandkey2 "="> <!-- + is above this key on many keyboards --> 426s E - <!-- + is above this key on many keyboards --> 426s E - <!ENTITY textZoomEnlargeCmd.commandkey2 "="> 426s 426s tests/translate/storage/test_dtd.py:344: AssertionError 426s _________________________ TestDTD.test_invalid_quoting _________________________ 426s 426s self = <tests.translate.storage.test_dtd.TestDTD object at 0x7e8d2e9e6330> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_invalid_quoting(self): 426s """Checks that invalid quoting doesn't work - quotes can't be reopened.""" 426s # TODO: we should rather raise an error 426s dtdsource = '<!ENTITY test.me "bananas for sale""room">\n' 426s assert ( 426s dtd.unquotefromdtd(dtdsource[dtdsource.find('"') :]) == "bananas for sale" 426s ) 426s dtdfile = self.dtdparse(dtdsource) 426s assert len(dtdfile.units) == 1 426s dtdunit = dtdfile.units[0] 426s assert dtdunit.definition == '"bananas for sale"' 426s > assert bytes(dtdfile) == b'<!ENTITY test.me "bananas for sale">\n' 426s E assert b'' == b'<!ENTITY te... for sale">\n' 426s E 426s E Full diff: 426s E - (b'<!ENTITY test.me "bananas for sale">\n') 426s E + b'' 426s 426s tests/translate/storage/test_dtd.py:364: AssertionError 426s __________________________ TestOtFile.test_extensions __________________________ 426s 426s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x7e8d2d485700> 426s 426s @mark.xfail( 426s reason="This doesn't work, due to two store classes handling different " 426s "extensions, but factory listing it as one supported file type" 426s ) 426s def test_extensions(self): 426s > super().test_extensions() 426s 426s tests/translate/storage/test_omegat.py:20: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s self = <tests.translate.storage.test_omegat.TestOtFile object at 0x7e8d2d485700> 426s 426s def test_extensions(self): 426s """Test that the factory knows the extensions for this class.""" 426s supported = factory.supported_files() 426s supported_dict = { 426s name: (extensions, mimetypes) for name, extensions, mimetypes in supported 426s } 426s if not (self.StoreClass.Name and self.StoreClass.Name in supported_dict): 426s return 426s detail = supported_dict[ 426s self.StoreClass.Name 426s ] # will start to get problematic once translated 426s print("Factory:", detail[0]) 426s print("StoreClass:", self.StoreClass.Extensions) 426s for ext in detail[0]: 426s > assert ext in self.StoreClass.Extensions 426s E AssertionError: assert 'tab' in ['utf8'] 426s E + where ['utf8'] = <class 'translate.storage.omegat.OmegaTFile'>.Extensions 426s E + where <class 'translate.storage.omegat.OmegaTFile'> = <tests.translate.storage.test_omegat.TestOtFile object at 0x7e8d2d485700>.StoreClass 426s 426s tests/translate/storage/test_base.py:386: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s Factory: ['utf8', 'tab'] 426s StoreClass: ['utf8'] 426s _________________________ TestPOFile.test_kde_plurals __________________________ 426s 426s self = <tests.translate.storage.test_po.TestPOFile object at 0x7e8d2d437800> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_kde_plurals(self): 426s """Tests kde-style plurals. (Bug: 191).""" 426s posource = r"""msgid "_n Singular\n" 426s "Plural" 426s msgstr "Een\n" 426s "Twee\n" 426s "Drie" 426s """ 426s pofile = self.poparse(posource) 426s assert len(pofile.units) == 1 426s unit = pofile.units[0] 426s > assert unit.hasplural() 426s E assert False 426s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7e8d2e4a3140>>() 426s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7e8d2e4a3140>> = <translate.storage.pypo.pounit object at 0x7e8d2e4a3140>.hasplural 426s 426s tests/translate/storage/test_po.py:374: AssertionError 426s __________________ TestPOFile.test_makeobsolete_untranslated ___________________ 426s 426s self = <tests.translate.storage.test_po.TestPOFile object at 0x7e8d2d437bf0> 426s 426s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 426s def test_makeobsolete_untranslated(self): 426s """Tests making an untranslated unit obsolete.""" 426s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 426s pofile = self.poparse(posource) 426s unit = pofile.units[0] 426s print(bytes(pofile)) 426s assert not unit.isobsolete() 426s unit.makeobsolete() 426s > assert str(unit) == "" 426s E assert '#~ msgid "te...~ msgstr ""\n' == '' 426s E 426s E + #~ msgid "test" 426s E + #~ msgstr "" 426s 426s tests/translate/storage/test_po.py:449: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 426s ________________________ TestXWikiFullPage.test_remove _________________________ 426s 426s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x7e8d2d7bd280> 426s 426s @mark.xfail(reason="removal not working in full page") 426s def test_remove(self): 426s > super().test_remove() 426s 426s tests/translate/storage/test_properties.py:1614: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s self = <tests.translate.storage.test_properties.TestXWikiFullPage object at 0x7e8d2d7bd280> 426s 426s def test_remove(self): 426s """Tests removing a unit with a source string.""" 426s store = self.StoreClass() 426s unit = store.addsourceunit("Test String") 426s # Some storages (MO, OmegaT) serialize only translated units 426s unit.target = "Test target" 426s assert headerless_len(store.units) == 1 426s withunit = bytes(store) 426s print(withunit) 426s store.removeunit(unit) 426s assert headerless_len(store.units) == 0 426s withoutunit = bytes(store) 426s print(withoutunit) 426s > assert withoutunit != withunit 426s 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' 426s 426s tests/translate/storage/test_base.py:278: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s 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' 426s 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' 426s ________________________ TestPYPOFile.test_kde_plurals _________________________ 426s 426s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7e8d2d7ee450> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_kde_plurals(self): 426s """Tests kde-style plurals. (Bug: 191).""" 426s posource = r"""msgid "_n Singular\n" 426s "Plural" 426s msgstr "Een\n" 426s "Twee\n" 426s "Drie" 426s """ 426s pofile = self.poparse(posource) 426s assert len(pofile.units) == 1 426s unit = pofile.units[0] 426s > assert unit.hasplural() 426s E assert False 426s E + where False = <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7e8d26630260>>() 426s E + where <bound method pounit.hasplural of <translate.storage.pypo.pounit object at 0x7e8d26630260>> = <translate.storage.pypo.pounit object at 0x7e8d26630260>.hasplural 426s 426s tests/translate/storage/test_po.py:374: AssertionError 426s _________________ TestPYPOFile.test_makeobsolete_untranslated __________________ 426s 426s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7e8d2d7ee210> 426s 426s @mark.xfail(reason="Check differing behaviours between pypo and cpo") 426s def test_makeobsolete_untranslated(self): 426s """Tests making an untranslated unit obsolete.""" 426s posource = '#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 426s pofile = self.poparse(posource) 426s unit = pofile.units[0] 426s print(bytes(pofile)) 426s assert not unit.isobsolete() 426s unit.makeobsolete() 426s > assert str(unit) == "" 426s E assert '#~ msgid "te...~ msgstr ""\n' == '' 426s E 426s E + #~ msgid "test" 426s E + #~ msgstr "" 426s 426s tests/translate/storage/test_po.py:449: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s b'#. The automatic one\n#: test.c\nmsgid "test"\nmsgstr ""\n' 426s _________________ TestPYPOFile.test_mixed_newlines_typecomment _________________ 426s 426s self = <tests.translate.storage.test_pypo.TestPYPOFile object at 0x7e8d2d7f4170> 426s 426s @mark.xfail(reason="Not sure if this can not be parsed gracefully") 426s def test_mixed_newlines_typecomment(self): 426s """Checks that mixed newlines in typecomments are properly parsed.""" 426s # This was generated by translate-tookit prior to 426s # issue that test_dos_newlines_write is covering was fixed. 426s posource = b"""#, fuzzy 426s msgid "test me"\r 426s msgstr ""\r 426s """ 426s > pofile = self.poparse(posource) 426s 426s tests/translate/storage/test_pypo.py:620: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s tests/translate/storage/test_po.py:214: in poparse 426s return self.StoreClass(dummyfile) 426s /usr/lib/python3/dist-packages/translate/storage/pypo.py:941: in __init__ 426s super().__init__(inputfile, **kwargs) 426s /usr/lib/python3/dist-packages/translate/storage/pocommon.py:199: in __init__ 426s self.parse(inputfile) 426s /usr/lib/python3/dist-packages/translate/storage/pypo.py:957: in parse 426s poparser.parse_units(poparser.ParseState(iter(lines), self.create_unit), self) 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s parse_state = <translate.storage.poparser.ParseState object at 0x7e8d2cdd5730> 426s store = <translate.storage.pypo.pofile object at 0x7e8d2cdd4320> 426s 426s def parse_units(parse_state, store): 426s unit = parse_header(parse_state, store) 426s while unit: 426s unit.infer_state() 426s store.addunit(unit) 426s unit = parse_unit(parse_state) 426s if not parse_state.eof: 426s > raise PoParseError(parse_state) 426s E translate.storage.poparser.PoParseError: Syntax error on line 2: '#, fuzzy\nmsgid "test me"\r\n' 426s 426s /usr/lib/python3/dist-packages/translate/storage/poparser.py:405: PoParseError 426s ______________________ TestSubtitleUnit.test_note_sanity _______________________ 426s 426s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7e8d2f2985c0> 426s 426s @pytest.mark.xfail(reason="Not Implemented") 426s def test_note_sanity(self): 426s > super().test_note_sanity() 426s 426s tests/translate/storage/test_subtitles.py:13: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s self = <tests.translate.storage.test_subtitles.TestSubtitleUnit object at 0x7e8d2f2985c0> 426s 426s def test_note_sanity(self): 426s """Tests that all subclasses of the base behaves consistently with regards to notes.""" 426s unit = self.unit 426s 426s unit.addnote("Test note 1", origin="translator") 426s unit.addnote("Test note 2", origin="translator") 426s unit.addnote("Test note 3", origin="translator") 426s expected_notes = "Test note 1\nTest note 2\nTest note 3" 426s actual_notes = unit.getnotes(origin="translator") 426s > assert actual_notes == expected_notes 426s E AssertionError: assert '' == 'Test note 1\...\nTest note 3' 426s E 426s E - Test note 1 426s E - Test note 2 426s E - Test note 3 426s 426s tests/translate/storage/test_base.py:180: AssertionError 426s __________________________ TestCount.test_plurals_kde __________________________ 426s 426s self = <tests.translate.tools.test_pocount.TestCount object at 0x7e8d2e128230> 426s 426s @mark.xfail(reason="Support commented out pending removal") 426s def test_plurals_kde(self): 426s """Test that we correcly count old style KDE plurals.""" 426s > self.count("_n: Singular\\n\nPlural", 2, "Een\\n\ntwee\\n\ndrie", 3) 426s 426s tests/translate/tools/test_pocount.py:91: 426s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 426s 426s source = '_n: Singular\\n\nPlural', expectedsource = 2 426s target = 'Een\\n\ntwee\\n\ndrie', expectedtarget = 3 426s 426s @staticmethod 426s def count(source, expectedsource, target=None, expectedtarget=None): 426s """Simple helper to check the respective word counts.""" 426s poelement = po.pounit(source) 426s if target is not None: 426s poelement.target = target 426s wordssource, wordstarget = pocount.wordsinunit(poelement) 426s print( 426s 'Source (expected=%d; actual=%d): "%s"' 426s % (expectedsource, wordssource, source) 426s ) 426s > assert wordssource == expectedsource 426s E assert 3 == 2 426s 426s tests/translate/tools/test_pocount.py:33: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s Source (expected=2; actual=3): "_n: Singular\n 426s Plural" 426s _________________________ TestPOMerge.test_escape_tabs _________________________ 426s 426s self = <tests.translate.tools.test_pomerge.TestPOMerge object at 0x7e8d2e0ecaa0> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_escape_tabs(self): 426s """Ensure that input tabs are escaped in the output, like gettext does.""" 426s # The strings below contains the tab character, not spaces. 426s templatepo = """msgid "First Second"\nmsgstr ""\n\n""" 426s mergepo = """msgid "First Second"\nmsgstr "Eerste Tweede"\n""" 426s expectedpo = r"""msgid "First\tSecond" 426s msgstr "Eerste\tTweede" 426s """ 426s pofile = self.mergestore(templatepo, mergepo) 426s print(f"Expected:\n{expectedpo}\n\nMerged:\n{bytes(pofile)}") 426s > assert bytes(pofile).decode("utf-8") == expectedpo 426s E assert 'msgid "First...e\\tTweede"\n' == 'msgid "First...e\\tTweede"\n' 426s E 426s E - msgid "First\tSecond" 426s E ? ^^ 426s E + msgid "First Second" 426s E ? ^ 426s E msgstr "Eerste\tTweede" 426s 426s tests/translate/tools/test_pomerge.py:349: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s Expected: 426s msgid "First\tSecond" 426s msgstr "Eerste\tTweede" 426s 426s 426s Merged: 426s b'msgid "First\tSecond"\nmsgstr "Eerste\\tTweede"\n' 426s __________________ TestPretranslate.test_merging_msgid_change __________________ 426s 426s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7e8d2e0e0170> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_merging_msgid_change(self): 426s """ 426s tests that if the msgid changes but the location stays the same that 426s we merge. 426s """ 426s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 426s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 426s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 426s newpo = self.pretranslatepo(input_source, template_source) 426s print(bytes(newpo)) 426s > assert bytes(newpo).decode("utf-8") == poexpected 426s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 426s E 426s E #: simple.label 426s E #: simple.accesskey 426s E - #, fuzzy 426s E msgid "Its &hard coding a newline.\n" 426s E - msgstr "&Hart gekoeerde nuwe lyne\n" 426s E + msgstr "" 426s 426s tests/translate/tools/test_pretranslate.py:130: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 426s ______________ TestPretranslate.test_merging_accelerator_changes _______________ 426s 426s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7e8d2e0e0980> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_merging_accelerator_changes(self): 426s """ 426s test that a change in the accelerator localtion still allows 426s merging. 426s """ 426s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 426s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 426s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 426s newpo = self.pretranslatepo(input_source, template_source) 426s print(bytes(newpo)) 426s > assert bytes(newpo).decode("utf-8") == poexpected 426s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 426s E 426s E #: someline.c 426s E msgid "A&bout" 426s E - msgstr "&Info" 426s E ? ----- 426s E + msgstr "" 426s 426s tests/translate/tools/test_pretranslate.py:185: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 426s _________________ TestPretranslate.test_lines_cut_differently __________________ 426s 426s self = <tests.translate.tools.test_pretranslate.TestPretranslate object at 0x7e8d2e0e0530> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_lines_cut_differently(self): 426s """ 426s Checks that the correct formatting is preserved when pot an po lines 426s differ. 426s """ 426s input_source = ( 426s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 426s ) 426s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 426s newpo = self.pretranslatepo(input_source, template_source) 426s newpounit = self.singleunit(newpo) 426s > assert str(newpounit) == template_source 426s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 426s E 426s E #: simple.label 426s E - msgid "Line" 426s E + msgid "Line split " 426s E ? +++++++ 426s E - " split differently" 426s E ? ------- 426s E + "differently" 426s E msgstr "Lyne verskillend gesny" 426s 426s tests/translate/tools/test_pretranslate.py:199: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s #: simple.label 426s msgid "Line split " 426s "differently" 426s msgstr "Lyne verskillend gesny" 426s 426s ______________ TestPretranslateCommand.test_merging_msgid_change _______________ 426s 426s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7e8d2e0e0f80> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_merging_msgid_change(self): 426s """ 426s tests that if the msgid changes but the location stays the same that 426s we merge. 426s """ 426s input_source = """#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n""" 426s template_source = """#: simple.label\n#: simple.accesskey\nmsgid "A &hard coded newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 426s poexpected = """#: simple.label\n#: simple.accesskey\n#, fuzzy\nmsgid "Its &hard coding a newline.\\n"\nmsgstr "&Hart gekoeerde nuwe lyne\\n"\n""" 426s newpo = self.pretranslatepo(input_source, template_source) 426s print(bytes(newpo)) 426s > assert bytes(newpo).decode("utf-8") == poexpected 426s E assert '#: simple.la...\nmsgstr ""\n' == '#: simple.la...we lyne\\n"\n' 426s E 426s E #: simple.label 426s E #: simple.accesskey 426s E - #, fuzzy 426s E msgid "Its &hard coding a newline.\n" 426s E - msgstr "&Hart gekoeerde nuwe lyne\n" 426s E + msgstr "" 426s 426s tests/translate/tools/test_pretranslate.py:130: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s b'#: simple.label\n#: simple.accesskey\nmsgid "Its &hard coding a newline.\\n"\nmsgstr ""\n' 426s ___________ TestPretranslateCommand.test_merging_accelerator_changes ___________ 426s 426s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7e8d2e0e0440> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_merging_accelerator_changes(self): 426s """ 426s test that a change in the accelerator localtion still allows 426s merging. 426s """ 426s input_source = """#: someline.c\nmsgid "A&bout"\nmsgstr ""\n""" 426s template_source = """#: someline.c\nmsgid "&About"\nmsgstr "&Info"\n""" 426s poexpected = """#: someline.c\nmsgid "A&bout"\nmsgstr "&Info"\n""" 426s newpo = self.pretranslatepo(input_source, template_source) 426s print(bytes(newpo)) 426s > assert bytes(newpo).decode("utf-8") == poexpected 426s E assert '#: someline....\nmsgstr ""\n' == '#: someline....str "&Info"\n' 426s E 426s E #: someline.c 426s E msgid "A&bout" 426s E - msgstr "&Info" 426s E ? ----- 426s E + msgstr "" 426s 426s tests/translate/tools/test_pretranslate.py:185: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s b'#: someline.c\nmsgid "A&bout"\nmsgstr ""\n' 426s ______________ TestPretranslateCommand.test_lines_cut_differently ______________ 426s 426s self = <tests.translate.tools.test_pretranslate.TestPretranslateCommand object at 0x7e8d2e0e27b0> 426s 426s @mark.xfail(reason="Not Implemented") 426s def test_lines_cut_differently(self): 426s """ 426s Checks that the correct formatting is preserved when pot an po lines 426s differ. 426s """ 426s input_source = ( 426s """#: simple.label\nmsgid "Line split "\n"differently"\nmsgstr ""\n""" 426s ) 426s template_source = """#: simple.label\nmsgid "Line"\n" split differently"\nmsgstr "Lyne verskillend gesny"\n""" 426s newpo = self.pretranslatepo(input_source, template_source) 426s newpounit = self.singleunit(newpo) 426s > assert str(newpounit) == template_source 426s E assert '#: simple.la...lend gesny"\n' == '#: simple.la...lend gesny"\n' 426s E 426s E #: simple.label 426s E - msgid "Line" 426s E + msgid "Line split " 426s E ? +++++++ 426s E - " split differently" 426s E ? ------- 426s E + "differently" 426s E msgstr "Lyne verskillend gesny" 426s 426s tests/translate/tools/test_pretranslate.py:199: AssertionError 426s ----------------------------- Captured stdout call ----------------------------- 426s #: simple.label 426s msgid "Line split " 426s "differently" 426s msgstr "Lyne verskillend gesny" 426s 426s =============================== warnings summary =============================== 426s tests/translate/storage/test_cpo.py:15 426s Warning: 426s Module 'translate.storage.cpo' was found, but when imported by pytest it raised: 426s ImportError('gettext PO library not found') 426s In pytest 9.1 this warning will become an error by default. 426s You can fix the underlying problem, or alternatively overwrite this behavior and silence this warning by passing exc_type=ImportError explicitly. 426s See https://docs.pytest.org/en/stable/deprecations.html#pytest-importorskip-default-behavior-regarding-importerror 426s 426s tests/odf_xliff/test_odf_xliff.py::test_roundtrip 426s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ut5eEf/autopkgtest_tmp/tests/odf_xliff/test_2.odt'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_android2po.py::TestAndroid2POCommand::test_convertandroid 426s Warning: unclosed file <_io.TextIOWrapper name='TestAndroid2POCommand_test_convertandroid/en.po' mode='r' encoding='UTF-8'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 426s tests/translate/convert/test_csv2po.py::TestCSV2POCommand::test_columnorder 426s Warning: unclosed file <_io.TextIOWrapper name='TestCSV2POCommand_test_columnorder/test.po' mode='r' encoding='UTF-8'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_pot 426s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_pot/simple.pot'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_simple_po 426s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_po 426s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_po/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_oo2po.py::TestOO2POCommand::test_remove_duplicates 426s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_remove_duplicates/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_oo2xliff.py::TestOO2POCommand::test_simple_xlf 426s Warning: unclosed file <_io.BufferedReader name='TestOO2POCommand_test_simple_xlf/simple.xlf'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 426s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_columnorder 426s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_columnorder/test.csv' mode='r' encoding='UTF-8'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_po2csv.py::TestPO2CSVCommand::test_context 426s Warning: unclosed file <_io.TextIOWrapper name='TestPO2CSVCommand_test_context/test.csv' mode='r' encoding='UTF-8'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_missing 426s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_no_accesskey 426s tests/translate/convert/test_po2dtd.py::TestPO2DTD::test_accesskey_and_amp_case_amp_no_accesskey 426s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_missing 426s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_no_accesskey 426s tests/translate/convert/test_po2dtd.py::TestPO2DTDCommand::test_accesskey_and_amp_case_amp_no_accesskey 426s Warning: Could not find accesskey for key.accesskey 426s 426s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 426s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file 426s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_recursive_templates_with_single_po_file_and_templates_overwritten 426s Warning: unclosed file <_io.BufferedReader name='translation/file1.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_po2html.py::TestPO2HtmlCommand::test_no_template_specified 426s Warning: unclosed file <_io.BufferedWriter name='translated/file1.html'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_po2idml.py::TestPo2IDMLCommand::test_convert 426s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ut5eEf/autopkgtest_tmp/tests/translate/convert/test.idml'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_po2md.py::TestPO2MD::test_directory_of_markdown_files_with_single_po 426s Warning: unclosed file <_io.BufferedReader name='translation.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 426s Warning: unclosed file <_io.FileIO name='input.oo' mode='rb' closefd=True> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_po2oo.py::TestPO2OOCommand::test_roundtrip_simple 426s Warning: unclosed file <_io.FileIO name='output.oo' mode='wb' closefd=True> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_po2prop.py::TestPO2Prop::test_mozilla_accesskeys_missing_accesskey 426s tests/translate/convert/test_po2prop.py::TestPO2PropCommand::test_mozilla_accesskeys_missing_accesskey 426s Warning: Could not find accesskey for prop.accesskey 426s 426s tests/translate/convert/test_po2tmx.py: 26 warnings 426s tests/translate/filters/test_pofilter.py: 13 warnings 426s tests/translate/storage/test_tbx.py: 17 warnings 426s tests/translate/storage/test_tmx.py: 24 warnings 426s 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' 426s 426s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert 426s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf16 426s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf16/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 426s Warning: unclosed file <_io.BufferedWriter name='simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 426s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_wrong 426s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_wrong/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_convert_encoding_utf8 426s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_convert_encoding_utf8/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_rc2po.py::TestRC2POCommand::test_menuex 426s Warning: unclosed file <_io.BufferedReader name='TestRC2POCommand_test_menuex/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_pot 426s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_pot/simple.pot'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_simple_po 426s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_simple_po/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_resx2po.py::TestRESX2POCommand::test_remove_duplicates 426s Warning: unclosed file <_io.BufferedReader name='TestRESX2POCommand_test_remove_duplicates/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 426s Warning: unclosed file <_io.BufferedWriter name='simple.odt'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_xliff2odf.py::TestXLIFF2ODFommand::test_convert 426s Warning: unclosed file <_io.BufferedReader name='/tmp/autopkgtest.ut5eEf/autopkgtest_tmp/tests/translate/convert/test.odt'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_preserve_filename 426s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_preserve_filename/snippet.xlf'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_pot 426s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_pot/simple.pot'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_simple_po 426s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_simple_po/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/convert/test_xliff2po.py::TestXLIFF2POCommand::test_remove_duplicates 426s Warning: unclosed file <_io.BufferedReader name='TestXLIFF2POCommand_test_remove_duplicates/simple.po'> 426s Enable tracemalloc to get traceback where the object was allocated. 426s See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. 426s 426s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 426s Warning: DTD parse error: <string>:1:36:FATAL:PARSER:ERR_ENTITY_NOT_FINISHED: xmlParseEntityDecl: entity test.me not terminated 426s 426s tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting 426s Warning: DTD file '' does not validate 426s 426s -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html 426s --------------------------- snapshot report summary ---------------------------- 426s 23 snapshots passed. 426s =========================== short test summary info ============================ 426s SKIPPED [1] tests/translate/storage/test_cpo.py:15: could not import 'translate.storage.cpo': gettext PO library not found 426s SKIPPED [1] tests/translate/storage/test_fluent.py:29: could not import 'translate.storage.fluent': No module named 'fluent' 426s SKIPPED [1] tests/translate/filters/test_checks.py:1429: Spell checking for af is not available 426s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2PO::test_accelerator_keys_not_in_sentence - Not Implemented 426s XFAIL tests/translate/convert/test_dtd2po.py::TestDTD2POCommand::test_accelerator_keys_not_in_sentence - Not Implemented 426s XFAIL tests/translate/convert/test_po2php.py::TestPO2Php::test_merging_propertyless_template - Need to review if we want this behaviour 426s XFAIL tests/translate/convert/test_po2php.py::TestPO2PhpCommand::test_merging_propertyless_template - Need to review if we want this behaviour 426s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_msgid_change - Not implemented - review if this is even correct 426s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_merging_accelerator_changes - Not Implemented - needs review 426s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2PO::test_lines_cut_differently - Not Implemented - review if this is even correct 426s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_msgid_change - Not implemented - review if this is even correct 426s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_merging_accelerator_changes - Not Implemented - needs review 426s XFAIL tests/translate/convert/test_pot2po.py::TestPOT2POCommand::test_lines_cut_differently - Not Implemented - review if this is even correct 426s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2PO::test_no_duplicates - This is invalid YAML document 426s XFAIL tests/translate/convert/test_yaml2po.py::TestYAML2POCommand::test_no_duplicates - This is invalid YAML document 426s XFAIL tests/translate/filters/test_checks.py::test_acceleratedvariables - Accelerated variables needs a better implementation 426s XFAIL tests/translate/filters/test_checks.py::test_musttranslatewords - FIXME: All fails() tests are not working 426s XFAIL tests/translate/filters/test_checks.py::test_persian_single_and_double_quote_fail_at_the_same_time - Bug #3408 426s XFAIL tests/translate/filters/test_checks.py::test_bengali_mozilla_inverted_xmltags - Bug #3506 426s 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. 426s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_general_placeables - Test needs fixing, disabled for now 426s XFAIL tests/translate/storage/placeables/test_base.py::TestConverters::test_to_xliff_placeables - Test needs fixing, disabled for now 426s XFAIL tests/translate/storage/test_dtd.py::test_quotefordtd_unimplemented_cases - Not Implemented 426s XFAIL tests/translate/storage/test_dtd.py::test_unquotefromdtd_unimplemented_cases - Not Implemented 426s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_comment_following - Not Implemented 426s XFAIL tests/translate/storage/test_dtd.py::TestDTD::test_invalid_quoting - Not Implemented 426s 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 426s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_kde_plurals - Not Implemented 426s XFAIL tests/translate/storage/test_po.py::TestPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 426s XFAIL tests/translate/storage/test_properties.py::TestXWikiFullPage::test_remove - removal not working in full page 426s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_kde_plurals - Not Implemented 426s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_makeobsolete_untranslated - Check differing behaviours between pypo and cpo 426s XFAIL tests/translate/storage/test_pypo.py::TestPYPOFile::test_mixed_newlines_typecomment - Not sure if this can not be parsed gracefully 426s XFAIL tests/translate/storage/test_subtitles.py::TestSubtitleUnit::test_note_sanity - Not Implemented 426s XFAIL tests/translate/tools/test_pocount.py::TestCount::test_plurals_kde - Support commented out pending removal 426s XFAIL tests/translate/tools/test_pomerge.py::TestPOMerge::test_escape_tabs - Not Implemented 426s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_msgid_change - Not Implemented 426s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_merging_accelerator_changes - Not Implemented 426s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslate::test_lines_cut_differently - Not Implemented 426s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_msgid_change - Not Implemented 426s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_merging_accelerator_changes - Not Implemented 426s XFAIL tests/translate/tools/test_pretranslate.py::TestPretranslateCommand::test_lines_cut_differently - Not Implemented 426s ========== 3273 passed, 3 skipped, 39 xfailed, 127 warnings in 19.87s ========== 427s autopkgtest [01:30:29]: test python3-translate-commands: -----------------------] 427s python3-translate-commands PASS 427s autopkgtest [01:30:29]: test python3-translate-commands: - - - - - - - - - - results - - - - - - - - - - 427s autopkgtest [01:30:29]: @@@@@@@@@@@@@@@@@@@@ summary 427s translate-toolkit PASS 427s python3-translate PASS 427s python3-translate-commands PASS 437s nova [W] Skipping flock for amd64 437s Creating nova instance adt-oracular-i386-translate-toolkit-20240608-012322-juju-7f2275-prod-proposed-migration-environment-2-30cfb119-34b6-4f11-8ec7-46e19c675f1c from image adt/ubuntu-oracular-amd64-server-20240608.img (UUID c584088c-c855-4ca6-a835-cbd91bb3089c)... 437s nova [W] Skipping flock for amd64 437s Creating nova instance adt-oracular-i386-translate-toolkit-20240608-012322-juju-7f2275-prod-proposed-migration-environment-2-30cfb119-34b6-4f11-8ec7-46e19c675f1c from image adt/ubuntu-oracular-amd64-server-20240608.img (UUID c584088c-c855-4ca6-a835-cbd91bb3089c)...