0s autopkgtest [09:35:51]: starting date and time: 2025-05-02 09:35:51+0000 0s autopkgtest [09:35:51]: git checkout: 9986aa8c Merge branch 'skia/fix_network_interface' into 'ubuntu/production' 0s autopkgtest [09:35:51]: host juju-7f2275-prod-proposed-migration-environment-21; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.sz12bloi/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:pytest --apt-upgrade pycurl --timeout-short=1200 --timeout-copy=80000 --timeout-build=80000 --env=ADT_TEST_TRIGGERS=pytest/8.3.5-2 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest-cpu2-ram4-disk20-riscv64 --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-21@sto01-riscv64-8.secgroup --name adt-questing-riscv64-pycurl-20250502-093551-juju-7f2275-prod-proposed-migration-environment-21-9d0a54fa-f454-4c51-8a45-2a89a590bd14 --image adt/ubuntu-questing-riscv64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-21 --net-id=net_prod-autopkgtest-workers-riscv64 -e TERM=linux --mirror=http://ftpmaster.internal/ubuntu/ 190s autopkgtest [09:39:01]: testbed dpkg architecture: riscv64 191s autopkgtest [09:39:02]: testbed apt version: 3.0.0 192s autopkgtest [09:39:03]: @@@@@@@@@@@@@@@@@@@@ test bed setup 193s autopkgtest [09:39:04]: testbed release detected to be: None 197s autopkgtest [09:39:08]: updating testbed package index (apt update) 199s Get:1 http://ftpmaster.internal/ubuntu questing-proposed InRelease [110 kB] 200s Hit:2 http://ftpmaster.internal/ubuntu questing InRelease 200s Hit:3 http://ftpmaster.internal/ubuntu questing-updates InRelease 200s Hit:4 http://ftpmaster.internal/ubuntu questing-security InRelease 200s Get:5 http://ftpmaster.internal/ubuntu questing-proposed/universe Sources [2076 kB] 201s Get:6 http://ftpmaster.internal/ubuntu questing-proposed/multiverse Sources [44.4 kB] 201s Get:7 http://ftpmaster.internal/ubuntu questing-proposed/main Sources [175 kB] 201s Get:8 http://ftpmaster.internal/ubuntu questing-proposed/main riscv64 Packages [197 kB] 201s Get:9 http://ftpmaster.internal/ubuntu questing-proposed/universe riscv64 Packages [793 kB] 202s Get:10 http://ftpmaster.internal/ubuntu questing-proposed/multiverse riscv64 Packages [8624 B] 205s Fetched 3405 kB in 5s (630 kB/s) 218s Reading package lists... 222s autopkgtest [09:39:33]: upgrading testbed (apt dist-upgrade and autopurge) 223s Reading package lists... 225s Building dependency tree... 225s Reading state information... 226s Calculating upgrade...Starting pkgProblemResolver with broken count: 0 227s Starting 2 pkgProblemResolver with broken count: 0 227s Done 229s Entering ResolveByKeep 230s 230s Calculating upgrade... 231s The following packages will be upgraded: 231s htop nano 232s 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 232s Need to get 467 kB of archives. 232s After this operation, 7168 B of additional disk space will be used. 232s Get:1 http://ftpmaster.internal/ubuntu questing/main riscv64 nano riscv64 8.4-1 [299 kB] 232s Get:2 http://ftpmaster.internal/ubuntu questing/main riscv64 htop riscv64 3.4.1-4 [168 kB] 236s Fetched 467 kB in 0s (1315 kB/s) 237s (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 ... 114197 files and directories currently installed.) 237s Preparing to unpack .../nano_8.4-1_riscv64.deb ... 237s Unpacking nano (8.4-1) over (8.3-1) ... 238s Preparing to unpack .../htop_3.4.1-4_riscv64.deb ... 238s Unpacking htop (3.4.1-4) over (3.4.0-2) ... 239s Setting up htop (3.4.1-4) ... 239s Setting up nano (8.4-1) ... 239s Installing new version of config file /etc/nanorc ... 239s Processing triggers for man-db (2.13.0-1) ... 242s Processing triggers for install-info (7.1.1-1) ... 251s Reading package lists... 252s Building dependency tree... 252s Reading state information... 254s Starting pkgProblemResolver with broken count: 0 254s Starting 2 pkgProblemResolver with broken count: 0 254s Done 255s Solving dependencies... 256s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 268s autopkgtest [09:40:19]: testbed running kernel: Linux 6.14.0-13-generic #13.2-Ubuntu SMP PREEMPT_DYNAMIC Sun Apr 6 05:26:54 UTC 2025 269s autopkgtest [09:40:20]: @@@@@@@@@@@@@@@@@@@@ apt-source pycurl 284s Get:1 http://ftpmaster.internal/ubuntu questing/main pycurl 7.45.4-1build1 (dsc) [2525 B] 284s Get:2 http://ftpmaster.internal/ubuntu questing/main pycurl 7.45.4-1build1 (tar) [175 kB] 284s Get:3 http://ftpmaster.internal/ubuntu questing/main pycurl 7.45.4-1build1 (diff) [10.9 kB] 287s gpgv: Signature made Tue Mar 4 22:48:53 2025 UTC 287s gpgv: using RSA key 25E3FF2D7F469DBE7D0D4E50AFCFEC8E669CE1C2 287s gpgv: Can't check signature: No public key 287s dpkg-source: warning: cannot verify inline signature for ./pycurl_7.45.4-1build1.dsc: no acceptable signature found 288s autopkgtest [09:40:39]: testing package pycurl version 7.45.4-1build1 289s autopkgtest [09:40:40]: build not needed 290s autopkgtest [09:40:41]: test command1: preparing testbed 294s Reading package lists... 295s Building dependency tree... 295s Reading state information... 296s Starting pkgProblemResolver with broken count: 0 296s Starting 2 pkgProblemResolver with broken count: 0 296s Done 298s The following NEW packages will be installed: 298s libjs-jquery libjs-sphinxdoc libjs-underscore python-pycurl-doc 298s python3-pycurl 298s 0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded. 298s Need to get 626 kB of archives. 298s After this operation, 2059 kB of additional disk space will be used. 298s Get:1 http://ftpmaster.internal/ubuntu questing/main riscv64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 299s Get:2 http://ftpmaster.internal/ubuntu questing/main riscv64 libjs-underscore all 1.13.4~dfsg+~1.11.4-3 [118 kB] 299s Get:3 http://ftpmaster.internal/ubuntu questing/main riscv64 libjs-sphinxdoc all 8.1.3-5 [31.0 kB] 299s Get:4 http://ftpmaster.internal/ubuntu questing/main riscv64 python-pycurl-doc all 7.45.4-1build1 [90.4 kB] 299s Get:5 http://ftpmaster.internal/ubuntu questing/main riscv64 python3-pycurl riscv64 7.45.4-1build1 [58.8 kB] 303s Fetched 626 kB in 0s (1336 kB/s) 303s Selecting previously unselected package libjs-jquery. 304s (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 ... 114197 files and directories currently installed.) 304s Preparing to unpack .../libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 304s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 305s Selecting previously unselected package libjs-underscore. 305s Preparing to unpack .../libjs-underscore_1.13.4~dfsg+~1.11.4-3_all.deb ... 305s Unpacking libjs-underscore (1.13.4~dfsg+~1.11.4-3) ... 305s Selecting previously unselected package libjs-sphinxdoc. 305s Preparing to unpack .../libjs-sphinxdoc_8.1.3-5_all.deb ... 305s Unpacking libjs-sphinxdoc (8.1.3-5) ... 306s Selecting previously unselected package python-pycurl-doc. 306s Preparing to unpack .../python-pycurl-doc_7.45.4-1build1_all.deb ... 306s Unpacking python-pycurl-doc (7.45.4-1build1) ... 306s Selecting previously unselected package python3-pycurl. 307s Preparing to unpack .../python3-pycurl_7.45.4-1build1_riscv64.deb ... 307s Unpacking python3-pycurl (7.45.4-1build1) ... 307s Setting up python3-pycurl (7.45.4-1build1) ... 310s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 310s Setting up libjs-underscore (1.13.4~dfsg+~1.11.4-3) ... 310s Setting up libjs-sphinxdoc (8.1.3-5) ... 310s Setting up python-pycurl-doc (7.45.4-1build1) ... 320s autopkgtest [09:41:11]: test command1: python3 -c "import curl; print(curl.__file__)" 320s autopkgtest [09:41:11]: test command1: [----------------------- 322s /usr/lib/python3/dist-packages/curl/__init__.py 323s autopkgtest [09:41:14]: test command1: -----------------------] 325s autopkgtest [09:41:16]: test command1: - - - - - - - - - - results - - - - - - - - - - 325s command1 PASS 326s autopkgtest [09:41:17]: test livetest.sh: preparing testbed 330s Reading package lists... 331s Building dependency tree... 331s Reading state information... 333s Starting pkgProblemResolver with broken count: 0 333s Starting 2 pkgProblemResolver with broken count: 0 333s Done 335s The following NEW packages will be installed: 335s build-essential comerr-dev cpp cpp-14 cpp-14-riscv64-linux-gnu 335s cpp-riscv64-linux-gnu g++ g++-14 g++-14-riscv64-linux-gnu 335s g++-riscv64-linux-gnu gcc gcc-14 gcc-14-riscv64-linux-gnu 335s gcc-riscv64-linux-gnu krb5-multidev libasan8 libbrotli-dev libcc1-0 335s libcurl4-gnutls-dev libevent-2.1-7t64 libgcc-14-dev libgmp-dev libgmpxx4ldbl 335s libgnutls-dane0t64 libgnutls-openssl27t64 libgnutls28-dev libgomp1 335s libgssrpc4t64 libidn2-dev libisl23 libitm1 libkadm5clnt-mit12 335s libkadm5srv-mit12 libkdb5-10t64 libkrb5-dev libldap-dev liblsan0 libmpc3 335s libnghttp2-dev libp11-kit-dev libpkgconf3 libpsl-dev librtmp-dev 335s libssh2-1-dev libssl-dev libstdc++-14-dev libtasn1-6-dev libtsan2 libubsan1 335s libunbound8 libzstd-dev nettle-dev pkgconf pkgconf-bin python3-all 335s python3-click python3-flaky python3-flask python3-iniconfig 335s python3-itsdangerous python3-packaging python3-pluggy python3-pyflakes 335s python3-pytest python3-werkzeug vsftpd zlib1g-dev 335s 0 upgraded, 67 newly installed, 0 to remove and 0 not upgraded. 335s Need to get 105 MB of archives. 335s After this operation, 510 MB of additional disk space will be used. 335s Get:1 http://ftpmaster.internal/ubuntu questing/main riscv64 libisl23 riscv64 0.27-1 [722 kB] 335s Get:2 http://ftpmaster.internal/ubuntu questing/main riscv64 libmpc3 riscv64 1.3.1-1build2 [61.5 kB] 335s Get:3 http://ftpmaster.internal/ubuntu questing/main riscv64 cpp-14-riscv64-linux-gnu riscv64 14.2.0-19ubuntu2 [15.2 MB] 337s Get:4 http://ftpmaster.internal/ubuntu questing/main riscv64 cpp-14 riscv64 14.2.0-19ubuntu2 [1028 B] 337s Get:5 http://ftpmaster.internal/ubuntu questing/main riscv64 cpp-riscv64-linux-gnu riscv64 4:14.2.0-1ubuntu1 [5554 B] 337s Get:6 http://ftpmaster.internal/ubuntu questing/main riscv64 cpp riscv64 4:14.2.0-1ubuntu1 [22.4 kB] 337s Get:7 http://ftpmaster.internal/ubuntu questing/main riscv64 libcc1-0 riscv64 15-20250404-0ubuntu1 [46.1 kB] 337s Get:8 http://ftpmaster.internal/ubuntu questing/main riscv64 libgomp1 riscv64 15-20250404-0ubuntu1 [149 kB] 337s Get:9 http://ftpmaster.internal/ubuntu questing/main riscv64 libitm1 riscv64 15-20250404-0ubuntu1 [29.7 kB] 337s Get:10 http://ftpmaster.internal/ubuntu questing/main riscv64 libasan8 riscv64 15-20250404-0ubuntu1 [3300 kB] 338s Get:11 http://ftpmaster.internal/ubuntu questing/main riscv64 liblsan0 riscv64 15-20250404-0ubuntu1 [1470 kB] 338s Get:12 http://ftpmaster.internal/ubuntu questing/main riscv64 libtsan2 riscv64 15-20250404-0ubuntu1 [2983 kB] 338s Get:13 http://ftpmaster.internal/ubuntu questing/main riscv64 libubsan1 riscv64 15-20250404-0ubuntu1 [1310 kB] 338s Get:14 http://ftpmaster.internal/ubuntu questing/main riscv64 libgcc-14-dev riscv64 14.2.0-19ubuntu2 [5994 kB] 339s Get:15 http://ftpmaster.internal/ubuntu questing/main riscv64 gcc-14-riscv64-linux-gnu riscv64 14.2.0-19ubuntu2 [29.9 MB] 342s Get:16 http://ftpmaster.internal/ubuntu questing/main riscv64 gcc-14 riscv64 14.2.0-19ubuntu2 [529 kB] 342s Get:17 http://ftpmaster.internal/ubuntu questing/main riscv64 gcc-riscv64-linux-gnu riscv64 4:14.2.0-1ubuntu1 [1198 B] 342s Get:18 http://ftpmaster.internal/ubuntu questing/main riscv64 gcc riscv64 4:14.2.0-1ubuntu1 [4998 B] 343s Get:19 http://ftpmaster.internal/ubuntu questing/main riscv64 libstdc++-14-dev riscv64 14.2.0-19ubuntu2 [6141 kB] 343s Get:20 http://ftpmaster.internal/ubuntu questing/main riscv64 g++-14-riscv64-linux-gnu riscv64 14.2.0-19ubuntu2 [16.8 MB] 345s Get:21 http://ftpmaster.internal/ubuntu questing/main riscv64 g++-14 riscv64 14.2.0-19ubuntu2 [23.0 kB] 345s Get:22 http://ftpmaster.internal/ubuntu questing/main riscv64 g++-riscv64-linux-gnu riscv64 4:14.2.0-1ubuntu1 [960 B] 345s Get:23 http://ftpmaster.internal/ubuntu questing/main riscv64 g++ riscv64 4:14.2.0-1ubuntu1 [1080 B] 345s Get:24 http://ftpmaster.internal/ubuntu questing/main riscv64 build-essential riscv64 12.12ubuntu1 [5090 B] 345s Get:25 http://ftpmaster.internal/ubuntu questing/main riscv64 comerr-dev riscv64 2.1-1.47.2-1ubuntu1 [49.0 kB] 345s Get:26 http://ftpmaster.internal/ubuntu questing/main riscv64 libgssrpc4t64 riscv64 1.21.3-4ubuntu2 [62.4 kB] 345s Get:27 http://ftpmaster.internal/ubuntu questing/main riscv64 libkadm5clnt-mit12 riscv64 1.21.3-4ubuntu2 [41.4 kB] 345s Get:28 http://ftpmaster.internal/ubuntu questing/main riscv64 libkdb5-10t64 riscv64 1.21.3-4ubuntu2 [42.9 kB] 345s Get:29 http://ftpmaster.internal/ubuntu questing/main riscv64 libkadm5srv-mit12 riscv64 1.21.3-4ubuntu2 [55.2 kB] 345s Get:30 http://ftpmaster.internal/ubuntu questing/main riscv64 krb5-multidev riscv64 1.21.3-4ubuntu2 [125 kB] 345s Get:31 http://ftpmaster.internal/ubuntu questing/main riscv64 libbrotli-dev riscv64 1.1.0-2build4 [956 kB] 346s Get:32 http://ftpmaster.internal/ubuntu questing/main riscv64 libevent-2.1-7t64 riscv64 2.1.12-stable-10 [151 kB] 346s Get:33 http://ftpmaster.internal/ubuntu questing/main riscv64 libunbound8 riscv64 1.22.0-1ubuntu1 [502 kB] 346s Get:34 http://ftpmaster.internal/ubuntu questing/main riscv64 libgnutls-dane0t64 riscv64 3.8.9-2ubuntu3 [43.8 kB] 346s Get:35 http://ftpmaster.internal/ubuntu questing/main riscv64 libgnutls-openssl27t64 riscv64 3.8.9-2ubuntu3 [43.7 kB] 346s Get:36 http://ftpmaster.internal/ubuntu questing/main riscv64 libidn2-dev riscv64 2.3.8-2 [165 kB] 346s Get:37 http://ftpmaster.internal/ubuntu questing/main riscv64 libp11-kit-dev riscv64 0.25.5-2ubuntu3 [23.5 kB] 346s Get:38 http://ftpmaster.internal/ubuntu questing/main riscv64 libtasn1-6-dev riscv64 4.20.0-2 [159 kB] 346s Get:39 http://ftpmaster.internal/ubuntu questing/main riscv64 libgmpxx4ldbl riscv64 2:6.3.0+dfsg-3ubuntu1 [9986 B] 346s Get:40 http://ftpmaster.internal/ubuntu questing/main riscv64 libgmp-dev riscv64 2:6.3.0+dfsg-3ubuntu1 [794 kB] 346s Get:41 http://ftpmaster.internal/ubuntu questing/main riscv64 nettle-dev riscv64 3.10.1-1 [1418 kB] 346s Get:42 http://ftpmaster.internal/ubuntu questing/main riscv64 libgnutls28-dev riscv64 3.8.9-2ubuntu3 [2670 kB] 346s Get:43 http://ftpmaster.internal/ubuntu questing/main riscv64 libkrb5-dev riscv64 1.21.3-4ubuntu2 [11.9 kB] 346s Get:44 http://ftpmaster.internal/ubuntu questing/main riscv64 libldap-dev riscv64 2.6.9+dfsg-2ubuntu1 [667 kB] 347s Get:45 http://ftpmaster.internal/ubuntu questing/main riscv64 libpkgconf3 riscv64 1.8.1-4 [31.6 kB] 347s Get:46 http://ftpmaster.internal/ubuntu questing/main riscv64 pkgconf-bin riscv64 1.8.1-4 [21.8 kB] 347s Get:47 http://ftpmaster.internal/ubuntu questing/main riscv64 pkgconf riscv64 1.8.1-4 [16.7 kB] 347s Get:48 http://ftpmaster.internal/ubuntu questing/main riscv64 libnghttp2-dev riscv64 1.64.0-1ubuntu1 [255 kB] 347s Get:49 http://ftpmaster.internal/ubuntu questing/main riscv64 libpsl-dev riscv64 0.21.2-1.1build1 [88.7 kB] 347s Get:50 http://ftpmaster.internal/ubuntu questing/main riscv64 zlib1g-dev riscv64 1:1.3.dfsg+really1.3.1-1ubuntu1 [968 kB] 347s Get:51 http://ftpmaster.internal/ubuntu questing/main riscv64 librtmp-dev riscv64 2.4+20151223.gitfa8646d.1-2build7 [136 kB] 347s Get:52 http://ftpmaster.internal/ubuntu questing/main riscv64 libssl-dev riscv64 3.4.1-1ubuntu3 [6164 kB] 348s Get:53 http://ftpmaster.internal/ubuntu questing/main riscv64 libssh2-1-dev riscv64 1.11.1-1 [499 kB] 348s Get:54 http://ftpmaster.internal/ubuntu questing/main riscv64 libzstd-dev riscv64 1.5.6+dfsg-2 [1668 kB] 348s Get:55 http://ftpmaster.internal/ubuntu questing/main riscv64 libcurl4-gnutls-dev riscv64 8.12.1-3ubuntu1 [1246 kB] 348s Get:56 http://ftpmaster.internal/ubuntu questing/main riscv64 python3-all riscv64 3.13.3-1 [882 B] 348s Get:57 http://ftpmaster.internal/ubuntu questing/main riscv64 python3-click all 8.2.0+0.really.8.1.8-1 [80.0 kB] 348s Get:58 http://ftpmaster.internal/ubuntu questing/universe riscv64 python3-flaky all 3.8.1-2 [16.6 kB] 348s Get:59 http://ftpmaster.internal/ubuntu questing/main riscv64 python3-itsdangerous all 2.2.0-2 [15.3 kB] 348s Get:60 http://ftpmaster.internal/ubuntu questing/main riscv64 python3-werkzeug all 3.1.3-2 [169 kB] 348s Get:61 http://ftpmaster.internal/ubuntu questing/main riscv64 python3-flask all 3.1.0-2ubuntu1 [84.4 kB] 348s Get:62 http://ftpmaster.internal/ubuntu questing/universe riscv64 python3-iniconfig all 1.1.1-2 [6024 B] 348s Get:63 http://ftpmaster.internal/ubuntu questing/main riscv64 python3-packaging all 24.2-1 [51.5 kB] 348s Get:64 http://ftpmaster.internal/ubuntu questing/universe riscv64 python3-pluggy all 1.5.0-1 [21.0 kB] 348s Get:65 http://ftpmaster.internal/ubuntu questing/universe riscv64 python3-pyflakes all 3.2.0-3 [53.0 kB] 348s Get:66 http://ftpmaster.internal/ubuntu questing-proposed/universe riscv64 python3-pytest all 8.3.5-2 [252 kB] 348s Get:67 http://ftpmaster.internal/ubuntu questing/main riscv64 vsftpd riscv64 3.0.5-0.1 [124 kB] 354s Preconfiguring packages ... 355s Fetched 105 MB in 13s (7943 kB/s) 356s Selecting previously unselected package libisl23:riscv64. 356s (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 ... 114343 files and directories currently installed.) 357s Preparing to unpack .../00-libisl23_0.27-1_riscv64.deb ... 357s Unpacking libisl23:riscv64 (0.27-1) ... 357s Selecting previously unselected package libmpc3:riscv64. 357s Preparing to unpack .../01-libmpc3_1.3.1-1build2_riscv64.deb ... 357s Unpacking libmpc3:riscv64 (1.3.1-1build2) ... 358s Selecting previously unselected package cpp-14-riscv64-linux-gnu. 358s Preparing to unpack .../02-cpp-14-riscv64-linux-gnu_14.2.0-19ubuntu2_riscv64.deb ... 358s Unpacking cpp-14-riscv64-linux-gnu (14.2.0-19ubuntu2) ... 365s Selecting previously unselected package cpp-14. 365s Preparing to unpack .../03-cpp-14_14.2.0-19ubuntu2_riscv64.deb ... 365s Unpacking cpp-14 (14.2.0-19ubuntu2) ... 365s Selecting previously unselected package cpp-riscv64-linux-gnu. 365s Preparing to unpack .../04-cpp-riscv64-linux-gnu_4%3a14.2.0-1ubuntu1_riscv64.deb ... 365s Unpacking cpp-riscv64-linux-gnu (4:14.2.0-1ubuntu1) ... 365s Selecting previously unselected package cpp. 366s Preparing to unpack .../05-cpp_4%3a14.2.0-1ubuntu1_riscv64.deb ... 366s Unpacking cpp (4:14.2.0-1ubuntu1) ... 366s Selecting previously unselected package libcc1-0:riscv64. 366s Preparing to unpack .../06-libcc1-0_15-20250404-0ubuntu1_riscv64.deb ... 366s Unpacking libcc1-0:riscv64 (15-20250404-0ubuntu1) ... 367s Selecting previously unselected package libgomp1:riscv64. 367s Preparing to unpack .../07-libgomp1_15-20250404-0ubuntu1_riscv64.deb ... 367s Unpacking libgomp1:riscv64 (15-20250404-0ubuntu1) ... 367s Selecting previously unselected package libitm1:riscv64. 367s Preparing to unpack .../08-libitm1_15-20250404-0ubuntu1_riscv64.deb ... 367s Unpacking libitm1:riscv64 (15-20250404-0ubuntu1) ... 368s Selecting previously unselected package libasan8:riscv64. 368s Preparing to unpack .../09-libasan8_15-20250404-0ubuntu1_riscv64.deb ... 368s Unpacking libasan8:riscv64 (15-20250404-0ubuntu1) ... 370s Selecting previously unselected package liblsan0:riscv64. 370s Preparing to unpack .../10-liblsan0_15-20250404-0ubuntu1_riscv64.deb ... 370s Unpacking liblsan0:riscv64 (15-20250404-0ubuntu1) ... 371s Selecting previously unselected package libtsan2:riscv64. 371s Preparing to unpack .../11-libtsan2_15-20250404-0ubuntu1_riscv64.deb ... 371s Unpacking libtsan2:riscv64 (15-20250404-0ubuntu1) ... 372s Selecting previously unselected package libubsan1:riscv64. 373s Preparing to unpack .../12-libubsan1_15-20250404-0ubuntu1_riscv64.deb ... 373s Unpacking libubsan1:riscv64 (15-20250404-0ubuntu1) ... 373s Selecting previously unselected package libgcc-14-dev:riscv64. 374s Preparing to unpack .../13-libgcc-14-dev_14.2.0-19ubuntu2_riscv64.deb ... 374s Unpacking libgcc-14-dev:riscv64 (14.2.0-19ubuntu2) ... 379s Selecting previously unselected package gcc-14-riscv64-linux-gnu. 380s Preparing to unpack .../14-gcc-14-riscv64-linux-gnu_14.2.0-19ubuntu2_riscv64.deb ... 380s Unpacking gcc-14-riscv64-linux-gnu (14.2.0-19ubuntu2) ... 392s Selecting previously unselected package gcc-14. 393s Preparing to unpack .../15-gcc-14_14.2.0-19ubuntu2_riscv64.deb ... 393s Unpacking gcc-14 (14.2.0-19ubuntu2) ... 393s Selecting previously unselected package gcc-riscv64-linux-gnu. 393s Preparing to unpack .../16-gcc-riscv64-linux-gnu_4%3a14.2.0-1ubuntu1_riscv64.deb ... 393s Unpacking gcc-riscv64-linux-gnu (4:14.2.0-1ubuntu1) ... 393s Selecting previously unselected package gcc. 394s Preparing to unpack .../17-gcc_4%3a14.2.0-1ubuntu1_riscv64.deb ... 394s Unpacking gcc (4:14.2.0-1ubuntu1) ... 394s Selecting previously unselected package libstdc++-14-dev:riscv64. 394s Preparing to unpack .../18-libstdc++-14-dev_14.2.0-19ubuntu2_riscv64.deb ... 394s Unpacking libstdc++-14-dev:riscv64 (14.2.0-19ubuntu2) ... 400s Selecting previously unselected package g++-14-riscv64-linux-gnu. 401s Preparing to unpack .../19-g++-14-riscv64-linux-gnu_14.2.0-19ubuntu2_riscv64.deb ... 401s Unpacking g++-14-riscv64-linux-gnu (14.2.0-19ubuntu2) ... 408s Selecting previously unselected package g++-14. 408s Preparing to unpack .../20-g++-14_14.2.0-19ubuntu2_riscv64.deb ... 408s Unpacking g++-14 (14.2.0-19ubuntu2) ... 408s Selecting previously unselected package g++-riscv64-linux-gnu. 408s Preparing to unpack .../21-g++-riscv64-linux-gnu_4%3a14.2.0-1ubuntu1_riscv64.deb ... 408s Unpacking g++-riscv64-linux-gnu (4:14.2.0-1ubuntu1) ... 409s Selecting previously unselected package g++. 409s Preparing to unpack .../22-g++_4%3a14.2.0-1ubuntu1_riscv64.deb ... 409s Unpacking g++ (4:14.2.0-1ubuntu1) ... 409s Selecting previously unselected package build-essential. 409s Preparing to unpack .../23-build-essential_12.12ubuntu1_riscv64.deb ... 409s Unpacking build-essential (12.12ubuntu1) ... 410s Selecting previously unselected package comerr-dev:riscv64. 410s Preparing to unpack .../24-comerr-dev_2.1-1.47.2-1ubuntu1_riscv64.deb ... 410s Unpacking comerr-dev:riscv64 (2.1-1.47.2-1ubuntu1) ... 410s Selecting previously unselected package libgssrpc4t64:riscv64. 410s Preparing to unpack .../25-libgssrpc4t64_1.21.3-4ubuntu2_riscv64.deb ... 410s Unpacking libgssrpc4t64:riscv64 (1.21.3-4ubuntu2) ... 411s Selecting previously unselected package libkadm5clnt-mit12:riscv64. 411s Preparing to unpack .../26-libkadm5clnt-mit12_1.21.3-4ubuntu2_riscv64.deb ... 411s Unpacking libkadm5clnt-mit12:riscv64 (1.21.3-4ubuntu2) ... 411s Selecting previously unselected package libkdb5-10t64:riscv64. 411s Preparing to unpack .../27-libkdb5-10t64_1.21.3-4ubuntu2_riscv64.deb ... 411s Unpacking libkdb5-10t64:riscv64 (1.21.3-4ubuntu2) ... 412s Selecting previously unselected package libkadm5srv-mit12:riscv64. 412s Preparing to unpack .../28-libkadm5srv-mit12_1.21.3-4ubuntu2_riscv64.deb ... 412s Unpacking libkadm5srv-mit12:riscv64 (1.21.3-4ubuntu2) ... 412s Selecting previously unselected package krb5-multidev:riscv64. 412s Preparing to unpack .../29-krb5-multidev_1.21.3-4ubuntu2_riscv64.deb ... 412s Unpacking krb5-multidev:riscv64 (1.21.3-4ubuntu2) ... 413s Selecting previously unselected package libbrotli-dev:riscv64. 413s Preparing to unpack .../30-libbrotli-dev_1.1.0-2build4_riscv64.deb ... 413s Unpacking libbrotli-dev:riscv64 (1.1.0-2build4) ... 414s Selecting previously unselected package libevent-2.1-7t64:riscv64. 414s Preparing to unpack .../31-libevent-2.1-7t64_2.1.12-stable-10_riscv64.deb ... 414s Unpacking libevent-2.1-7t64:riscv64 (2.1.12-stable-10) ... 415s Selecting previously unselected package libunbound8:riscv64. 415s Preparing to unpack .../32-libunbound8_1.22.0-1ubuntu1_riscv64.deb ... 415s Unpacking libunbound8:riscv64 (1.22.0-1ubuntu1) ... 415s Selecting previously unselected package libgnutls-dane0t64:riscv64. 415s Preparing to unpack .../33-libgnutls-dane0t64_3.8.9-2ubuntu3_riscv64.deb ... 415s Unpacking libgnutls-dane0t64:riscv64 (3.8.9-2ubuntu3) ... 416s Selecting previously unselected package libgnutls-openssl27t64:riscv64. 416s Preparing to unpack .../34-libgnutls-openssl27t64_3.8.9-2ubuntu3_riscv64.deb ... 416s Unpacking libgnutls-openssl27t64:riscv64 (3.8.9-2ubuntu3) ... 416s Selecting previously unselected package libidn2-dev:riscv64. 416s Preparing to unpack .../35-libidn2-dev_2.3.8-2_riscv64.deb ... 416s Unpacking libidn2-dev:riscv64 (2.3.8-2) ... 417s Selecting previously unselected package libp11-kit-dev:riscv64. 417s Preparing to unpack .../36-libp11-kit-dev_0.25.5-2ubuntu3_riscv64.deb ... 417s Unpacking libp11-kit-dev:riscv64 (0.25.5-2ubuntu3) ... 417s Selecting previously unselected package libtasn1-6-dev:riscv64. 417s Preparing to unpack .../37-libtasn1-6-dev_4.20.0-2_riscv64.deb ... 417s Unpacking libtasn1-6-dev:riscv64 (4.20.0-2) ... 418s Selecting previously unselected package libgmpxx4ldbl:riscv64. 418s Preparing to unpack .../38-libgmpxx4ldbl_2%3a6.3.0+dfsg-3ubuntu1_riscv64.deb ... 418s Unpacking libgmpxx4ldbl:riscv64 (2:6.3.0+dfsg-3ubuntu1) ... 418s Selecting previously unselected package libgmp-dev:riscv64. 418s Preparing to unpack .../39-libgmp-dev_2%3a6.3.0+dfsg-3ubuntu1_riscv64.deb ... 418s Unpacking libgmp-dev:riscv64 (2:6.3.0+dfsg-3ubuntu1) ... 419s Selecting previously unselected package nettle-dev:riscv64. 420s Preparing to unpack .../40-nettle-dev_3.10.1-1_riscv64.deb ... 420s Unpacking nettle-dev:riscv64 (3.10.1-1) ... 421s Selecting previously unselected package libgnutls28-dev:riscv64. 421s Preparing to unpack .../41-libgnutls28-dev_3.8.9-2ubuntu3_riscv64.deb ... 421s Unpacking libgnutls28-dev:riscv64 (3.8.9-2ubuntu3) ... 423s Selecting previously unselected package libkrb5-dev:riscv64. 423s Preparing to unpack .../42-libkrb5-dev_1.21.3-4ubuntu2_riscv64.deb ... 423s Unpacking libkrb5-dev:riscv64 (1.21.3-4ubuntu2) ... 424s Selecting previously unselected package libldap-dev:riscv64. 424s Preparing to unpack .../43-libldap-dev_2.6.9+dfsg-2ubuntu1_riscv64.deb ... 424s Unpacking libldap-dev:riscv64 (2.6.9+dfsg-2ubuntu1) ... 425s Selecting previously unselected package libpkgconf3:riscv64. 425s Preparing to unpack .../44-libpkgconf3_1.8.1-4_riscv64.deb ... 425s Unpacking libpkgconf3:riscv64 (1.8.1-4) ... 426s Selecting previously unselected package pkgconf-bin. 426s Preparing to unpack .../45-pkgconf-bin_1.8.1-4_riscv64.deb ... 426s Unpacking pkgconf-bin (1.8.1-4) ... 426s Selecting previously unselected package pkgconf:riscv64. 427s Preparing to unpack .../46-pkgconf_1.8.1-4_riscv64.deb ... 427s Unpacking pkgconf:riscv64 (1.8.1-4) ... 427s Selecting previously unselected package libnghttp2-dev:riscv64. 427s Preparing to unpack .../47-libnghttp2-dev_1.64.0-1ubuntu1_riscv64.deb ... 427s Unpacking libnghttp2-dev:riscv64 (1.64.0-1ubuntu1) ... 428s Selecting previously unselected package libpsl-dev:riscv64. 428s Preparing to unpack .../48-libpsl-dev_0.21.2-1.1build1_riscv64.deb ... 428s Unpacking libpsl-dev:riscv64 (0.21.2-1.1build1) ... 428s Selecting previously unselected package zlib1g-dev:riscv64. 428s Preparing to unpack .../49-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1ubuntu1_riscv64.deb ... 428s Unpacking zlib1g-dev:riscv64 (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 429s Selecting previously unselected package librtmp-dev:riscv64. 429s Preparing to unpack .../50-librtmp-dev_2.4+20151223.gitfa8646d.1-2build7_riscv64.deb ... 429s Unpacking librtmp-dev:riscv64 (2.4+20151223.gitfa8646d.1-2build7) ... 430s Selecting previously unselected package libssl-dev:riscv64. 430s Preparing to unpack .../51-libssl-dev_3.4.1-1ubuntu3_riscv64.deb ... 430s Unpacking libssl-dev:riscv64 (3.4.1-1ubuntu3) ... 435s Selecting previously unselected package libssh2-1-dev:riscv64. 435s Preparing to unpack .../52-libssh2-1-dev_1.11.1-1_riscv64.deb ... 435s Unpacking libssh2-1-dev:riscv64 (1.11.1-1) ... 436s Selecting previously unselected package libzstd-dev:riscv64. 436s Preparing to unpack .../53-libzstd-dev_1.5.6+dfsg-2_riscv64.deb ... 436s Unpacking libzstd-dev:riscv64 (1.5.6+dfsg-2) ... 438s Selecting previously unselected package libcurl4-gnutls-dev:riscv64. 438s Preparing to unpack .../54-libcurl4-gnutls-dev_8.12.1-3ubuntu1_riscv64.deb ... 438s Unpacking libcurl4-gnutls-dev:riscv64 (8.12.1-3ubuntu1) ... 440s Selecting previously unselected package python3-all. 440s Preparing to unpack .../55-python3-all_3.13.3-1_riscv64.deb ... 440s Unpacking python3-all (3.13.3-1) ... 440s Selecting previously unselected package python3-click. 440s Preparing to unpack .../56-python3-click_8.2.0+0.really.8.1.8-1_all.deb ... 440s Unpacking python3-click (8.2.0+0.really.8.1.8-1) ... 441s Selecting previously unselected package python3-flaky. 441s Preparing to unpack .../57-python3-flaky_3.8.1-2_all.deb ... 441s Unpacking python3-flaky (3.8.1-2) ... 441s Selecting previously unselected package python3-itsdangerous. 441s Preparing to unpack .../58-python3-itsdangerous_2.2.0-2_all.deb ... 441s Unpacking python3-itsdangerous (2.2.0-2) ... 442s Selecting previously unselected package python3-werkzeug. 442s Preparing to unpack .../59-python3-werkzeug_3.1.3-2_all.deb ... 442s Unpacking python3-werkzeug (3.1.3-2) ... 442s Selecting previously unselected package python3-flask. 442s Preparing to unpack .../60-python3-flask_3.1.0-2ubuntu1_all.deb ... 442s Unpacking python3-flask (3.1.0-2ubuntu1) ... 443s Selecting previously unselected package python3-iniconfig. 443s Preparing to unpack .../61-python3-iniconfig_1.1.1-2_all.deb ... 443s Unpacking python3-iniconfig (1.1.1-2) ... 443s Selecting previously unselected package python3-packaging. 443s Preparing to unpack .../62-python3-packaging_24.2-1_all.deb ... 443s Unpacking python3-packaging (24.2-1) ... 444s Selecting previously unselected package python3-pluggy. 444s Preparing to unpack .../63-python3-pluggy_1.5.0-1_all.deb ... 444s Unpacking python3-pluggy (1.5.0-1) ... 444s Selecting previously unselected package python3-pyflakes. 444s Preparing to unpack .../64-python3-pyflakes_3.2.0-3_all.deb ... 444s Unpacking python3-pyflakes (3.2.0-3) ... 445s Selecting previously unselected package python3-pytest. 445s Preparing to unpack .../65-python3-pytest_8.3.5-2_all.deb ... 445s Unpacking python3-pytest (8.3.5-2) ... 446s Selecting previously unselected package vsftpd. 446s Preparing to unpack .../66-vsftpd_3.0.5-0.1_riscv64.deb ... 446s Unpacking vsftpd (3.0.5-0.1) ... 446s Setting up libgnutls-openssl27t64:riscv64 (3.8.9-2ubuntu3) ... 446s Setting up python3-iniconfig (1.1.1-2) ... 449s Setting up libzstd-dev:riscv64 (1.5.6+dfsg-2) ... 449s Setting up python3-pyflakes (3.2.0-3) ... 451s Setting up libevent-2.1-7t64:riscv64 (2.1.12-stable-10) ... 451s Setting up python3-itsdangerous (2.2.0-2) ... 453s Setting up python3-all (3.13.3-1) ... 453s Setting up libgomp1:riscv64 (15-20250404-0ubuntu1) ... 453s Setting up python3-click (8.2.0+0.really.8.1.8-1) ... 456s Setting up libpsl-dev:riscv64 (0.21.2-1.1build1) ... 456s Setting up python3-packaging (24.2-1) ... 459s Setting up libunbound8:riscv64 (1.22.0-1ubuntu1) ... 459s Setting up libpkgconf3:riscv64 (1.8.1-4) ... 459s Setting up libgmpxx4ldbl:riscv64 (2:6.3.0+dfsg-3ubuntu1) ... 459s Setting up python3-flaky (3.8.1-2) ... 461s Setting up libgnutls-dane0t64:riscv64 (3.8.9-2ubuntu3) ... 461s Setting up python3-werkzeug (3.1.3-2) ... 465s Setting up libgssrpc4t64:riscv64 (1.21.3-4ubuntu2) ... 465s Setting up libldap-dev:riscv64 (2.6.9+dfsg-2ubuntu1) ... 465s Setting up comerr-dev:riscv64 (2.1-1.47.2-1ubuntu1) ... 465s Setting up libssl-dev:riscv64 (3.4.1-1ubuntu3) ... 465s Setting up libmpc3:riscv64 (1.3.1-1build2) ... 465s Setting up pkgconf-bin (1.8.1-4) ... 465s Setting up vsftpd (3.0.5-0.1) ... 473s Created symlink '/etc/systemd/system/multi-user.target.wants/vsftpd.service' → '/usr/lib/systemd/system/vsftpd.service'. 473s /usr/lib/tmpfiles.d/vsftpd.conf:1: Line references path below legacy directory /var/run/, updating /var/run/vsftpd/empty → /run/vsftpd/empty; please update the tmpfiles.d/ drop-in file accordingly. 478s Setting up libidn2-dev:riscv64 (2.3.8-2) ... 478s Setting up python3-pluggy (1.5.0-1) ... 481s Setting up libubsan1:riscv64 (15-20250404-0ubuntu1) ... 481s Setting up zlib1g-dev:riscv64 (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 481s Setting up libasan8:riscv64 (15-20250404-0ubuntu1) ... 481s Setting up libtsan2:riscv64 (15-20250404-0ubuntu1) ... 481s Setting up libisl23:riscv64 (0.27-1) ... 481s Setting up libtasn1-6-dev:riscv64 (4.20.0-2) ... 481s Setting up libcc1-0:riscv64 (15-20250404-0ubuntu1) ... 481s Setting up libbrotli-dev:riscv64 (1.1.0-2build4) ... 481s Setting up liblsan0:riscv64 (15-20250404-0ubuntu1) ... 481s Setting up libp11-kit-dev:riscv64 (0.25.5-2ubuntu3) ... 481s Setting up libitm1:riscv64 (15-20250404-0ubuntu1) ... 481s Setting up libkadm5clnt-mit12:riscv64 (1.21.3-4ubuntu2) ... 481s Setting up libgmp-dev:riscv64 (2:6.3.0+dfsg-3ubuntu1) ... 481s Setting up nettle-dev:riscv64 (3.10.1-1) ... 481s Setting up libkdb5-10t64:riscv64 (1.21.3-4ubuntu2) ... 481s Setting up python3-pytest (8.3.5-2) ... 486s Setting up python3-flask (3.1.0-2ubuntu1) ... 488s Setting up cpp-14-riscv64-linux-gnu (14.2.0-19ubuntu2) ... 488s Setting up pkgconf:riscv64 (1.8.1-4) ... 488s Setting up libssh2-1-dev:riscv64 (1.11.1-1) ... 488s Setting up cpp-14 (14.2.0-19ubuntu2) ... 488s Setting up libkadm5srv-mit12:riscv64 (1.21.3-4ubuntu2) ... 488s Setting up libgcc-14-dev:riscv64 (14.2.0-19ubuntu2) ... 488s Setting up cpp-riscv64-linux-gnu (4:14.2.0-1ubuntu1) ... 488s Setting up libstdc++-14-dev:riscv64 (14.2.0-19ubuntu2) ... 488s Setting up krb5-multidev:riscv64 (1.21.3-4ubuntu2) ... 488s Setting up libgnutls28-dev:riscv64 (3.8.9-2ubuntu3) ... 488s Setting up libnghttp2-dev:riscv64 (1.64.0-1ubuntu1) ... 488s Setting up libkrb5-dev:riscv64 (1.21.3-4ubuntu2) ... 488s Setting up librtmp-dev:riscv64 (2.4+20151223.gitfa8646d.1-2build7) ... 488s Setting up gcc-14-riscv64-linux-gnu (14.2.0-19ubuntu2) ... 488s Setting up cpp (4:14.2.0-1ubuntu1) ... 489s Setting up g++-14-riscv64-linux-gnu (14.2.0-19ubuntu2) ... 489s Setting up libcurl4-gnutls-dev:riscv64 (8.12.1-3ubuntu1) ... 489s Setting up gcc-14 (14.2.0-19ubuntu2) ... 489s Setting up gcc-riscv64-linux-gnu (4:14.2.0-1ubuntu1) ... 489s Setting up g++-riscv64-linux-gnu (4:14.2.0-1ubuntu1) ... 489s Setting up g++-14 (14.2.0-19ubuntu2) ... 489s Setting up gcc (4:14.2.0-1ubuntu1) ... 489s Setting up g++ (4:14.2.0-1ubuntu1) ... 489s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 489s Setting up build-essential (12.12ubuntu1) ... 489s Processing triggers for libc-bin (2.41-6ubuntu1) ... 489s Processing triggers for man-db (2.13.0-1) ... 495s Processing triggers for install-info (7.1.1-1) ... 507s autopkgtest [09:44:18]: test livetest.sh: [----------------------- 510s Python 3.13.3 510s make -C tests/fake-curl/libcurl 510s make[1]: Entering directory '/tmp/autopkgtest.cLx9Jk/build.NLI/src/tests/fake-curl/libcurl' 510s `curl-config --cc` `curl-config --cflags` -shared -fPIC \ 510s -Wl,-soname,with_gnutls.so -o with_gnutls.so with_gnutls.c 512s `curl-config --cc` `curl-config --cflags` -shared -fPIC \ 512s -Wl,-soname,with_nss.so -o with_nss.so with_nss.c 513s `curl-config --cc` `curl-config --cflags` -shared -fPIC \ 513s -Wl,-soname,with_openssl.so -o with_openssl.so with_openssl.c 515s `curl-config --cc` `curl-config --cflags` -shared -fPIC \ 515s -Wl,-soname,with_unknown_ssl.so -o with_unknown_ssl.so with_unknown_ssl.c 516s `curl-config --cc` `curl-config --cflags` -shared -fPIC \ 516s -Wl,-soname,without_ssl.so -o without_ssl.so without_ssl.c 517s make[1]: Leaving directory '/tmp/autopkgtest.cLx9Jk/build.NLI/src/tests/fake-curl/libcurl' 517s ./tests/run.sh 518s + test -n python3.13 518s + test -n python3.13 -m pytest 518s + mkdir -p tests/tmp 518s + + python3.13 -V 518s + awk -F. {print $1} 518s awk {print $2} 518s + export PYTHONMAJOR=3 518s + python3.13 -V 518s + awk -F. {print $2} 518s + awk {print $2} 518s + export PYTHONMINOR=13 518s + ls -d build/lib.*3*13 518s ls: cannot access 'build/lib.*3*13': No such file or directory 518s + export PYTHONPATH=: 518s + extra_attrs= 518s + test = true 518s + python3.13 -c import pycurl; print(pycurl.version) 518s PycURL/7.45.4 libcurl/8.12.1 GnuTLS/3.8.9 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.64.0 librtmp/2.3 OpenLDAP/2.6.9 518s + python3.13 -m pytest -v 523s ============================= test session starts ============================== 523s platform linux -- Python 3.13.3, pytest-8.3.5, pluggy-1.5.0 -- /usr/bin/python3.13 523s cachedir: .pytest_cache 523s rootdir: /tmp/autopkgtest.cLx9Jk/build.NLI/src 523s configfile: pytest.ini 523s plugins: typeguard-4.4.2, flaky-3.8.1 531s collecting ... collected 460 items / 2 deselected / 458 selected 531s 532s tests/cadata_test.py::CaCertsTest::test_request_with_verifypeer SKIPPED [ 0%] 532s tests/cadata_test.py::CaCertsTest::test_set_ca_certs_bogus_type SKIPPED [ 0%] 532s tests/cadata_test.py::CaCertsTest::test_set_ca_certs_bytes SKIPPED (...) [ 0%] 532s tests/certinfo_test.py::CertinfoTest::test_certinfo_option PASSED [ 0%] 532s tests/certinfo_test.py::CertinfoTest::test_getinfo_raw_certinfo SKIPPED [ 1%] 532s tests/certinfo_test.py::CertinfoTest::test_request_with_certinfo SKIPPED [ 1%] 532s tests/certinfo_test.py::CertinfoTest::test_request_without_certinfo FAILED [ 1%] 532s tests/close_socket_cb_test.py::CloseSocketCbTest::test_closesocketfunction_bogus_return PASSED [ 1%] 532s tests/close_socket_cb_test.py::CloseSocketCbTest::test_closesocketfunction_fail PASSED [ 1%] 532s tests/close_socket_cb_test.py::CloseSocketCbTest::test_closesocketfunction_ok PASSED [ 2%] 532s tests/close_socket_cb_test.py::CloseSocketCbUnsetTest::test_closesocketfunction_none PASSED [ 2%] 532s tests/close_socket_cb_test.py::CloseSocketCbUnsetTest::test_closesocketfunction_unset PASSED [ 2%] 532s tests/curl_object_test.py::ExplicitConstructionCurlObjectTest::test_close PASSED [ 2%] 532s tests/curl_object_test.py::ExplicitConstructionCurlObjectTest::test_close_twice PASSED [ 3%] 532s tests/curl_object_test.py::ExplicitConstructionCurlObjectTest::test_keyword_arguments PASSED [ 3%] 532s tests/curl_object_test.py::ExplicitConstructionCurlObjectTest::test_positional_arguments PASSED [ 3%] 532s tests/curl_object_test.py::CurlObjectTest::test_bogus_attribute_access PASSED [ 3%] 532s tests/curl_object_test.py::CurlObjectTest::test_bogus_attribute_delete PASSED [ 3%] 532s tests/curl_object_test.py::CurlObjectTest::test_delete_attribute_curl PASSED [ 4%] 532s tests/curl_object_test.py::CurlObjectTest::test_delete_attribute_multi PASSED [ 4%] 532s tests/curl_object_test.py::CurlObjectTest::test_delete_attribute_share PASSED [ 4%] 532s tests/curl_object_test.py::CurlObjectTest::test_delete_missing_attribute_curl PASSED [ 4%] 532s tests/curl_object_test.py::CurlObjectTest::test_delete_missing_attribute_curl_multi PASSED [ 5%] 532s tests/curl_object_test.py::CurlObjectTest::test_delete_missing_attribute_curl_share PASSED [ 5%] 532s tests/curl_object_test.py::CurlObjectTest::test_get_attribute_curl PASSED [ 5%] 532s tests/curl_object_test.py::CurlObjectTest::test_get_attribute_multi PASSED [ 5%] 532s tests/curl_object_test.py::CurlObjectTest::test_get_attribute_share PASSED [ 5%] 532s tests/curl_object_test.py::CurlObjectTest::test_get_missing_attribute_curl PASSED [ 6%] 532s tests/curl_object_test.py::CurlObjectTest::test_get_missing_attribute_curl_multi PASSED [ 6%] 532s tests/curl_object_test.py::CurlObjectTest::test_get_missing_attribute_curl_share PASSED [ 6%] 532s tests/curl_object_test.py::CurlObjectTest::test_modify_attribute_curl PASSED [ 6%] 532s tests/curl_object_test.py::CurlObjectTest::test_modify_attribute_multi PASSED [ 6%] 532s tests/curl_object_test.py::CurlObjectTest::test_modify_attribute_share PASSED [ 7%] 533s tests/curl_object_test.py::CurlObjectTest::test_set_attribute_curl PASSED [ 7%] 533s tests/curl_object_test.py::CurlObjectTest::test_set_attribute_multi PASSED [ 7%] 533s tests/curl_object_test.py::CurlObjectTest::test_set_attribute_share PASSED [ 7%] 533s tests/debug_test.py::DebugTest::test_debug_unicode FAILED [ 8%] 533s tests/debug_test.py::DebugTest::test_perform_get_with_debug_function FAILED [ 8%] 533s tests/default_write_cb_test.py::DefaultWriteCbTest::test_perform_get PASSED [ 8%] 533s tests/duphandle_test.py::DuphandleTest::test_duphandle_attribute_dict PASSED [ 8%] 533s tests/duphandle_test.py::DuphandleTest::test_duphandle_httppost_unsetopt FAILED [ 8%] 533s tests/duphandle_test.py::DuphandleTest::test_duphandle_httppost_xdecref FAILED [ 9%] 533s tests/duphandle_test.py::DuphandleTest::test_duphandle_references FAILED [ 9%] 533s tests/duphandle_test.py::DuphandleTest::test_duphandle_slist_unsetopt FAILED [ 9%] 534s tests/duphandle_test.py::DuphandleTest::test_duphandle_slist_xdecref FAILED [ 9%] 534s tests/error_constants_test.py::ErrorConstantsTest::test_ftp_accept_failed PASSED [ 10%] 534s tests/error_constants_test.py::ErrorConstantsTest::test_not_built_in PASSED [ 10%] 534s tests/error_constants_test.py::ErrorConstantsTest::test_pinnedpubkeynotmatch PASSED [ 10%] 534s tests/error_constants_test.py::ErrorConstantsTest::test_unknown_option PASSED [ 10%] 534s tests/error_test.py::ErrorTest::test_pycurl_error_libcurl PASSED [ 10%] 534s tests/error_test.py::ErrorTest::test_pycurl_error_stdlib PASSED [ 11%] 534s tests/error_test.py::ErrorTest::test_pycurl_errstr_initially_empty PASSED [ 11%] 534s tests/error_test.py::ErrorTest::test_pycurl_errstr_type PASSED [ 11%] 534s tests/failonerror_test.py::FailonerrorTest::test_failonerror SKIPPED [ 11%] 534s tests/failonerror_test.py::FailonerrorTest::test_failonerror_status_line_invalid_utf8_python2 SKIPPED [ 12%] 534s tests/failonerror_test.py::FailonerrorTest::test_failonerror_status_line_invalid_utf8_python3 SKIPPED [ 12%] 534s tests/ftp_test.py::FtpTest::test_epsv PASSED [ 12%] 534s tests/ftp_test.py::FtpTest::test_get_ftp PASSED [ 12%] 534s tests/ftp_test.py::FtpTest::test_quote PASSED [ 12%] 534s tests/getinfo_test.py::GetinfoTest::test_getinfo FAILED [ 13%] 534s tests/getinfo_test.py::GetinfoTest::test_getinfo_content_type_invalid_utf8_python2 SKIPPED [ 13%] 534s tests/getinfo_test.py::GetinfoTest::test_getinfo_content_type_invalid_utf8_python3 FAILED [ 13%] 534s tests/getinfo_test.py::GetinfoTest::test_getinfo_cookie_invalid_utf8_python2 SKIPPED [ 13%] 534s tests/getinfo_test.py::GetinfoTest::test_getinfo_cookie_invalid_utf8_python3 FAILED [ 13%] 535s tests/getinfo_test.py::GetinfoTest::test_getinfo_effective_method FAILED [ 14%] 535s tests/getinfo_test.py::GetinfoTest::test_getinfo_number FAILED [ 14%] 535s tests/getinfo_test.py::GetinfoTest::test_getinfo_raw_content_type_invalid_utf8 SKIPPED [ 14%] 535s tests/getinfo_test.py::GetinfoTest::test_getinfo_raw_cookie_invalid_utf8 SKIPPED [ 14%] 535s tests/getinfo_test.py::GetinfoTest::test_getinfo_raw_number FAILED [ 15%] 535s tests/getinfo_test.py::GetinfoTest::test_getinfo_times FAILED [ 15%] 535s tests/getinfo_test.py::GetinfoTest::test_primary_port_etc FAILED [ 15%] 535s tests/global_init_test.py::GlobalInitTest::test_global_init_ack_eintr PASSED [ 15%] 535s tests/global_init_test.py::GlobalInitTest::test_global_init_bogus PASSED [ 15%] 535s tests/global_init_test.py::GlobalInitTest::test_global_init_default PASSED [ 16%] 535s tests/header_cb_test.py::HeaderCbTest::test_get FAILED [ 16%] 535s tests/header_test.py::HeaderTest::test_ascii_string_header FAILED [ 16%] 535s tests/header_test.py::HeaderTest::test_ascii_unicode_header FAILED [ 16%] 536s tests/header_test.py::HeaderTest::test_encoded_unicode_header FAILED [ 17%] 536s tests/header_test.py::HeaderTest::test_unicode_string_header PASSED [ 17%] 536s tests/header_test.py::HeaderTest::test_unicode_unicode_header PASSED [ 17%] 536s tests/high_level_curl_test.py::RelativeUrlTest::test_get FAILED [ 17%] 536s tests/high_level_curl_test.py::RelativeUrlTest::test_head FAILED [ 17%] 536s tests/high_level_curl_test.py::RelativeUrlTest::test_reuse FAILED [ 18%] 536s tests/info_constants_test.py::InfoConstantsTest::test_condition_unmet PASSED [ 18%] 536s tests/info_test.py::InfoTest::test_ssl_engines PASSED [ 18%] 536s tests/internals_test.py::InternalsTest::test_add_closed_handle PASSED [ 18%] 536s tests/internals_test.py::InternalsTest::test_add_handle_on_multiple_stacks PASSED [ 18%] 536s tests/internals_test.py::InternalsTest::test_add_handle_twice PASSED [ 19%] 536s tests/internals_test.py::InternalsTest::test_constant_aliasing PASSED [ 19%] 536s tests/internals_test.py::InternalsTest::test_copy_curl PASSED [ 19%] 536s tests/internals_test.py::InternalsTest::test_copy_multi PASSED [ 19%] 536s tests/internals_test.py::InternalsTest::test_copy_share PASSED [ 20%] 536s tests/internals_test.py::InternalsTest::test_move_handle PASSED [ 20%] 536s tests/internals_test.py::InternalsTest::test_pickle_curl PASSED [ 20%] 536s tests/internals_test.py::InternalsTest::test_pickle_dumps_curl PASSED [ 20%] 536s tests/internals_test.py::InternalsTest::test_pickle_dumps_multi PASSED [ 20%] 536s tests/internals_test.py::InternalsTest::test_pickle_dumps_share PASSED [ 21%] 536s tests/internals_test.py::InternalsTest::test_pickle_multi PASSED [ 21%] 536s tests/internals_test.py::InternalsTest::test_pickle_share PASSED [ 21%] 536s tests/internals_test.py::InternalsTest::test_remove_invalid_closed_handle PASSED [ 21%] 536s tests/internals_test.py::InternalsTest::test_remove_invalid_handle PASSED [ 22%] 536s tests/memory_mgmt_test.py::MemoryMgmtTest::test_cyclic_gc PASSED [ 22%] 536s tests/memory_mgmt_test.py::MemoryMgmtTest::test_debugfunction_collection PASSED [ 22%] 540s tests/memory_mgmt_test.py::MemoryMgmtTest::test_form_bufferptr_memory_leak_gh267 PASSED [ 22%] 540s tests/memory_mgmt_test.py::MemoryMgmtTest::test_headerfunction_collection PASSED [ 22%] 540s tests/memory_mgmt_test.py::MemoryMgmtTest::test_headerfunction_refcounting PASSED [ 23%] 541s tests/memory_mgmt_test.py::MemoryMgmtTest::test_ioctlfunction_collection PASSED [ 23%] 549s tests/memory_mgmt_test.py::MemoryMgmtTest::test_multi_collection PASSED [ 23%] 558s tests/memory_mgmt_test.py::MemoryMgmtTest::test_multi_cycle PASSED [ 23%] 558s tests/memory_mgmt_test.py::MemoryMgmtTest::test_opensocketfunction_collection PASSED [ 24%] 559s tests/memory_mgmt_test.py::MemoryMgmtTest::test_postfields_unicode_memory_leak_gh252 PASSED [ 24%] 559s tests/memory_mgmt_test.py::MemoryMgmtTest::test_progressfunction_collection PASSED [ 24%] 559s tests/memory_mgmt_test.py::MemoryMgmtTest::test_readdata_refcounting PASSED [ 24%] 559s tests/memory_mgmt_test.py::MemoryMgmtTest::test_readfunction_collection PASSED [ 24%] 560s tests/memory_mgmt_test.py::MemoryMgmtTest::test_readfunction_refcounting PASSED [ 25%] 566s tests/memory_mgmt_test.py::MemoryMgmtTest::test_refcounting_bug_in_reset PASSED [ 25%] 566s tests/memory_mgmt_test.py::MemoryMgmtTest::test_reference_counting PASSED [ 25%] 566s tests/memory_mgmt_test.py::MemoryMgmtTest::test_seekfunction_collection PASSED [ 25%] 575s tests/memory_mgmt_test.py::MemoryMgmtTest::test_share_collection PASSED [ 25%] 584s tests/memory_mgmt_test.py::MemoryMgmtTest::test_share_cycle PASSED [ 26%] 584s tests/memory_mgmt_test.py::MemoryMgmtTest::test_writedata_refcounting PASSED [ 26%] 584s tests/memory_mgmt_test.py::MemoryMgmtTest::test_writefunction_collection PASSED [ 26%] 585s tests/memory_mgmt_test.py::MemoryMgmtTest::test_writefunction_refcounting PASSED [ 26%] 585s tests/memory_mgmt_test.py::MemoryMgmtTest::test_writeheader_refcounting PASSED [ 27%] 585s tests/memory_mgmt_test.py::MemoryMgmtTest::test_xferinfofunction_collection PASSED [ 27%] 585s tests/multi_callback_test.py::MultiCallbackTest::test_easy_close FAILED [ 27%] 585s tests/multi_callback_test.py::MultiCallbackTest::test_easy_pause_unpause FAILED [ 27%] 585s tests/multi_callback_test.py::MultiCallbackTest::test_multi_add_handle PASSED [ 27%] 585s tests/multi_callback_test.py::MultiCallbackTest::test_multi_remove_handle PASSED [ 28%] 585s tests/multi_callback_test.py::MultiCallbackTest::test_multi_socket_action PASSED [ 28%] 585s tests/multi_memory_mgmt_test.py::MultiMemoryMgmtTest::test_curl_ref PASSED [ 28%] 586s tests/multi_memory_mgmt_test.py::MultiMemoryMgmtTest::test_opensocketfunction_collection PASSED [ 28%] 586s tests/multi_memory_mgmt_test.py::MultiMemoryMgmtTest::test_seekfunction_collection PASSED [ 29%] 586s tests/multi_option_constants_test.py::MultiOptionConstantsTest::test_multi_callback_opts PASSED [ 29%] 586s tests/multi_option_constants_test.py::MultiOptionConstantsTest::test_multi_pipeline_opts PASSED [ 29%] 586s tests/multi_option_constants_test.py::MultiOptionConstantsTest::test_multi_pipelining_server_bl PASSED [ 29%] 586s tests/multi_option_constants_test.py::MultiOptionConstantsTest::test_multi_pipelining_site_bl PASSED [ 29%] 586s tests/multi_option_constants_test.py::MultiOptionConstantsTest::test_multi_unsetopt_unsupported PASSED [ 30%] 586s tests/multi_option_constants_test.py::MultiOptionConstantsTest::test_option_constant_on_curlmulti PASSED [ 30%] 586s tests/multi_option_constants_test.py::MultiOptionConstantsTest::test_option_constant_on_pycurl PASSED [ 30%] 586s tests/multi_option_constants_test.py::MultiOptionConstantsTest::test_pipe_constants PASSED [ 30%] 587s tests/multi_socket_select_test.py::MultiSocketSelectTest::test_multi_socket_select FAILED [ 31%] 587s tests/multi_socket_test.py::MultiSocketTest::test_multi_socket FAILED [ 31%] 587s tests/multi_test.py::MultiTest::test_adding_closed_handle_close_then_remove FAILED [ 31%] 587s tests/multi_test.py::MultiTest::test_adding_closed_handle_close_without_removing FAILED [ 31%] 587s tests/multi_test.py::MultiTest::test_adding_closed_handle_remove_then_close FAILED [ 31%] 587s tests/multi_test.py::MultiTest::test_keyword_arguments PASSED [ 32%] 587s tests/multi_test.py::MultiTest::test_multi FAILED [ 32%] 587s tests/multi_test.py::MultiTest::test_multi_close PASSED [ 32%] 587s tests/multi_test.py::MultiTest::test_multi_close_twice PASSED [ 32%] 588s tests/multi_test.py::MultiTest::test_multi_info_read FAILED [ 32%] 588s tests/multi_test.py::MultiTest::test_multi_info_read_some PASSED [ 33%] 588s tests/multi_test.py::MultiTest::test_multi_select FAILED [ 33%] 588s tests/multi_test.py::MultiTest::test_multi_select_fdset FAILED [ 33%] 588s tests/multi_test.py::MultiTest::test_multi_status_codes FAILED [ 33%] 588s tests/multi_test.py::MultiTest::test_positional_arguments PASSED [ 34%] 588s tests/multi_timer_test.py::MultiSocketTest::test_multi_timer FAILED [ 34%] 588s tests/open_socket_cb_test.py::OpenSocketCbTest::test_socket_bad PASSED [ 34%] 588s tests/open_socket_cb_test.py::OpenSocketCbTest::test_socket_open FAILED [ 34%] 588s tests/open_socket_cb_test.py::OpenSocketCbTest::test_socket_open_bad PASSED [ 34%] 588s tests/open_socket_cb_test.py::OpenSocketCbTest::test_socket_open_ipv6 PASSED [ 35%] 588s tests/open_socket_cb_test.py::OpenSocketCbTest::test_socket_open_none PASSED [ 35%] 588s tests/open_socket_cb_test.py::OpenSocketCbTest::test_socket_open_unix PASSED [ 35%] 588s tests/open_socket_cb_test.py::OpenSocketCbTest::test_unset_socket_open PASSED [ 35%] 588s tests/option_constants_test.py::OptionConstantsTest::test_aws_sigv4 PASSED [ 36%] 588s tests/option_constants_test.py::OptionConstantsTest::test_cainfo PASSED [ 36%] 588s tests/option_constants_test.py::OptionConstantsTest::test_cainfo_blob SKIPPED [ 36%] 588s tests/option_constants_test.py::OptionConstantsTest::test_capath PASSED [ 36%] 588s tests/option_constants_test.py::OptionConstantsTest::test_crlfile PASSED [ 36%] 588s tests/option_constants_test.py::OptionConstantsTest::test_curlproxy_http_1_0_setopt PASSED [ 37%] 588s tests/option_constants_test.py::OptionConstantsTest::test_dns_servers PASSED [ 37%] 588s tests/option_constants_test.py::OptionConstantsTest::test_egdsocket PASSED [ 37%] 588s tests/option_constants_test.py::OptionConstantsTest::test_gssapi_delegation_options PASSED [ 37%] 588s tests/option_constants_test.py::OptionConstantsTest::test_haproxy_client_ip PASSED [ 37%] 588s tests/option_constants_test.py::OptionConstantsTest::test_http09_allowed_option PASSED [ 38%] 588s tests/option_constants_test.py::OptionConstantsTest::test_httpauth_digest_ie PASSED [ 38%] 588s tests/option_constants_test.py::OptionConstantsTest::test_issuercert PASSED [ 38%] 588s tests/option_constants_test.py::OptionConstantsTest::test_issuercert_blob PASSED [ 38%] 588s tests/option_constants_test.py::OptionConstantsTest::test_krb4level PASSED [ 39%] 588s tests/option_constants_test.py::OptionConstantsTest::test_krblevel PASSED [ 39%] 588s tests/option_constants_test.py::OptionConstantsTest::test_legacy_proxy_sslversion_options SKIPPED [ 39%] 588s tests/option_constants_test.py::OptionConstantsTest::test_legacy_sslversion_options SKIPPED [ 39%] 589s tests/option_constants_test.py::OptionConstantsTest::test_mail_auth PASSED [ 39%] 589s tests/option_constants_test.py::OptionConstantsTest::test_mail_from PASSED [ 40%] 589s tests/option_constants_test.py::OptionConstantsTest::test_mail_rcpt PASSED [ 40%] 589s tests/option_constants_test.py::OptionConstantsTest::test_noproxy_setopt PASSED [ 40%] 589s tests/option_constants_test.py::OptionConstantsTest::test_operation_timedout_constant PASSED [ 40%] 589s tests/option_constants_test.py::OptionConstantsTest::test_pinnedpublickey PASSED [ 41%] 589s tests/option_constants_test.py::OptionConstantsTest::test_postredir PASSED [ 41%] 589s tests/option_constants_test.py::OptionConstantsTest::test_postredir_flags PASSED [ 41%] 589s tests/option_constants_test.py::OptionConstantsTest::test_postredir_post_303 PASSED [ 41%] 589s tests/option_constants_test.py::OptionConstantsTest::test_postredir_setopt PASSED [ 41%] 589s tests/option_constants_test.py::OptionConstantsTest::test_protocols_setopt PASSED [ 42%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_cainfo_blob SKIPPED [ 42%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_capath PASSED [ 42%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_crlfile PASSED [ 42%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_issuercert PASSED [ 43%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_issuercert_blob PASSED [ 43%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_keypasswd PASSED [ 43%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_pinnedpublickey PASSED [ 43%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_service_name PASSED [ 43%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_ssl_cipher_list SKIPPED [ 44%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_ssl_options PASSED [ 44%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_ssl_verifyhost PASSED [ 44%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_ssl_verifypeer PASSED [ 44%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_sslcert PASSED [ 44%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_sslcert_blob PASSED [ 45%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_sslcerttype PASSED [ 45%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_sslkey PASSED [ 45%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_sslkey_blob PASSED [ 45%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_sslkeytype PASSED [ 46%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_sslversion_options PASSED [ 46%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_tls13_ciphers SKIPPED [ 46%] 589s tests/option_constants_test.py::OptionConstantsTest::test_proxy_tlsauth PASSED [ 46%] 589s tests/option_constants_test.py::OptionConstantsTest::test_random_file PASSED [ 46%] 589s tests/option_constants_test.py::OptionConstantsTest::test_redir_post_303 PASSED [ 47%] 589s tests/option_constants_test.py::OptionConstantsTest::test_redir_protocols_setopt PASSED [ 47%] 589s tests/option_constants_test.py::OptionConstantsTest::test_request_target_option PASSED [ 47%] 589s tests/option_constants_test.py::OptionConstantsTest::test_service_name PASSED [ 47%] 589s tests/option_constants_test.py::OptionConstantsTest::test_socks5_gssapi_nec_setopt PASSED [ 48%] 589s tests/option_constants_test.py::OptionConstantsTest::test_socks5_gssapi_service_setopt PASSED [ 48%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssh_knownhosts_setopt PASSED [ 48%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssl_cipher_list SKIPPED [ 48%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssl_enable_alpn PASSED [ 48%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssl_enable_npn PASSED [ 49%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssl_falsestart SKIPPED [ 49%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssl_option_no_revoke PASSED [ 49%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssl_options PASSED [ 49%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssl_sessionid_cache PASSED [ 50%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssl_verifyhost PASSED [ 50%] 589s tests/option_constants_test.py::OptionConstantsTest::test_ssl_verifystatus SKIPPED [ 50%] 589s tests/option_constants_test.py::OptionConstantsTest::test_sslcert_blob PASSED [ 50%] 589s tests/option_constants_test.py::OptionConstantsTest::test_sslkey_blob PASSED [ 50%] 589s tests/option_constants_test.py::OptionConstantsTest::test_sslversion_7_34_0 PASSED [ 51%] 589s tests/option_constants_test.py::OptionConstantsTest::test_sslversion_options PASSED [ 51%] 589s tests/option_constants_test.py::OptionConstantsTest::test_tftp_blksize_setopt PASSED [ 51%] 589s tests/option_constants_test.py::OptionConstantsTest::test_tls13_ciphers SKIPPED [ 51%] 589s tests/option_constants_test.py::OptionConstantsTest::test_unix_socket_path PASSED [ 51%] 589s tests/option_constants_test.py::OptionConstantsTest::test_username PASSED [ 52%] 589s tests/option_constants_test.py::OptionConstantsTest::test_wildcardmatch PASSED [ 52%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_accept_encoding PASSED [ 52%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_accepttimeout_ms PASSED [ 52%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_append PASSED [ 53%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_cookielist_constants PASSED [ 53%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_cookiesession PASSED [ 53%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_default_protocol PASSED [ 53%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_dirlistonly PASSED [ 53%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_encoding PASSED [ 54%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_expect_100_timeout_ms PASSED [ 54%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_ftp_use_pret PASSED [ 54%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_headeropt PASSED [ 54%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_http_version PASSED [ 55%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_http_version_2 PASSED [ 55%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_http_version_2_0 PASSED [ 55%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_http_version_2prior_knowledge PASSED [ 55%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_http_version_2tls PASSED [ 55%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_http_version_3 SKIPPED [ 56%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_http_version_3only SKIPPED [ 56%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_keypasswd PASSED [ 56%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_login_options PASSED [ 56%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_path_as_is PASSED [ 56%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_pipewait PASSED [ 57%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_proto_smb PASSED [ 57%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_sasl_ir PASSED [ 57%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_sockopt_constants PASSED [ 57%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_tcp_keepalive PASSED [ 58%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_tcp_keepidle PASSED [ 58%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_tcp_keepintvl PASSED [ 58%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_telnetoptions PASSED [ 58%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_tlsauth PASSED [ 58%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_transfer_encoding PASSED [ 59%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_use_ssl PASSED [ 59%] 589s tests/option_constants_test.py::OptionConstantsSettingTest::test_xauth_bearer PASSED [ 59%] 593s tests/pause_test.py::PauseTest::test_pause_via_call FAILED [ 59%] 596s tests/pause_test.py::PauseTest::test_pause_via_return FAILED [ 60%] 596s tests/perform_test.py::PerformTest::test_perform_rb FAILED [ 60%] 596s tests/perform_test.py::PerformTest::test_perform_rb_invalid_utf8 FAILED [ 60%] 596s tests/perform_test.py::PerformTest::test_perform_rb_utf8 FAILED [ 60%] 596s tests/perform_test.py::PerformTest::test_perform_rs FAILED [ 60%] 596s tests/perform_test.py::PerformTest::test_perform_rs_invalid_utf8_python2 SKIPPED [ 61%] 596s tests/perform_test.py::PerformTest::test_perform_rs_invalid_utf8_python3 FAILED [ 61%] 596s tests/perform_test.py::PerformTest::test_perform_rs_utf8 FAILED [ 61%] 597s tests/post_test.py::PostTest::test_post_byte_buffer FAILED [ 61%] 597s tests/post_test.py::PostTest::test_post_fields_with_ampersand FAILED [ 62%] 597s tests/post_test.py::PostTest::test_post_file FAILED [ 62%] 597s tests/post_test.py::PostTest::test_post_list_of_list_of_lists FAILED [ 62%] 598s tests/post_test.py::PostTest::test_post_list_of_tuple_of_tuples FAILED [ 62%] 598s tests/post_test.py::PostTest::test_post_multiple_fields FAILED [ 62%] 598s tests/post_test.py::PostTest::test_post_single_field FAILED [ 63%] 598s tests/post_test.py::PostTest::test_post_tuple_of_lists_of_tuples FAILED [ 63%] 598s tests/post_test.py::PostTest::test_post_tuple_of_tuple_of_lists FAILED [ 63%] 599s tests/post_test.py::PostTest::test_post_tuple_of_tuples_of_tuples FAILED [ 63%] 599s tests/post_test.py::PostTest::test_post_unicode_buffer FAILED [ 63%] 599s tests/post_test.py::PostTest::test_post_with_null_byte FAILED [ 64%] 599s tests/protocol_constants_test.py::ProtocolConstantsTest::test_7_19_4_protocols PASSED [ 64%] 599s tests/protocol_constants_test.py::ProtocolConstantsTest::test_7_20_0_protocols PASSED [ 64%] 599s tests/protocol_constants_test.py::ProtocolConstantsTest::test_7_21_0_protocols PASSED [ 64%] 599s tests/protocol_constants_test.py::ProtocolConstantsTest::test_7_21_2_protocols PASSED [ 65%] 599s tests/read_cb_test.py::ReadCbTest::test_post_with_read_callback FAILED [ 65%] 600s tests/read_cb_test.py::ReadCbTest::test_post_with_read_callback_returning_bytes FAILED [ 65%] 600s tests/read_cb_test.py::ReadCbTest::test_post_with_read_callback_returning_bytes_with_multibyte FAILED [ 65%] 600s tests/read_cb_test.py::ReadCbTest::test_post_with_read_callback_returning_bytes_with_nulls FAILED [ 65%] 600s tests/read_cb_test.py::ReadCbTest::test_post_with_read_callback_returning_unicode FAILED [ 66%] 601s tests/read_cb_test.py::ReadCbTest::test_post_with_read_callback_returning_unicode_with_multibyte PASSED [ 66%] 601s tests/read_cb_test.py::ReadCbTest::test_post_with_read_callback_returning_unicode_with_nulls FAILED [ 66%] 601s tests/readdata_test.py::ReaddataTest::test_post_with_read_callback_returning_unicode FAILED [ 66%] 601s tests/readdata_test.py::ReaddataTest::test_post_with_read_callback_returning_unicode_with_multibyte PASSED [ 67%] 601s tests/readdata_test.py::ReaddataTest::test_post_with_read_callback_returning_unicode_with_nulls FAILED [ 67%] 602s tests/readdata_test.py::ReaddataTest::test_post_with_read_returning_bytes FAILED [ 67%] 602s tests/readdata_test.py::ReaddataTest::test_post_with_read_returning_bytes_with_multibyte FAILED [ 67%] 602s tests/readdata_test.py::ReaddataTest::test_post_with_read_returning_bytes_with_nulls FAILED [ 67%] 602s tests/readdata_test.py::ReaddataTest::test_readdata_and_readfunction_file_like FAILED [ 68%] 603s tests/readdata_test.py::ReaddataTest::test_readdata_and_readfunction_real_file FAILED [ 68%] 603s tests/readdata_test.py::ReaddataTest::test_readdata_file_binary FAILED [ 68%] 603s tests/readdata_test.py::ReaddataTest::test_readdata_file_like FAILED [ 68%] 603s tests/readdata_test.py::ReaddataTest::test_readdata_file_text FAILED [ 68%] 603s tests/readdata_test.py::ReaddataTest::test_readdata_not_file_like PASSED [ 69%] 603s tests/readdata_test.py::ReaddataTest::test_readdata_object FAILED [ 69%] 604s tests/readdata_test.py::ReaddataTest::test_readfunction_and_readdata_file_like FAILED [ 69%] 604s tests/readdata_test.py::ReaddataTest::test_readfunction_and_readdata_real_file FAILED [ 69%] 604s tests/relative_url_test.py::RelativeUrlTest::test_get_relative FAILED [ 70%] 604s tests/reload_test.py::ReloadTest::test_reloading PASSED [ 70%] 604s tests/reset_test.py::ResetTest::test_reset FAILED [ 70%] 604s tests/resolve_test.py::ResolveTest::test_resolve FAILED [ 70%] 604s tests/seek_cb_constants_test.py::SeekCbConstantsTest::test_cantseek PASSED [ 70%] 604s tests/seek_cb_constants_test.py::SeekCbConstantsTest::test_fail PASSED [ 71%] 604s tests/seek_cb_constants_test.py::SeekCbConstantsTest::test_ok PASSED [ 71%] 604s tests/seek_cb_test.py::SeekCbTest::test_seek_function PASSED [ 71%] 700s tests/setopt_lifecycle_test.py::SetoptLifecycleTest::test_postfields_lifecycle FAILED [ 71%] 700s tests/setopt_string_test.py::SetoptTest::test_setopt_string FAILED [ 72%] 700s tests/setopt_string_test.py::SetoptTest::test_setopt_string_integer PASSED [ 72%] 700s tests/setopt_test.py::SetoptTest::test_boolean_value PASSED [ 72%] 700s tests/setopt_test.py::SetoptTest::test_float_value_for_integer_option PASSED [ 72%] 700s tests/setopt_test.py::SetoptTest::test_httpheader_list PASSED [ 72%] 700s tests/setopt_test.py::SetoptTest::test_httpheader_tuple PASSED [ 73%] 700s tests/setopt_test.py::SetoptTest::test_httpheader_unicode PASSED [ 73%] 700s tests/setopt_test.py::SetoptTest::test_integer_value PASSED [ 73%] 700s tests/setopt_test.py::SetoptTest::test_integer_value_for_string_option PASSED [ 73%] 700s tests/setopt_test.py::SetoptTest::test_large_options PASSED [ 74%] 700s tests/setopt_test.py::SetoptTest::test_proxyheader_list PASSED [ 74%] 700s tests/setopt_test.py::SetoptTest::test_proxyheader_tuple PASSED [ 74%] 700s tests/setopt_test.py::SetoptTest::test_proxyheader_unicode PASSED [ 74%] 700s tests/setopt_test.py::SetoptTest::test_set_httpheader_none FAILED [ 74%] 700s tests/setopt_test.py::SetoptTest::test_set_proxyheader_none PASSED [ 75%] 700s tests/setopt_test.py::SetoptTest::test_string_value PASSED [ 75%] 700s tests/setopt_test.py::SetoptTest::test_string_value_for_integer_option PASSED [ 75%] 700s tests/setopt_test.py::SetoptTest::test_unset_encoding PASSED [ 75%] 701s tests/setopt_test.py::SetoptTest::test_unset_httpheader FAILED [ 75%] 701s tests/setopt_test.py::SetoptTest::test_unset_proxyheader PASSED [ 76%] 701s tests/setopt_unicode_test.py::SetoptUnicodeTest::test_ascii_string FAILED [ 76%] 701s tests/setopt_unicode_test.py::SetoptUnicodeTest::test_unicode_encoded FAILED [ 76%] 701s tests/setopt_unicode_test.py::SetoptUnicodeTest::test_unicode_string PASSED [ 76%] 701s tests/setup_test.py::SetupTest::test_does_not_use_static_libs PASSED [ 77%] 701s tests/setup_test.py::SetupTest::test_invalid_option_not_consumed PASSED [ 77%] 701s tests/setup_test.py::SetupTest::test_invalid_option_suffix_not_consumed PASSED [ 77%] 701s tests/setup_test.py::SetupTest::test_libcurl_ssl_gnutls PASSED [ 77%] 702s tests/setup_test.py::SetupTest::test_libcurl_ssl_nss PASSED [ 77%] 702s tests/setup_test.py::SetupTest::test_libcurl_ssl_openssl PASSED [ 78%] 702s tests/setup_test.py::SetupTest::test_libcurl_ssl_unrecognized PASSED [ 78%] 702s tests/setup_test.py::SetupTest::test_no_ssl PASSED [ 78%] 702s tests/setup_test.py::SetupTest::test_no_ssl_define PASSED [ 78%] 702s tests/setup_test.py::SetupTest::test_no_ssl_feature_with_libcurl_dll PASSED [ 79%] 703s tests/setup_test.py::SetupTest::test_no_ssl_feature_with_ssl PASSED [ 79%] 703s tests/setup_test.py::SetupTest::test_sanity_check PASSED [ 79%] 703s tests/setup_test.py::SetupTest::test_ssl_feature_only PASSED [ 79%] 703s tests/setup_test.py::SetupTest::test_ssl_feature_sets_ssl_define PASSED [ 79%] 703s tests/setup_test.py::SetupTest::test_ssl_in_libs PASSED [ 80%] 704s tests/setup_test.py::SetupTest::test_ssl_in_libs_sets_ssl_define PASSED [ 80%] 704s tests/setup_test.py::SetupTest::test_ssl_in_static_libs PASSED [ 80%] 704s tests/setup_test.py::SetupTest::test_ssl_in_static_libs_sets_ssl_define PASSED [ 80%] 705s tests/setup_test.py::SetupTest::test_valid_option_consumes_argv PASSED [ 81%] 705s tests/setup_test.py::SetupTest::test_with_gnutls_library PASSED [ 81%] 705s tests/setup_test.py::SetupTest::test_with_nss_library PASSED [ 81%] 705s tests/setup_test.py::SetupTest::test_with_openssl_library PASSED [ 81%] 705s tests/setup_test.py::SetupTest::test_with_ssl_library PASSED [ 81%] 705s tests/share_test.py::ShareTest::test_keyword_arguments PASSED [ 82%] 705s tests/share_test.py::ShareTest::test_positional_arguments PASSED [ 82%] 706s tests/share_test.py::ShareTest::test_share FAILED [ 82%] 706s tests/share_test.py::ShareTest::test_share_close PASSED [ 82%] 706s tests/share_test.py::ShareTest::test_share_close_twice PASSED [ 82%] 706s tests/sockopt_cb_test.py::SockoptCbTest::test_sockoptfunction_bogus_return PASSED [ 83%] 706s tests/sockopt_cb_test.py::SockoptCbTest::test_sockoptfunction_fail PASSED [ 83%] 706s tests/sockopt_cb_test.py::SockoptCbTest::test_sockoptfunction_ok PASSED [ 83%] 706s tests/sockopt_cb_test.py::SockoptCbTest::test_socktype_accept PASSED [ 83%] 706s tests/sockopt_cb_test.py::SockoptCbTest::test_socktype_ipcxn PASSED [ 84%] 706s tests/sockopt_cb_test.py::SockoptCbUnsetTest::test_sockoptfunction_none PASSED [ 84%] 706s tests/sockopt_cb_test.py::SockoptCbUnsetTest::test_sockoptfunction_unset PASSED [ 84%] 706s tests/ssh_key_cb_test.py::SshKeyCbUnsetTest::test_keyfunction_none PASSED [ 84%] 706s tests/ssh_key_cb_test.py::SshKeyCbUnsetTest::test_keyfunction_unset PASSED [ 84%] 706s tests/subclass_test.py::SubclassTest::test_baseclass_init PASSED [ 85%] 706s tests/subclass_test.py::SubclassTest::test_subclass_create PASSED [ 85%] 706s tests/subclass_test.py::SubclassTest::test_subclass_init PASSED [ 85%] 706s tests/subclass_test.py::SubclassTest::test_subclass_method PASSED [ 85%] 706s tests/subclass_test.py::SubclassTest::test_subclass_method_override PASSED [ 86%] 706s tests/unset_range_test.py::UnsetRangeTest::test_unset_range PASSED [ 86%] 706s tests/user_agent_string_test.py::UserAgentStringTest::test_pycurl_user_agent_string FAILED [ 86%] 706s tests/version_comparison_test.py::VersionComparisonTest::test_comparison PASSED [ 86%] 706s tests/version_constants_test.py::VersionConstantsTest::test_altsvc PASSED [ 86%] 706s tests/version_constants_test.py::VersionConstantsTest::test_asynchdns PASSED [ 87%] 706s tests/version_constants_test.py::VersionConstantsTest::test_brotli PASSED [ 87%] 706s tests/version_constants_test.py::VersionConstantsTest::test_conv PASSED [ 87%] 706s tests/version_constants_test.py::VersionConstantsTest::test_curldebug PASSED [ 87%] 706s tests/version_constants_test.py::VersionConstantsTest::test_debug PASSED [ 87%] 706s tests/version_constants_test.py::VersionConstantsTest::test_gssapi PASSED [ 88%] 706s tests/version_constants_test.py::VersionConstantsTest::test_gssnegotiate PASSED [ 88%] 706s tests/version_constants_test.py::VersionConstantsTest::test_hsts PASSED [ 88%] 706s tests/version_constants_test.py::VersionConstantsTest::test_http2 PASSED [ 88%] 706s tests/version_constants_test.py::VersionConstantsTest::test_http3 PASSED [ 89%] 706s tests/version_constants_test.py::VersionConstantsTest::test_https_proxy PASSED [ 89%] 706s tests/version_constants_test.py::VersionConstantsTest::test_idn PASSED [ 89%] 706s tests/version_constants_test.py::VersionConstantsTest::test_ipv6 PASSED [ 89%] 706s tests/version_constants_test.py::VersionConstantsTest::test_kerberos4 PASSED [ 89%] 706s tests/version_constants_test.py::VersionConstantsTest::test_kerberos5 PASSED [ 90%] 706s tests/version_constants_test.py::VersionConstantsTest::test_largefile PASSED [ 90%] 706s tests/version_constants_test.py::VersionConstantsTest::test_libz PASSED [ 90%] 706s tests/version_constants_test.py::VersionConstantsTest::test_multi_ssl PASSED [ 90%] 706s tests/version_constants_test.py::VersionConstantsTest::test_ntlm PASSED [ 91%] 706s tests/version_constants_test.py::VersionConstantsTest::test_ntlm_wb PASSED [ 91%] 706s tests/version_constants_test.py::VersionConstantsTest::test_psl PASSED [ 91%] 706s tests/version_constants_test.py::VersionConstantsTest::test_spnego PASSED [ 91%] 706s tests/version_constants_test.py::VersionConstantsTest::test_ssl PASSED [ 91%] 706s tests/version_constants_test.py::VersionConstantsTest::test_sspi PASSED [ 92%] 706s tests/version_constants_test.py::VersionConstantsTest::test_tlsauth_srp PASSED [ 92%] 706s tests/version_constants_test.py::VersionConstantsTest::test_unicode PASSED [ 92%] 706s tests/version_constants_test.py::VersionConstantsTest::test_unix_sockets PASSED [ 92%] 706s tests/version_constants_test.py::VersionConstantsTest::test_zstd PASSED [ 93%] 706s tests/version_test.py::VersionTest::test_libcurl_presence PASSED [ 93%] 706s tests/version_test.py::VersionTest::test_pycurl_presence_and_case PASSED [ 93%] 706s tests/weakref_test.py::WeakrefTest::test_easy PASSED [ 93%] 706s tests/weakref_test.py::WeakrefTest::test_multi PASSED [ 93%] 706s tests/weakref_test.py::WeakrefTest::test_share PASSED [ 94%] 706s tests/write_abort_test.py::WriteAbortTest::test_write_abort PASSED [ 94%] 706s tests/write_cb_bogus_test.py::WriteAbortTest::test_write_cb_returning_float PASSED [ 94%] 706s tests/write_cb_bogus_test.py::WriteAbortTest::test_write_cb_returning_string PASSED [ 94%] 707s tests/write_test.py::WriteTest::test_headerfunction_and_writefunction FAILED [ 94%] 707s tests/write_test.py::WriteTest::test_headerfunction_and_writeheader_file_like PASSED [ 95%] 707s tests/write_test.py::WriteTest::test_headerfunction_and_writeheader_real_file PASSED [ 95%] 707s tests/write_test.py::WriteTest::test_write_to_file_like FAILED [ 95%] 707s tests/write_test.py::WriteTest::test_write_to_file_like_then_real_file FAILED [ 95%] 707s tests/write_test.py::WriteTest::test_write_to_file_via_function FAILED [ 96%] 707s tests/write_test.py::WriteTest::test_write_to_file_via_object FAILED [ 96%] 707s tests/write_test.py::WriteTest::test_write_to_tempfile_via_function FAILED [ 96%] 707s tests/write_test.py::WriteTest::test_write_to_tempfile_via_object FAILED [ 96%] 708s tests/write_test.py::WriteTest::test_writedata_and_writefunction_file_like FAILED [ 96%] 708s tests/write_test.py::WriteTest::test_writedata_and_writefunction_real_file FAILED [ 97%] 708s tests/write_test.py::WriteTest::test_writedata_not_file_like PASSED [ 97%] 708s tests/write_test.py::WriteTest::test_writefunction_and_writedata_file_like FAILED [ 97%] 708s tests/write_test.py::WriteTest::test_writefunction_and_writedata_real_file FAILED [ 97%] 708s tests/write_test.py::WriteTest::test_writeheader_and_headerfunction_file_like PASSED [ 98%] 708s tests/write_test.py::WriteTest::test_writeheader_and_headerfunction_real_file PASSED [ 98%] 708s tests/write_test.py::WriteTest::test_writeheader_and_writedata_file_like FAILED [ 98%] 708s tests/write_test.py::WriteTest::test_writeheader_and_writedata_real_file FAILED [ 98%] 708s tests/write_test.py::WriteTest::test_writeheader_not_file_like PASSED [ 98%] 708s tests/write_to_stringio_test.py::WriteToStringioTest::test_write_to_bytesio FAILED [ 99%] 708s tests/write_to_stringio_test.py::WriteToStringioTest::test_write_to_stringio PASSED [ 99%] 708s tests/xferinfo_cb_test.py::XferinfoCbTest::test_sockoptfunction_exception PASSED [ 99%] 708s tests/xferinfo_cb_test.py::XferinfoCbTest::test_sockoptfunction_fail PASSED [ 99%] 708s tests/xferinfo_cb_test.py::XferinfoCbTest::test_xferinfo_cb PASSED [100%] 708s 708s =================================== FAILURES =================================== 708s __________________ CertinfoTest.test_request_without_certinfo __________________ 708s 708s self = 708s 708s @util.min_libcurl(7, 19, 1) 708s @util.only_ssl 708s def test_request_without_certinfo(self): 708s self.curl.setopt(pycurl.URL, 'https://localhost:8383/success') 708s sio = util.BytesIO() 708s self.curl.setopt(pycurl.WRITEFUNCTION, sio.write) 708s # self signed certificate 708s self.curl.setopt(pycurl.SSL_VERIFYPEER, 0) 708s > self.curl.perform() 708s E pycurl.error: (56, 'CONNECT tunnel failed, response 403') 708s 708s tests/certinfo_test.py:34: error 708s _________________________ DebugTest.test_debug_unicode _________________________ 708s 708s self = 708s 708s def test_debug_unicode(self): 708s self.curl.setopt(pycurl.VERBOSE, 1) 708s self.curl.setopt(pycurl.DEBUGFUNCTION, self.debug_function) 708s self.curl.setopt(pycurl.URL, 'http://%s:8380/utf8_body' % localhost) 708s sio = util.BytesIO() 708s self.curl.setopt(pycurl.WRITEFUNCTION, sio.write) 708s self.curl.perform() 708s 708s # 3 = response body 708s search = util.b('\xd0\x94\xd1\x80\xd1\x83\xd0\xb6\xd0\xb1\xd0\xb0 \xd0\xbd\xd0\xb0\xd1\x80\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xb2').decode('utf8') 708s > self.check(3, search.encode('utf8')) 708s 708s tests/debug_test.py:59: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s 708s self = , wanted_t = 3 708s wanted_b = b'\xd0\x94\xd1\x80\xd1\x83\xd0\xb6\xd0\xb1\xd0\xb0 \xd0\xbd\xd0\xb0\xd1\x80\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xb2' 708s 708s def check(self, wanted_t, wanted_b): 708s for t, b in self.debug_entries: 708s if t == wanted_t and wanted_b in b: 708s return 708s > assert False, "%d: %s not found in debug entries\nEntries are:\n%s" % \ 708s (wanted_t, repr(wanted_b), repr(self.debug_entries)) 708s E AssertionError: 3: b'\xd0\x94\xd1\x80\xd1\x83\xd0\xb6\xd0\xb1\xd0\xb0 \xd0\xbd\xd0\xb0\xd1\x80\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xb2' not found in debug entries 708s E Entries are: 708s E [(0, b"Uses proxy env variable http_proxy == 'http://egress.ps7.internal:3128/'\n"), (0, b'Host egress.ps7.internal:3128 was resolved.\n'), (0, b'IPv6: (none)\n'), (0, b'IPv4: 10.151.41.5, 10.151.41.6, 10.151.41.7\n'), (0, b' Trying 10.151.41.5:3128...\n'), (0, b'Connected to egress.ps7.internal (10.151.41.5) port 3128\n'), (0, b'using HTTP/1.x\n'), (2, b'GET http://127.0.0.1:8380/utf8_body HTTP/1.1\r\nHost: 127.0.0.1:8380\r\nUser-Agent: PycURL/7.45.4 libcurl/8.12.1 GnuTLS/3.8.9 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.64.0 librtmp/2.3 OpenLDAP/2.6.9\r\nAccept: */*\r\nProxy-Connection: Keep-Alive\r\n\r\n'), (0, b'Request completely sent off\n'), (1, b'HTTP/1.1 503 Service Unavailable\r\n'), (1, b'Server: squid/5.9\r\n'), (1, b'Mime-Version: 1.0\r\n'), (1, b'Date: Fri, 02 May 2025 09:44:44 GMT\r\n'), (1, b'Content-Type: text/html;charset=utf-8\r\n'), (1, b'Content-Length: 3835\r\n'), (1, b'X-Squid-Error: ERR_CONNECT_FAIL 111\r\n'), (1, b'Vary: Accept-Language\r\n'), (1, b'Content-Language: en\r\n'), (1, b'X-Cache: MISS from prod-internal-egress-proxy-ps7-01\r\n'), (1, b'X-Cache-Lookup: MISS from prod-internal-egress-proxy-ps7-01:3128\r\n'), (1, b'Via: 1.1 prod-internal-egress-proxy-ps7-01 (squid/5.9)\r\n'), (1, b'Connection: keep-alive\r\n'), (1, b'\r\n'), (3, b'\n\n\n\nERROR: The requested URL could not be retrieved\n\n\n
\n

ERROR

\n

The requested URL could not be retrieved

\n
\n
\n\n
\n

The following error was encountered while trying to retrieve the URL: http://127.0.0.1:8380/utf8_body

\n\n
\n

Connection to 127.0.0.1 failed.

\n
\n\n

The system returned: (111) Connection refused

\n\n

The remote host or network may be down. Please try the request again.

\n\n

Your cache administrator is webmaster.

\n\n
\n
\n\n
\n\n\n'), (0, b'shutting down connection #0\n')] 708s E assert False 708s 708s tests/debug_test.py:65: AssertionError 708s ________________ DebugTest.test_perform_get_with_debug_function ________________ 708s 708s self = 708s 708s def test_perform_get_with_debug_function(self): 708s self.curl.setopt(pycurl.VERBOSE, 1) 708s self.curl.setopt(pycurl.DEBUGFUNCTION, self.debug_function) 708s self.curl.setopt(pycurl.URL, 'http://%s:8380/success' % localhost) 708s sio = util.BytesIO() 708s self.curl.setopt(pycurl.WRITEFUNCTION, sio.write) 708s self.curl.perform() 708s 708s # Some checks with no particular intent 708s self.check(0, util.b('Trying')) 708s if util.pycurl_version_less_than(7, 24): 708s self.check(0, util.b('connected')) 708s else: 708s > self.check(0, util.b('Connected to %s' % localhost)) 708s 708s tests/debug_test.py:38: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s 708s self = 708s wanted_t = 0, wanted_b = b'Connected to 127.0.0.1' 708s 708s def check(self, wanted_t, wanted_b): 708s for t, b in self.debug_entries: 708s if t == wanted_t and wanted_b in b: 708s return 708s > assert False, "%d: %s not found in debug entries\nEntries are:\n%s" % \ 708s (wanted_t, repr(wanted_b), repr(self.debug_entries)) 708s E AssertionError: 0: b'Connected to 127.0.0.1' not found in debug entries 708s E Entries are: 708s E [(0, b"Uses proxy env variable http_proxy == 'http://egress.ps7.internal:3128/'\n"), (0, b'Host egress.ps7.internal:3128 was resolved.\n'), (0, b'IPv6: (none)\n'), (0, b'IPv4: 10.151.41.5, 10.151.41.7, 10.151.41.6\n'), (0, b' Trying 10.151.41.5:3128...\n'), (0, b'Connected to egress.ps7.internal (10.151.41.5) port 3128\n'), (0, b'using HTTP/1.x\n'), (2, b'GET http://127.0.0.1:8380/success HTTP/1.1\r\nHost: 127.0.0.1:8380\r\nUser-Agent: PycURL/7.45.4 libcurl/8.12.1 GnuTLS/3.8.9 zlib/1.3.1 brotli/1.1.0 zstd/1.5.6 libidn2/2.3.8 libpsl/0.21.2 libssh2/1.11.1 nghttp2/1.64.0 librtmp/2.3 OpenLDAP/2.6.9\r\nAccept: */*\r\nProxy-Connection: Keep-Alive\r\n\r\n'), (0, b'Request completely sent off\n'), (1, b'HTTP/1.1 503 Service Unavailable\r\n'), (1, b'Server: squid/5.9\r\n'), (1, b'Mime-Version: 1.0\r\n'), (1, b'Date: Fri, 02 May 2025 09:44:44 GMT\r\n'), (1, b'Content-Type: text/html;charset=utf-8\r\n'), (1, b'Content-Length: 3829\r\n'), (1, b'X-Squid-Error: ERR_CONNECT_FAIL 111\r\n'), (1, b'Vary: Accept-Language\r\n'), (1, b'Content-Language: en\r\n'), (1, b'X-Cache: MISS from prod-internal-egress-proxy-ps7-01\r\n'), (1, b'X-Cache-Lookup: MISS from prod-internal-egress-proxy-ps7-01:3128\r\n'), (1, b'Via: 1.1 prod-internal-egress-proxy-ps7-01 (squid/5.9)\r\n'), (1, b'Connection: keep-alive\r\n'), (1, b'\r\n'), (3, b'\n\n\n\nERROR: The requested URL could not be retrieved\n\n\n
\n

ERROR

\n

The requested URL could not be retrieved

\n
\n
\n\n
\n

The following error was encountered while trying to retrieve the URL: http://127.0.0.1:8380/success

\n\n
\n

Connection to 127.0.0.1 failed.

\n
\n\n

The system returned: (111) Connection refused

\n\n

The remote host or network may be down. Please try the request again.

\n\n

Your cache administrator is webmaster.

\n\n
\n
\n\n
\n\n\n'), (0, b'shutting down connection #0\n')] 708s E assert False 708s 708s tests/debug_test.py:65: AssertionError 708s ________________ DuphandleTest.test_duphandle_httppost_unsetopt ________________ 708s 708s self = 708s 708s def test_duphandle_httppost_unsetopt(self): 708s # util_curl_unsetopt() 708s > self.httppost_test(self.orig.unsetopt, pycurl.HTTPPOST) 708s 708s tests/duphandle_test.py:114: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/duphandle_test.py:97: in httppost_test 708s self.httppost_check(dup1, {'field': 'orig-httppost'}, True) 708s tests/duphandle_test.py:87: in httppost_check 708s result = json.loads(body.getvalue()) 708s /usr/lib/python3.13/json/__init__.py:346: in loads 708s return _default_decoder.decode(s) 708s /usr/lib/python3.13/json/decoder.py:345: in decode 708s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s 708s self = 708s s = '\n\n\n\n\n\n' 708s idx = 0 708s 708s def raw_decode(self, s, idx=0): 708s """Decode a JSON document from ``s`` (a ``str`` beginning with 708s a JSON document) and return a 2-tuple of the Python 708s representation and the index in ``s`` where the document ended. 708s 708s This can be used to decode a JSON document from a string that may 708s have extraneous data at the end. 708s 708s """ 708s try: 708s obj, end = self.scan_once(s, idx) 708s except StopIteration as err: 708s > raise JSONDecodeError("Expecting value", s, err.value) from None 708s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 708s 708s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 708s ________________ DuphandleTest.test_duphandle_httppost_xdecref _________________ 708s 708s self = 708s 708s def test_duphandle_httppost_xdecref(self): 708s # util_curl_xdecref() 708s > self.httppost_test(self.orig.reset) 708s 708s tests/duphandle_test.py:110: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/duphandle_test.py:97: in httppost_test 708s self.httppost_check(dup1, {'field': 'orig-httppost'}, True) 708s tests/duphandle_test.py:87: in httppost_check 708s result = json.loads(body.getvalue()) 708s /usr/lib/python3.13/json/__init__.py:346: in loads 708s return _default_decoder.decode(s) 708s /usr/lib/python3.13/json/decoder.py:345: in decode 708s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s 708s self = 708s s = '\n\n\n\n\n\n' 708s idx = 0 708s 708s def raw_decode(self, s, idx=0): 708s """Decode a JSON document from ``s`` (a ``str`` beginning with 708s a JSON document) and return a 2-tuple of the Python 708s representation and the index in ``s`` where the document ended. 708s 708s This can be used to decode a JSON document from a string that may 708s have extraneous data at the end. 708s 708s """ 708s try: 708s obj, end = self.scan_once(s, idx) 708s except StopIteration as err: 708s > raise JSONDecodeError("Expecting value", s, err.value) from None 708s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 708s 708s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 708s ___________________ DuphandleTest.test_duphandle_references ____________________ 708s 708s self = 708s 708s def test_duphandle_references(self): 708s body = util.BytesIO() 708s def callback(data): 708s body.write(data) 708s callback_ref = weakref.ref(callback) 708s # preliminary checks of gc and weakref working as expected 708s assert gc.get_referrers(callback) == [] 708s assert callback_ref() is not None 708s # setopt - callback ref is copied and callback incref'ed 708s self.orig.setopt(pycurl.WRITEFUNCTION, callback) 708s assert gc.get_referrers(callback) == [self.orig] 708s # duphandle - callback ref is copied and callback incref'ed 708s dup = self.orig.duphandle() 708s assert set(gc.get_referrers(callback)) == {self.orig, dup} 708s # dealloc self.orig and decref callback 708s self.orig.close() 708s del self.orig 708s assert gc.get_referrers(callback) == [dup] 708s # decref callback again - back to ref count = 1 708s del callback 708s assert callback_ref() is not None 708s # check that callback object still exists and is invoked 708s dup.setopt(pycurl.URL, 'http://%s:8380/success' % localhost) 708s dup.perform() 708s result = body.getvalue().decode('utf-8') 708s > assert result == 'success' 708s E assert '\n' == 'success' 708s E 708s E - success 708s E + 708s E + 708s E + 708s E + 708s E + ERROR: The requested URL could not be retrieved... 708s E 708s E ...Full output truncated (140 lines hidden), use '-vv' to show 708s 708s tests/duphandle_test.py:141: AssertionError 708s _________________ DuphandleTest.test_duphandle_slist_unsetopt __________________ 708s 708s self = 708s 708s def test_duphandle_slist_unsetopt(self): 708s # util_curl_unsetopt() 708s > self.slist_test(self.orig.unsetopt, pycurl.HTTPHEADER) 708s 708s tests/duphandle_test.py:80: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/duphandle_test.py:63: in slist_test 708s self.slist_check(dup1, 'orig-slist', True) 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s 708s self = 708s handle = , value = 'orig-slist' 708s persistance = True 708s 708s def slist_check(self, handle, value, persistance=True): 708s body = util.BytesIO() 708s handle.setopt(pycurl.WRITEFUNCTION, body.write) 708s handle.setopt(pycurl.URL, 'http://%s:8380/header_utf8?h=x-test-header' % localhost) 708s handle.perform() 708s result = body.getvalue().decode('utf-8') 708s > assert (result == value) == persistance 708s E assert ('\n' == 'orig-slist' 708s E 708s E - orig-slist 708s E + 708s E + 708s E + 708s E + 708s E + ERROR: The requested URL could not be retrieved... 708s E 708s E ...Full output truncated (140 lines hidden), use '-vv' to show) == True 708s 708s tests/duphandle_test.py:51: AssertionError 708s __________________ DuphandleTest.test_duphandle_slist_xdecref __________________ 708s 708s self = 708s 708s def test_duphandle_slist_xdecref(self): 708s # util_curl_xdecref() 708s > self.slist_test(self.orig.reset) 708s 708s tests/duphandle_test.py:76: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/duphandle_test.py:63: in slist_test 708s self.slist_check(dup1, 'orig-slist', True) 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s 708s self = 708s handle = , value = 'orig-slist' 708s persistance = True 708s 708s def slist_check(self, handle, value, persistance=True): 708s body = util.BytesIO() 708s handle.setopt(pycurl.WRITEFUNCTION, body.write) 708s handle.setopt(pycurl.URL, 'http://%s:8380/header_utf8?h=x-test-header' % localhost) 708s handle.perform() 708s result = body.getvalue().decode('utf-8') 708s > assert (result == value) == persistance 708s E assert ('\n' == 'orig-slist' 708s E 708s E - orig-slist 708s E + 708s E + 708s E + 708s E + 708s E + ERROR: The requested URL could not be retrieved... 708s E 708s E ...Full output truncated (140 lines hidden), use '-vv' to show) == True 708s 708s tests/duphandle_test.py:51: AssertionError 708s ___________________________ GetinfoTest.test_getinfo ___________________________ 708s 708s self = 708s 708s @flaky.flaky(max_runs=3) 708s def test_getinfo(self): 708s > self.make_request() 708s 708s tests/getinfo_test.py:24: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/getinfo_test.py:71: in make_request 708s self.assertEqual(expected_body, sio.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s __________ GetinfoTest.test_getinfo_content_type_invalid_utf8_python3 __________ 708s 708s self = 708s 708s @util.only_python3 708s def test_getinfo_content_type_invalid_utf8_python3(self): 708s > self.make_request('/content_type_invalid_utf8', 'content type set') 708s 708s tests/getinfo_test.py:113: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/getinfo_test.py:71: in make_request 708s self.assertEqual(expected_body, sio.getvalue().decode()) 708s E AssertionError: 'content type set' != '\n' 708s E Diff is 4196 characters long. Set self.maxDiff to None to see it. 708s _____________ GetinfoTest.test_getinfo_cookie_invalid_utf8_python3 _____________ 708s 708s self = 708s 708s @util.only_python3 708s def test_getinfo_cookie_invalid_utf8_python3(self): 708s self.curl.setopt(self.curl.COOKIELIST, '') 708s > self.make_request('/set_cookie_invalid_utf8', 'cookie set') 708s 708s tests/getinfo_test.py:85: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/getinfo_test.py:71: in make_request 708s self.assertEqual(expected_body, sio.getvalue().decode()) 708s E AssertionError: 'cookie set' != '\n' 708s E Diff is 4184 characters long. Set self.maxDiff to None to see it. 708s __________________ GetinfoTest.test_getinfo_effective_method ___________________ 708s 708s self = 708s 708s @util.min_libcurl(7, 72, 0) 708s def test_getinfo_effective_method(self): 708s > self.make_request() 708s 708s tests/getinfo_test.py:44: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/getinfo_test.py:71: in make_request 708s self.assertEqual(expected_body, sio.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s _______________________ GetinfoTest.test_getinfo_number ________________________ 708s 708s self = 708s 708s def test_getinfo_number(self): 708s > self.make_request() 708s 708s tests/getinfo_test.py:130: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/getinfo_test.py:71: in make_request 708s self.assertEqual(expected_body, sio.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s _____________________ GetinfoTest.test_getinfo_raw_number ______________________ 708s 708s self = 708s 708s def test_getinfo_raw_number(self): 708s > self.make_request() 708s 708s tests/getinfo_test.py:134: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/getinfo_test.py:71: in make_request 708s self.assertEqual(expected_body, sio.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s ________________________ GetinfoTest.test_getinfo_times ________________________ 708s 708s self = 708s 708s @util.only_unix 708s @flaky.flaky(max_runs=3) 708s def test_getinfo_times(self): 708s > self.make_request() 708s 708s tests/getinfo_test.py:51: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/getinfo_test.py:71: in make_request 708s self.assertEqual(expected_body, sio.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s ______________________ GetinfoTest.test_primary_port_etc _______________________ 708s 708s self = 708s 708s @util.min_libcurl(7, 21, 0) 708s def test_primary_port_etc(self): 708s > self.make_request() 708s 708s tests/getinfo_test.py:61: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/getinfo_test.py:71: in make_request 708s self.assertEqual(expected_body, sio.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s ____________________________ HeaderCbTest.test_get _____________________________ 708s 708s self = 708s 708s def test_get(self): 708s self.curl.setopt(pycurl.URL, 'http://%s:8380/success' % localhost) 708s sio = util.BytesIO() 708s self.curl.setopt(pycurl.WRITEFUNCTION, sio.write) 708s self.curl.setopt(pycurl.HEADERFUNCTION, self.header_function) 708s self.curl.perform() 708s > self.assertEqual('success', sio.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s 708s tests/header_cb_test.py:32: AssertionError 708s _____________________ HeaderTest.test_ascii_string_header ______________________ 708s 708s self = 708s 708s def test_ascii_string_header(self): 708s > self.check('x-test-header: ascii', 'ascii') 708s 708s tests/header_test.py:26: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/header_test.py:46: in check 708s self.do_check([send], expected) 708s tests/header_test.py:55: in do_check 708s self.assertEqual(expected, sio.getvalue().decode('utf-8')) 708s E AssertionError: 'ascii' != '\n' 708s E Diff is 4195 characters long. Set self.maxDiff to None to see it. 708s _____________________ HeaderTest.test_ascii_unicode_header _____________________ 708s 708s self = 708s 708s def test_ascii_unicode_header(self): 708s > self.check(util.u('x-test-header: ascii'), 'ascii') 708s 708s tests/header_test.py:29: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/header_test.py:46: in check 708s self.do_check([send], expected) 708s tests/header_test.py:55: in do_check 708s self.assertEqual(expected, sio.getvalue().decode('utf-8')) 708s E AssertionError: 'ascii' != '\n' 708s E Diff is 4195 characters long. Set self.maxDiff to None to see it. 708s ____________________ HeaderTest.test_encoded_unicode_header ____________________ 708s 708s self = 708s 708s def test_encoded_unicode_header(self): 708s > self.check(util.u('x-test-header: Москва').encode('utf-8'), util.u('Москва')) 708s 708s tests/header_test.py:42: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/header_test.py:46: in check 708s self.do_check([send], expected) 708s tests/header_test.py:55: in do_check 708s self.assertEqual(expected, sio.getvalue().decode('utf-8')) 708s E AssertionError: 'Москва' != '\n' 708s E Diff is 4227 characters long. Set self.maxDiff to None to see it. 708s ___________________________ RelativeUrlTest.test_get ___________________________ 708s 708s self = 708s 708s def test_get(self): 708s result = self.curl.get('/success') 708s > self.assertEqual('success', result.decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s 708s tests/high_level_curl_test.py:23: AssertionError 708s __________________________ RelativeUrlTest.test_head ___________________________ 708s 708s self = 708s 708s def test_head(self): 708s result = self.curl.head('/success') 708s self.assertEqual('', result.decode()) 708s > self.assertEqual(200, self.curl.info()['http-code']) 708s E AssertionError: 200 != 503 708s 708s tests/high_level_curl_test.py:28: AssertionError 708s __________________________ RelativeUrlTest.test_reuse __________________________ 708s 708s self = 708s 708s def test_reuse(self): 708s result = self.curl.get('/success') 708s > self.assertEqual('success', result.decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s 708s tests/high_level_curl_test.py:32: AssertionError 708s ______________________ MultiCallbackTest.test_easy_close _______________________ 708s 708s self = 708s 708s @pytest.mark.skipif(sys.platform == 'win32', reason='https://github.com/pycurl/pycurl/issues/819') 708s def test_easy_close(self): 708s self.partial_transfer() 708s self.socket_result = None 708s self.easy.close() 708s > assert self.socket_result is not None 708s E assert None is not None 708s E + where None = .socket_result 708s 708s tests/multi_callback_test.py:106: AssertionError 708s __________________ MultiCallbackTest.test_easy_pause_unpause ___________________ 708s 708s self = 708s 708s @pytest.mark.skipif(sys.platform == 'win32', reason='https://github.com/pycurl/pycurl/issues/819') 708s def test_easy_pause_unpause(self): 708s self.partial_transfer() 708s self.socket_result = None 708s # libcurl will now inform us that we should remove some sockets 708s > self.easy.pause(pycurl.PAUSE_ALL) 708s E pycurl.error: (43, 'pause/unpause failed') 708s 708s tests/multi_callback_test.py:91: error 708s ________________ MultiSocketSelectTest.test_multi_socket_select ________________ 708s 708s self = 708s 708s @pytest.mark.skipif(sys.platform == 'win32', reason='https://github.com/pycurl/pycurl/issues/819') 708s def test_multi_socket_select(self): 708s sockets = set() 708s timeout = 0 708s 708s urls = [ 708s # we need libcurl to actually wait on the handles, 708s # and initiate polling. 708s # thus use urls that sleep for a bit. 708s 'http://%s:8380/short_wait' % localhost, 708s 'http://%s:8381/short_wait' % localhost, 708s 'http://%s:8382/short_wait' % localhost, 708s ] 708s 708s socket_events = [] 708s 708s # socket callback 708s def socket(event, socket, multi, data): 708s if event == pycurl.POLL_REMOVE: 708s #print("Remove Socket %d"%socket) 708s sockets.remove(socket) 708s else: 708s if socket not in sockets: 708s #print("Add socket %d"%socket) 708s sockets.add(socket) 708s socket_events.append((event, multi)) 708s 708s # init 708s m = self.m 708s m.setopt(pycurl.M_SOCKETFUNCTION, socket) 708s for url in urls: 708s c = util.DefaultCurl() 708s # save info in standard Python attributes 708s c.url = url 708s c.body = util.BytesIO() 708s c.http_code = -1 708s m.handles.append(c) 708s # pycurl API calls 708s c.setopt(c.URL, c.url) 708s c.setopt(c.WRITEFUNCTION, c.body.write) 708s m.add_handle(c) 708s 708s # get data 708s #num_handles = len(m.handles) 708s 708s while (pycurl.E_CALL_MULTI_PERFORM==m.socket_all()[0]): 708s pass 708s 708s timeout = m.timeout() 708s if timeout == -1: 708s timeout = 1000 708s 708s # timeout might be -1, indicating that all work is done 708s # XXX make sure there is always work to be done here? 708s while timeout >= 0: 708s (rr, wr, er) = select.select(sockets,sockets,sockets,timeout/1000.0) 708s socketSet = set(rr+wr+er) 708s if socketSet: 708s for s in socketSet: 708s while True: 708s (ret,running) = m.socket_action(s,0) 708s if ret!=pycurl.E_CALL_MULTI_PERFORM: 708s break 708s else: 708s (ret,running) = m.socket_action(pycurl.SOCKET_TIMEOUT,0) 708s if running==0: 708s break 708s 708s for c in m.handles: 708s # save info in standard Python attributes 708s c.http_code = c.getinfo(c.HTTP_CODE) 708s 708s # at least in and remove events per socket 708s assert len(socket_events) >= 6, 'Less than 6 socket events: %s' % repr(socket_events) 708s 708s # print result 708s for c in m.handles: 708s > self.assertEqual('success', c.body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4142 characters long. Set self.maxDiff to None to see it. 708s 708s tests/multi_socket_select_test.py:119: AssertionError 708s ______________________ MultiSocketTest.test_multi_socket _______________________ 708s 708s self = 708s 708s def test_multi_socket(self): 708s urls = [ 708s # not sure why requesting /success produces no events. 708s # see multi_socket_select_test.py for a longer explanation 708s # why short wait is used there. 708s 'http://%s:8380/short_wait' % localhost, 708s 'http://%s:8381/short_wait' % localhost, 708s 'http://%s:8382/short_wait' % localhost, 708s ] 708s 708s socket_events = [] 708s 708s # socket callback 708s def socket(event, socket, multi, data): 708s #print(event, socket, multi, data) 708s socket_events.append((event, multi)) 708s 708s # init 708s m = pycurl.CurlMulti() 708s m.setopt(pycurl.M_SOCKETFUNCTION, socket) 708s m.handles = [] 708s for url in urls: 708s c = util.DefaultCurl() 708s # save info in standard Python attributes 708s c.url = url 708s c.body = util.BytesIO() 708s c.http_code = -1 708s m.handles.append(c) 708s # pycurl API calls 708s c.setopt(c.URL, c.url) 708s c.setopt(c.WRITEFUNCTION, c.body.write) 708s m.add_handle(c) 708s 708s # get data 708s num_handles = len(m.handles) 708s while num_handles: 708s while 1: 708s ret, num_handles = m.socket_all() 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s # currently no more I/O is pending, could do something in the meantime 708s # (display a progress bar, etc.) 708s m.select(0.1) 708s 708s for c in m.handles: 708s # save info in standard Python attributes 708s c.http_code = c.getinfo(c.HTTP_CODE) 708s 708s # at least in and remove events per socket 708s assert len(socket_events) >= 6 708s 708s # print result 708s for c in m.handles: 708s > self.assertEqual('success', c.body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4142 characters long. Set self.maxDiff to None to see it. 708s 708s tests/multi_socket_test.py:80: AssertionError 708s ____________ MultiTest.test_adding_closed_handle_close_then_remove _____________ 708s 708s self = 708s 708s def test_adding_closed_handle_close_then_remove(self): 708s > self.check_adding_closed_handle(self._close_then_remove) 708s 708s tests/multi_test.py:241: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/multi_test.py:214: in check_adding_closed_handle 708s self.assertEqual('success', m.handles[0].body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s __________ MultiTest.test_adding_closed_handle_close_without_removing __________ 708s 708s self = 708s 708s def test_adding_closed_handle_close_without_removing(self): 708s > self.check_adding_closed_handle(self._close_without_removing) 708s 708s tests/multi_test.py:244: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/multi_test.py:214: in check_adding_closed_handle 708s self.assertEqual('success', m.handles[0].body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s ____________ MultiTest.test_adding_closed_handle_remove_then_close _____________ 708s 708s self = 708s 708s def test_adding_closed_handle_remove_then_close(self): 708s > self.check_adding_closed_handle(self._remove_then_close) 708s 708s tests/multi_test.py:238: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/multi_test.py:214: in check_adding_closed_handle 708s self.assertEqual('success', m.handles[0].body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s _____________________________ MultiTest.test_multi _____________________________ 708s 708s self = 708s 708s def test_multi(self): 708s io1 = util.BytesIO() 708s io2 = util.BytesIO() 708s m = pycurl.CurlMulti() 708s handles = [] 708s c1 = util.DefaultCurl() 708s c2 = util.DefaultCurl() 708s c1.setopt(c1.URL, 'http://%s:8380/success' % localhost) 708s c1.setopt(c1.WRITEFUNCTION, io1.write) 708s c2.setopt(c2.URL, 'http://%s:8381/success' % localhost) 708s c2.setopt(c1.WRITEFUNCTION, io2.write) 708s m.add_handle(c1) 708s m.add_handle(c2) 708s handles.append(c1) 708s handles.append(c2) 708s 708s num_handles = len(handles) 708s while num_handles: 708s while 1: 708s ret, num_handles = m.perform() 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s m.select(1.0) 708s 708s m.remove_handle(c2) 708s m.remove_handle(c1) 708s m.close() 708s c1.close() 708s c2.close() 708s 708s > self.assertEqual('success', io1.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s 708s tests/multi_test.py:59: AssertionError 708s ________________________ MultiTest.test_multi_info_read ________________________ 708s 708s self = 708s 708s def test_multi_info_read(self): 708s c1 = util.DefaultCurl() 708s c2 = util.DefaultCurl() 708s c3 = util.DefaultCurl() 708s c1.setopt(c1.URL, "http://%s:8380/short_wait" % localhost) 708s c2.setopt(c2.URL, "http://%s:8381/short_wait" % localhost) 708s c3.setopt(c3.URL, "http://%s:8382/short_wait" % localhost) 708s c1.body = util.BytesIO() 708s c2.body = util.BytesIO() 708s c3.body = util.BytesIO() 708s c1.setopt(c1.WRITEFUNCTION, c1.body.write) 708s c2.setopt(c2.WRITEFUNCTION, c2.body.write) 708s c3.setopt(c3.WRITEFUNCTION, c3.body.write) 708s 708s m = pycurl.CurlMulti() 708s m.add_handle(c1) 708s m.add_handle(c2) 708s m.add_handle(c3) 708s 708s # Number of seconds to wait for a timeout to happen 708s SELECT_TIMEOUT = 1.0 708s 708s # Stir the state machine into action 708s while 1: 708s ret, num_handles = m.perform() 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s 708s infos = [] 708s # Keep going until all the connections have terminated 708s while num_handles: 708s # The select method uses fdset internally to determine which file descriptors 708s # to check. 708s m.select(SELECT_TIMEOUT) 708s while 1: 708s ret, num_handles = m.perform() 708s info = m.info_read() 708s infos.append(info) 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s 708s all_handles = [] 708s for info in infos: 708s handles = info[1] 708s # last info is an empty array 708s if handles: 708s all_handles.extend(handles) 708s 708s self.assertEqual(3, len(all_handles)) 708s assert c1 in all_handles 708s assert c2 in all_handles 708s assert c3 in all_handles 708s 708s # Cleanup 708s m.remove_handle(c3) 708s m.remove_handle(c2) 708s m.remove_handle(c1) 708s m.close() 708s c1.close() 708s c2.close() 708s c3.close() 708s 708s > self.assertEqual('success', c1.body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4142 characters long. Set self.maxDiff to None to see it. 708s 708s tests/multi_test.py:359: AssertionError 708s _________________________ MultiTest.test_multi_select __________________________ 708s 708s self = 708s 708s def test_multi_select(self): 708s c1 = util.DefaultCurl() 708s c2 = util.DefaultCurl() 708s c3 = util.DefaultCurl() 708s c1.setopt(c1.URL, "http://%s:8380/success" % localhost) 708s c2.setopt(c2.URL, "http://%s:8381/success" % localhost) 708s c3.setopt(c3.URL, "http://%s:8382/success" % localhost) 708s c1.body = util.BytesIO() 708s c2.body = util.BytesIO() 708s c3.body = util.BytesIO() 708s c1.setopt(c1.WRITEFUNCTION, c1.body.write) 708s c2.setopt(c2.WRITEFUNCTION, c2.body.write) 708s c3.setopt(c3.WRITEFUNCTION, c3.body.write) 708s 708s m = pycurl.CurlMulti() 708s m.add_handle(c1) 708s m.add_handle(c2) 708s m.add_handle(c3) 708s 708s # Number of seconds to wait for a timeout to happen 708s SELECT_TIMEOUT = 1.0 708s 708s # Stir the state machine into action 708s while 1: 708s ret, num_handles = m.perform() 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s 708s # Keep going until all the connections have terminated 708s while num_handles: 708s # The select method uses fdset internally to determine which file descriptors 708s # to check. 708s m.select(SELECT_TIMEOUT) 708s while 1: 708s ret, num_handles = m.perform() 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s 708s # Cleanup 708s m.remove_handle(c3) 708s m.remove_handle(c2) 708s m.remove_handle(c1) 708s m.close() 708s c1.close() 708s c2.close() 708s c3.close() 708s 708s > self.assertEqual('success', c1.body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s 708s tests/multi_test.py:293: AssertionError 708s ______________________ MultiTest.test_multi_select_fdset _______________________ 708s 708s self = 708s 708s def test_multi_select_fdset(self): 708s c1 = util.DefaultCurl() 708s c2 = util.DefaultCurl() 708s c3 = util.DefaultCurl() 708s c1.setopt(c1.URL, "http://%s:8380/success" % localhost) 708s c2.setopt(c2.URL, "http://%s:8381/success" % localhost) 708s c3.setopt(c3.URL, "http://%s:8382/success" % localhost) 708s c1.body = util.BytesIO() 708s c2.body = util.BytesIO() 708s c3.body = util.BytesIO() 708s c1.setopt(c1.WRITEFUNCTION, c1.body.write) 708s c2.setopt(c2.WRITEFUNCTION, c2.body.write) 708s c3.setopt(c3.WRITEFUNCTION, c3.body.write) 708s 708s m = pycurl.CurlMulti() 708s m.add_handle(c1) 708s m.add_handle(c2) 708s m.add_handle(c3) 708s 708s # Number of seconds to wait for a timeout to happen 708s SELECT_TIMEOUT = 0.1 708s 708s # Stir the state machine into action 708s while 1: 708s ret, num_handles = m.perform() 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s 708s # Keep going until all the connections have terminated 708s while num_handles: 708s select.select(*m.fdset() + (SELECT_TIMEOUT,)) 708s while 1: 708s ret, num_handles = m.perform() 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s 708s # Cleanup 708s m.remove_handle(c3) 708s m.remove_handle(c2) 708s m.remove_handle(c1) 708s m.close() 708s c1.close() 708s c2.close() 708s c3.close() 708s 708s > self.assertEqual('success', c1.body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s 708s tests/multi_test.py:107: AssertionError 708s ______________________ MultiTest.test_multi_status_codes _______________________ 708s 708s self = 708s 708s def test_multi_status_codes(self): 708s # init 708s m = pycurl.CurlMulti() 708s m.handles = [] 708s urls = [ 708s 'http://%s:8380/success' % localhost, 708s 'http://%s:8381/status/403' % localhost, 708s 'http://%s:8382/status/404' % localhost, 708s ] 708s for url in urls: 708s c = util.DefaultCurl() 708s # save info in standard Python attributes 708s c.url = url.rstrip() 708s c.body = util.BytesIO() 708s c.http_code = -1 708s m.handles.append(c) 708s # pycurl API calls 708s c.setopt(c.URL, c.url) 708s c.setopt(c.WRITEFUNCTION, c.body.write) 708s m.add_handle(c) 708s 708s # get data 708s num_handles = len(m.handles) 708s while num_handles: 708s while 1: 708s ret, num_handles = m.perform() 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s # currently no more I/O is pending, could do something in the meantime 708s # (display a progress bar, etc.) 708s m.select(0.1) 708s 708s # close handles 708s for c in m.handles: 708s # save info in standard Python attributes 708s c.http_code = c.getinfo(c.HTTP_CODE) 708s # pycurl API calls 708s m.remove_handle(c) 708s c.close() 708s m.close() 708s 708s # check result 708s > self.assertEqual('success', m.handles[0].body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s 708s tests/multi_test.py:153: AssertionError 708s _______________________ MultiSocketTest.test_multi_timer _______________________ 708s 708s self = 708s 708s def test_multi_timer(self): 708s urls = [ 708s 'http://%s:8380/success' % localhost, 708s 'http://%s:8381/success' % localhost, 708s 'http://%s:8382/success' % localhost, 708s ] 708s 708s timers = [] 708s 708s # timer callback 708s def timer(msecs): 708s #print('Timer callback msecs:', msecs) 708s timers.append(msecs) 708s 708s # init 708s m = pycurl.CurlMulti() 708s m.setopt(pycurl.M_TIMERFUNCTION, timer) 708s m.handles = [] 708s for url in urls: 708s c = util.DefaultCurl() 708s # save info in standard Python attributes 708s c.url = url 708s c.body = util.BytesIO() 708s c.http_code = -1 708s m.handles.append(c) 708s # pycurl API calls 708s c.setopt(c.URL, c.url) 708s c.setopt(c.WRITEFUNCTION, c.body.write) 708s m.add_handle(c) 708s 708s # get data 708s num_handles = len(m.handles) 708s while num_handles: 708s while 1: 708s ret, num_handles = m.perform() 708s if ret != pycurl.E_CALL_MULTI_PERFORM: 708s break 708s # currently no more I/O is pending, could do something in the meantime 708s # (display a progress bar, etc.) 708s m.select(1.0) 708s 708s for c in m.handles: 708s # save info in standard Python attributes 708s c.http_code = c.getinfo(c.HTTP_CODE) 708s 708s # print result 708s for c in m.handles: 708s > self.assertEqual('success', c.body.getvalue().decode()) 708s E AssertionError: 'success' != '\n' 708s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 708s 708s tests/multi_timer_test.py:74: AssertionError 708s ______________________ OpenSocketCbTest.test_socket_open _______________________ 708s 708s self = 708s 708s @util.only_unix 708s def test_socket_open(self): 708s self.curl.setopt(pycurl.OPENSOCKETFUNCTION, socket_open_ipv4) 708s self.curl.setopt(self.curl.URL, 'http://%s:8380/success' % localhost) 708s sio = util.BytesIO() 708s self.curl.setopt(pycurl.WRITEFUNCTION, sio.write) 708s self.curl.perform() 708s 708s assert socket_open_called_ipv4 708s > self.assertEqual(("127.0.0.1", 8380), socket_open_address) 708s E AssertionError: Tuples differ: ('127.0.0.1', 8380) != ('10.151.41.5', 3128) 708s E 708s E First differing element 0: 708s E '127.0.0.1' 708s E '10.151.41.5' 708s E 708s E - ('127.0.0.1', 8380) 708s E + ('10.151.41.5', 3128) 708s 708s tests/open_socket_cb_test.py:73: AssertionError 708s ________________________ PauseTest.test_pause_via_call _________________________ 708s 708s self = 708s 708s def test_pause_via_call(self): 708s > self.check_pause(True) 708s 708s tests/pause_test.py:25: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/util.py:198: in decorated 708s return fn(*args, **kwargs) 708s tests/pause_test.py:92: in check_pause 708s self.assertEqual('part1part2', sio.getvalue().decode()) 708s E AssertionError: 'part1part2' != '\n' 708s E Diff is 4130 characters long. Set self.maxDiff to None to see it. 708s _______________________ PauseTest.test_pause_via_return ________________________ 708s 708s self = 708s 708s def test_pause_via_return(self): 708s > self.check_pause(False) 708s 708s tests/pause_test.py:28: 708s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 708s tests/util.py:198: in decorated 708s return fn(*args, **kwargs) 708s tests/pause_test.py:92: in check_pause 708s self.assertEqual('part1part2', sio.getvalue().decode()) 708s E AssertionError: 'part1part2' != '\n' 708s E Diff is 4130 characters long. Set self.maxDiff to None to see it. 708s _________________________ PerformTest.test_perform_rb __________________________ 708s 708s self = 708s 708s def test_perform_rb(self): 708s self.curl.setopt(pycurl.URL, 'http://%s:8380/success' % localhost) 708s body = self.curl.perform_rb() 708s > self.assertEqual(util.b('success'), body) 708s E AssertionError: b'success' != b'\n' 708s 708s tests/perform_test.py:27: AssertionError 708s ___________________ PerformTest.test_perform_rb_invalid_utf8 ___________________ 708s 708s self = 708s 708s def test_perform_rb_invalid_utf8(self): 708s self.curl.setopt(pycurl.URL, 'http://%s:8380/invalid_utf8_body' % localhost) 708s body = self.curl.perform_rb() 708s > self.assertEqual(util.b('\xb3\xd2\xda\xcd\xd7'), body) 708s E AssertionError: b'\xb3\xd2\xda\xcd\xd7' != b'\n' 708s 708s tests/perform_test.py:50: AssertionError 708s _______________________ PerformTest.test_perform_rb_utf8 _______________________ 708s 708s self = 708s 708s def test_perform_rb_utf8(self): 708s self.curl.setopt(pycurl.URL, 'http://%s:8380/utf8_body' % localhost) 708s body = self.curl.perform_rb() 708s if util.py3: 708s > self.assertEqual('Дружба народов'.encode('utf8'), body) 708s E AssertionError: b'\xd0\x94\xd1\x80\xd1\x83\xd0\xb6\xd0\xb1\[60 chars]\xb2' != b'\n' 708s 708s tests/perform_test.py:38: AssertionError 708s _________________________ PerformTest.test_perform_rs __________________________ 708s 708s self = 708s 708s def test_perform_rs(self): 708s self.curl.setopt(pycurl.URL, 'http://%s:8380/success' % localhost) 708s body = self.curl.perform_rs() 708s > self.assertEqual(util.u('success'), body) 709s E AssertionError: 'success' != '\n' 709s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 709s 709s tests/perform_test.py:32: AssertionError 709s _______________ PerformTest.test_perform_rs_invalid_utf8_python3 _______________ 709s 709s self = 709s 709s @util.only_python3 709s def test_perform_rs_invalid_utf8_python3(self): 709s self.curl.setopt(pycurl.URL, 'http://%s:8380/invalid_utf8_body' % localhost) 709s try: 709s self.curl.perform_rs() 709s except UnicodeDecodeError: 709s pass 709s else: 709s > self.fail('Should have raised') 709s E AssertionError: Should have raised 709s 709s tests/perform_test.py:66: AssertionError 709s _______________________ PerformTest.test_perform_rs_utf8 _______________________ 709s 709s self = 709s 709s def test_perform_rs_utf8(self): 709s self.curl.setopt(pycurl.URL, 'http://%s:8380/utf8_body' % localhost) 709s body = self.curl.perform_rs() 709s > self.assertEqual('Дружба народов', body) 709s E AssertionError: 'Дружба народов' != '\n' 709s E Diff is 4146 characters long. Set self.maxDiff to None to see it. 709s 709s tests/perform_test.py:45: AssertionError 709s ________________________ PostTest.test_post_byte_buffer ________________________ 709s 709s self = 709s 709s def test_post_byte_buffer(self): 709s contents = util.b('hello, world!') 709s send = [ 709s ('field2', (pycurl.FORM_BUFFER, 'uploaded.file', pycurl.FORM_BUFFERPTR, contents)), 709s ] 709s expect = [{ 709s 'name': 'field2', 709s 'filename': 'uploaded.file', 709s 'data': 'hello, world!', 709s }] 709s > self.check_post(send, expect, 'http://%s:8380/files' % localhost) 709s 709s tests/post_test.py:115: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:197: in check_post 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s ___________________ PostTest.test_post_fields_with_ampersand ___________________ 709s 709s self = 709s 709s def test_post_fields_with_ampersand(self): 709s pf = {'field1':'value1', 'field2':'value2 with blanks and & chars', 709s 'field3':'value3'} 709s > self.urlencode_and_check(pf) 709s 709s tests/post_test.py:43: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:73: in urlencode_and_check 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s ___________________________ PostTest.test_post_file ____________________________ 709s 709s self = 709s 709s def test_post_file(self): 709s path = os.path.join(os.path.dirname(__file__), '..', 'README.rst') 709s f = open(path, newline='') 709s try: 709s contents = f.read() 709s finally: 709s f.close() 709s send = [ 709s #('field2', (pycurl.FORM_FILE, 'test_post.py', pycurl.FORM_FILE, 'test_post2.py')), 709s ('field2', (pycurl.FORM_FILE, path)), 709s ] 709s expect = [{ 709s 'name': 'field2', 709s 'filename': 'README.rst', 709s 'data': contents, 709s }] 709s > self.check_post(send, expect, 'http://%s:8380/files' % localhost) 709s 709s tests/post_test.py:103: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:197: in check_post 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s ___________________ PostTest.test_post_list_of_list_of_lists ___________________ 709s 709s self = 709s 709s def test_post_list_of_list_of_lists(self): 709s contents = util.u('hello, world!') 709s send = [ 709s ['field2', [pycurl.FORM_BUFFER, 'uploaded.file', pycurl.FORM_BUFFERPTR, contents]], 709s ] 709s expect = [{ 709s 'name': 'field2', 709s 'filename': 'uploaded.file', 709s 'data': 'hello, world!', 709s }] 709s > self.check_post(send, expect, 'http://%s:8380/files' % localhost) 709s 709s tests/post_test.py:187: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:197: in check_post 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s __________________ PostTest.test_post_list_of_tuple_of_tuples __________________ 709s 709s self = 709s 709s def test_post_list_of_tuple_of_tuples(self): 709s contents = util.u('hello, world!') 709s send = [ 709s ('field2', (pycurl.FORM_BUFFER, 'uploaded.file', pycurl.FORM_BUFFERPTR, contents)), 709s ] 709s expect = [{ 709s 'name': 'field2', 709s 'filename': 'uploaded.file', 709s 'data': 'hello, world!', 709s }] 709s > self.check_post(send, expect, 'http://%s:8380/files' % localhost) 709s 709s tests/post_test.py:175: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:197: in check_post 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s ______________________ PostTest.test_post_multiple_fields ______________________ 709s 709s self = 709s 709s def test_post_multiple_fields(self): 709s pf = {'field1':'value1', 'field2':'value2 with blanks', 'field3':'value3'} 709s > self.urlencode_and_check(pf) 709s 709s tests/post_test.py:38: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:73: in urlencode_and_check 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s _______________________ PostTest.test_post_single_field ________________________ 709s 709s self = 709s 709s def test_post_single_field(self): 709s pf = {'field1': 'value1'} 709s > self.urlencode_and_check(pf) 709s 709s tests/post_test.py:34: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:73: in urlencode_and_check 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s _________________ PostTest.test_post_tuple_of_lists_of_tuples __________________ 709s 709s self = 709s 709s def test_post_tuple_of_lists_of_tuples(self): 709s contents = util.u('hello, world!') 709s send = ( 709s ['field2', (pycurl.FORM_BUFFER, 'uploaded.file', pycurl.FORM_BUFFERPTR, contents)], 709s ) 709s expect = [{ 709s 'name': 'field2', 709s 'filename': 'uploaded.file', 709s 'data': 'hello, world!', 709s }] 709s > self.check_post(send, expect, 'http://%s:8380/files' % localhost) 709s 709s tests/post_test.py:151: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:197: in check_post 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s __________________ PostTest.test_post_tuple_of_tuple_of_lists __________________ 709s 709s self = 709s 709s def test_post_tuple_of_tuple_of_lists(self): 709s contents = util.u('hello, world!') 709s send = ( 709s ('field2', [pycurl.FORM_BUFFER, 'uploaded.file', pycurl.FORM_BUFFERPTR, contents]), 709s ) 709s expect = [{ 709s 'name': 'field2', 709s 'filename': 'uploaded.file', 709s 'data': 'hello, world!', 709s }] 709s > self.check_post(send, expect, 'http://%s:8380/files' % localhost) 709s 709s tests/post_test.py:163: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:197: in check_post 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s _________________ PostTest.test_post_tuple_of_tuples_of_tuples _________________ 709s 709s self = 709s 709s def test_post_tuple_of_tuples_of_tuples(self): 709s contents = util.u('hello, world!') 709s send = ( 709s ('field2', (pycurl.FORM_BUFFER, 'uploaded.file', pycurl.FORM_BUFFERPTR, contents)), 709s ) 709s expect = [{ 709s 'name': 'field2', 709s 'filename': 'uploaded.file', 709s 'data': 'hello, world!', 709s }] 709s > self.check_post(send, expect, 'http://%s:8380/files' % localhost) 709s 709s tests/post_test.py:139: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:197: in check_post 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s ______________________ PostTest.test_post_unicode_buffer _______________________ 709s 709s self = 709s 709s def test_post_unicode_buffer(self): 709s contents = util.u('hello, world!') 709s send = [ 709s ('field2', (pycurl.FORM_BUFFER, 'uploaded.file', pycurl.FORM_BUFFERPTR, contents)), 709s ] 709s expect = [{ 709s 'name': 'field2', 709s 'filename': 'uploaded.file', 709s 'data': 'hello, world!', 709s }] 709s > self.check_post(send, expect, 'http://%s:8380/files' % localhost) 709s 709s tests/post_test.py:127: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:197: in check_post 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s ______________________ PostTest.test_post_with_null_byte _______________________ 709s 709s self = 709s 709s def test_post_with_null_byte(self): 709s send = [ 709s ('field3', (pycurl.FORM_CONTENTS, 'this is wei\000rd, but null-bytes are okay')) 709s ] 709s expect = { 709s 'field3': 'this is wei\000rd, but null-bytes are okay', 709s } 709s > self.check_post(send, expect, 'http://%s:8380/postfields' % localhost) 709s 709s tests/post_test.py:85: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/post_test.py:197: in check_post 709s self.assertEqual(200, self.curl.getinfo(pycurl.HTTP_CODE)) 709s E AssertionError: 200 != 503 709s ___________________ ReadCbTest.test_post_with_read_callback ____________________ 709s 709s self = 709s 709s def test_post_with_read_callback(self): 709s d = DataProvider(POSTSTRING) 709s self.curl.setopt(self.curl.URL, 'http://%s:8380/postfields' % localhost) 709s self.curl.setopt(self.curl.POST, 1) 709s self.curl.setopt(self.curl.POSTFIELDSIZE, len(POSTSTRING)) 709s self.curl.setopt(self.curl.READFUNCTION, d.read_cb) 709s #self.curl.setopt(self.curl.VERBOSE, 1) 709s sio = util.BytesIO() 709s self.curl.setopt(pycurl.WRITEFUNCTION, sio.write) 709s self.curl.perform() 709s 709s > actual = json.loads(sio.getvalue().decode()) 709s 709s tests/read_cb_test.py:62: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ___________ ReadCbTest.test_post_with_read_callback_returning_bytes ____________ 709s 709s self = 709s 709s def test_post_with_read_callback_returning_bytes(self): 709s > self.check_bytes('world') 709s 709s tests/read_cb_test.py:66: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/read_cb_test.py:91: in check_bytes 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ____ ReadCbTest.test_post_with_read_callback_returning_bytes_with_multibyte ____ 709s 709s self = 709s 709s def test_post_with_read_callback_returning_bytes_with_multibyte(self): 709s > self.check_bytes(util.u("Пушкин")) 709s 709s tests/read_cb_test.py:72: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/read_cb_test.py:91: in check_bytes 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ______ ReadCbTest.test_post_with_read_callback_returning_bytes_with_nulls ______ 709s 709s self = 709s 709s def test_post_with_read_callback_returning_bytes_with_nulls(self): 709s > self.check_bytes("wor\0ld") 709s 709s tests/read_cb_test.py:69: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/read_cb_test.py:91: in check_bytes 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s __________ ReadCbTest.test_post_with_read_callback_returning_unicode ___________ 709s 709s self = 709s 709s def test_post_with_read_callback_returning_unicode(self): 709s > self.check_unicode(util.u('world')) 709s 709s tests/read_cb_test.py:95: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/read_cb_test.py:126: in check_unicode 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s _____ ReadCbTest.test_post_with_read_callback_returning_unicode_with_nulls _____ 709s 709s self = 709s 709s def test_post_with_read_callback_returning_unicode_with_nulls(self): 709s > self.check_unicode(util.u("wor\0ld")) 709s 709s tests/read_cb_test.py:98: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/read_cb_test.py:126: in check_unicode 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s _________ ReaddataTest.test_post_with_read_callback_returning_unicode __________ 709s 709s self = 709s 709s def test_post_with_read_callback_returning_unicode(self): 709s > self.check_unicode(util.u('world')) 709s 709s tests/readdata_test.py:99: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/readdata_test.py:129: in check_unicode 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ____ ReaddataTest.test_post_with_read_callback_returning_unicode_with_nulls ____ 709s 709s self = 709s 709s def test_post_with_read_callback_returning_unicode_with_nulls(self): 709s > self.check_unicode(util.u("wor\0ld")) 709s 709s tests/readdata_test.py:102: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/readdata_test.py:129: in check_unicode 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s _______________ ReaddataTest.test_post_with_read_returning_bytes _______________ 709s 709s self = 709s 709s def test_post_with_read_returning_bytes(self): 709s > self.check_bytes('world') 709s 709s tests/readdata_test.py:71: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/readdata_test.py:95: in check_bytes 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s _______ ReaddataTest.test_post_with_read_returning_bytes_with_multibyte ________ 709s 709s self = 709s 709s def test_post_with_read_returning_bytes_with_multibyte(self): 709s > self.check_bytes(util.u("Пушкин")) 709s 709s tests/readdata_test.py:77: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/readdata_test.py:95: in check_bytes 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s _________ ReaddataTest.test_post_with_read_returning_bytes_with_nulls __________ 709s 709s self = 709s 709s def test_post_with_read_returning_bytes_with_nulls(self): 709s > self.check_bytes("wor\0ld") 709s 709s tests/readdata_test.py:74: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s tests/readdata_test.py:95: in check_bytes 709s actual = json.loads(sio.getvalue().decode('ascii')) 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ____________ ReaddataTest.test_readdata_and_readfunction_file_like _____________ 709s 709s self = 709s 709s def test_readdata_and_readfunction_file_like(self): 709s data = 'hello=world' 709s data_provider = DataProvider(data) 709s # data must be the same length 709s function_provider = DataProvider('aaaaa=bbbbb') 709s self.curl.setopt(self.curl.URL, 'http://%s:8380/postfields' % localhost) 709s self.curl.setopt(self.curl.POST, 1) 709s self.curl.setopt(self.curl.POSTFIELDSIZE, len(data)) 709s self.curl.setopt(self.curl.READDATA, data_provider) 709s self.curl.setopt(self.curl.READFUNCTION, function_provider.read) 709s sio = util.BytesIO() 709s self.curl.setopt(pycurl.WRITEDATA, sio) 709s self.curl.perform() 709s 709s > actual = json.loads(sio.getvalue().decode()) 709s 709s tests/readdata_test.py:194: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ____________ ReaddataTest.test_readdata_and_readfunction_real_file _____________ 709s 709s self = 709s 709s def test_readdata_and_readfunction_real_file(self): 709s # data must be the same length 709s with open(FORM_SUBMISSION_PATH) as f: 709s function_provider = DataProvider('aaa=bbb') 709s self.curl.setopt(self.curl.URL, 'http://%s:8380/postfields' % localhost) 709s self.curl.setopt(self.curl.POST, 1) 709s self.curl.setopt(self.curl.POSTFIELDSIZE, os.stat(FORM_SUBMISSION_PATH).st_size) 709s self.curl.setopt(self.curl.READDATA, f) 709s self.curl.setopt(self.curl.READFUNCTION, function_provider.read) 709s sio = util.BytesIO() 709s self.curl.setopt(pycurl.WRITEDATA, sio) 709s self.curl.perform() 709s 709s > actual = json.loads(sio.getvalue().decode()) 709s 709s tests/readdata_test.py:227: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ____________________ ReaddataTest.test_readdata_file_binary ____________________ 709s 709s self = 709s 709s def test_readdata_file_binary(self): 709s # file opened in binary mode 709s f = open(FORM_SUBMISSION_PATH, 'rb') 709s try: 709s self.curl.setopt(self.curl.URL, 'http://%s:8380/postfields' % localhost) 709s self.curl.setopt(self.curl.POST, 1) 709s self.curl.setopt(self.curl.POSTFIELDSIZE, os.stat(FORM_SUBMISSION_PATH).st_size) 709s self.curl.setopt(self.curl.READDATA, f) 709s sio = util.BytesIO() 709s self.curl.setopt(pycurl.WRITEDATA, sio) 709s self.curl.perform() 709s 709s > actual = json.loads(sio.getvalue().decode()) 709s 709s tests/readdata_test.py:144: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s _____________________ ReaddataTest.test_readdata_file_like _____________________ 709s 709s self = 709s 709s def test_readdata_file_like(self): 709s data = 'hello=world' 709s data_provider = DataProvider(data) 709s self.curl.setopt(self.curl.URL, 'http://%s:8380/postfields' % localhost) 709s self.curl.setopt(self.curl.POST, 1) 709s self.curl.setopt(self.curl.POSTFIELDSIZE, len(data)) 709s self.curl.setopt(self.curl.READDATA, data_provider) 709s sio = util.BytesIO() 709s self.curl.setopt(pycurl.WRITEDATA, sio) 709s self.curl.perform() 709s 709s > actual = json.loads(sio.getvalue().decode()) 709s 709s tests/readdata_test.py:177: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s _____________________ ReaddataTest.test_readdata_file_text _____________________ 709s 709s self = 709s 709s def test_readdata_file_text(self): 709s # file opened in text mode 709s f = open(FORM_SUBMISSION_PATH, 'rt') 709s try: 709s self.curl.setopt(self.curl.URL, 'http://%s:8380/postfields' % localhost) 709s self.curl.setopt(self.curl.POST, 1) 709s self.curl.setopt(self.curl.POSTFIELDSIZE, os.stat(FORM_SUBMISSION_PATH).st_size) 709s self.curl.setopt(self.curl.READDATA, f) 709s sio = util.BytesIO() 709s self.curl.setopt(pycurl.WRITEDATA, sio) 709s self.curl.perform() 709s 709s > actual = json.loads(sio.getvalue().decode()) 709s 709s tests/readdata_test.py:161: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ______________________ ReaddataTest.test_readdata_object _______________________ 709s 709s self = 709s 709s def test_readdata_object(self): 709s d = DataProvider(POSTSTRING) 709s self.curl.setopt(self.curl.URL, 'http://%s:8380/postfields' % localhost) 709s self.curl.setopt(self.curl.POST, 1) 709s self.curl.setopt(self.curl.POSTFIELDSIZE, len(POSTSTRING)) 709s self.curl.setopt(self.curl.READDATA, d) 709s sio = util.BytesIO() 709s self.curl.setopt(pycurl.WRITEFUNCTION, sio.write) 709s self.curl.perform() 709s 709s > actual = json.loads(sio.getvalue().decode()) 709s 709s tests/readdata_test.py:67: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ____________ ReaddataTest.test_readfunction_and_readdata_file_like _____________ 709s 709s self = 709s 709s def test_readfunction_and_readdata_file_like(self): 709s data = 'hello=world' 709s data_provider = DataProvider(data) 709s # data must be the same length 709s function_provider = DataProvider('aaaaa=bbbbb') 709s self.curl.setopt(self.curl.URL, 'http://%s:8380/postfields' % localhost) 709s self.curl.setopt(self.curl.POST, 1) 709s self.curl.setopt(self.curl.POSTFIELDSIZE, len(data)) 709s self.curl.setopt(self.curl.READFUNCTION, function_provider.read) 709s self.curl.setopt(self.curl.READDATA, data_provider) 709s sio = util.BytesIO() 709s self.curl.setopt(pycurl.WRITEDATA, sio) 709s self.curl.perform() 709s 709s > actual = json.loads(sio.getvalue().decode()) 709s 709s tests/readdata_test.py:211: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ____________ ReaddataTest.test_readfunction_and_readdata_real_file _____________ 709s 709s self = 709s 709s def test_readfunction_and_readdata_real_file(self): 709s # data must be the same length 709s with open(FORM_SUBMISSION_PATH) as f: 709s function_provider = DataProvider('aaa=bbb') 709s self.curl.setopt(self.curl.URL, 'http://%s:8380/postfields' % localhost) 709s self.curl.setopt(self.curl.POST, 1) 709s self.curl.setopt(self.curl.POSTFIELDSIZE, os.stat(FORM_SUBMISSION_PATH).st_size) 709s self.curl.setopt(self.curl.READFUNCTION, function_provider.read) 709s self.curl.setopt(self.curl.READDATA, f) 709s sio = util.BytesIO() 709s self.curl.setopt(pycurl.WRITEDATA, sio) 709s self.curl.perform() 709s 709s > actual = json.loads(sio.getvalue().decode()) 709s 709s tests/readdata_test.py:243: 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s /usr/lib/python3.13/json/__init__.py:346: in loads 709s return _default_decoder.decode(s) 709s /usr/lib/python3.13/json/decoder.py:345: in decode 709s obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 709s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 709s 709s self = 709s s = '\n\n\n\n\n\n' 709s idx = 0 709s 709s def raw_decode(self, s, idx=0): 709s """Decode a JSON document from ``s`` (a ``str`` beginning with 709s a JSON document) and return a 2-tuple of the Python 709s representation and the index in ``s`` where the document ended. 709s 709s This can be used to decode a JSON document from a string that may 709s have extraneous data at the end. 709s 709s """ 709s try: 709s obj, end = self.scan_once(s, idx) 709s except StopIteration as err: 709s > raise JSONDecodeError("Expecting value", s, err.value) from None 709s E json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 709s 709s /usr/lib/python3.13/json/decoder.py:363: JSONDecodeError 709s ______________________ RelativeUrlTest.test_get_relative _______________________ 709s 709s self = 709s 709s def test_get_relative(self): 709s self.curl.get('/success') 709s > self.assertEqual('success', self.curl.body().decode()) 709s E AssertionError: 'success' != '\n' 709s E Diff is 4133 characters long. Set self.maxDiff to None to see it. 709s 709s tests/relative_url_test.py:23: AssertionError 709s _____________________________ ResetTest.test_reset _____________________________ 709s 709s self = 709s 709s def test_reset(self): 709s c = util.DefaultCurl() 709s c.setopt(pycurl.USERAGENT, 'Phony/42') 709s c.setopt(pycurl.URL, 'http://%s:8380/header?h=user-agent' % localhost) 709s sio = util.BytesIO() 709s c.setopt(pycurl.WRITEFUNCTION, sio.write) 709s c.perform() 709s user_agent = sio.getvalue().decode() 709s > assert user_agent == 'Phony/42' 709s E assert '\n' == 'Phony/42' 709s E 709s E - Phony/42 709s E + 709s E + 709s E + 709s E + 709s E + ERROR: The requested URL could not be retrieved... 709s E 709s E ...Full output truncated (140 lines hidden), use '-vv' to show 709s 709s tests/reset_test.py:23: AssertionError 709s ___________________________ ResolveTest.test_resolve ___________________________ 709s 709s self = 709s 709s def test_resolve(self): 709s if util.pycurl_version_less_than(7, 21, 3) and not hasattr(pycurl, 'RESOLVE'): 709s raise unittest.SkipTest('libcurl < 7.21.3 or no RESOLVE') 709s 709s self.curl.setopt(pycurl.URL, 'http://p.localhost:8380/success') 709s self.curl.setopt(pycurl.RESOLVE, ['p.localhost:8380:127.0.0.1']) 709s self.curl.perform() 709s > self.assertEqual(200, self.curl.getinfo(pycurl.RESPONSE_CODE)) 709s E AssertionError: 200 != 503 709s 709s tests/resolve_test.py:25: AssertionError 709s ----------------------------- Captured stdout call ----------------------------- 709s s Attribution 2.5 License 709s */ 709s 709s /* Page basics */ 709s * { 709s font-family: verdana, sans-serif; 709s } 709s 709s html body { 709s margin: 0; 709s padding: 0; 709s background: #efefef; 709s font-size: 12px; 709s color: #1e1e1e; 709s } 709s 709s /* Page displayed title area */ 709s #titles { 709s margin-left: 15px; 709s padding: 10px; 709s padding-left: 100px; 709s background: url('/squid-internal-static/icons/SN.png') no-repeat left; 709s } 709s 709s /* initial title */ 709s #titles h1 { 709s color: #000000; 709s } 709s #titles h2 { 709s color: #000000; 709s } 709s 709s /* special event: FTP success page titles */ 709s #titles ftpsuccess { 709s background-color:#00ff00; 709s width:100%; 709s } 709s 709s /* Page displayed body content area */ 709s #content { 709s padding: 10px; 709s background: #ffffff; 709s } 709s 709s /* General text */ 709s p { 709s } 709s 709s /* error brief description */ 709s #error p { 709s } 709s 709s /* some data which may have caused the problem */ 709s #data { 709s } 709s 709s /* the error message received from the system or other software */ 709s #sysmsg { 709s } 709s 709s pre { 709s } 709s 709s /* special event: FTP / Gopher directory listing */ 709s #dirmsg { 709s font-family: courier, monospace; 709s color: black; 709s font-size: 10pt; 709s } 709s #dirlisting { 709s margin-left: 2%; 709s margin-right: 2%; 709s } 709s #dirlisting tr.entry td.icon,td.filename,td.size,td.date { 709s border-bottom: groove; 709s } 709s #dirlisting td.size { 709s width: 50px; 709s text-align: right; 709s padding-right: 5px; 709s } 709s 709s /* horizontal lines */ 709s hr { 709s margin: 0; 709s } 709s 709s /* page displayed footer area */ 709s #footer { 709s font-size: 9px; 709s padding-left: 10px; 709s } 709s 709s 709s body 709s :lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; } 709s :lang(he) { direction: rtl; } 709s --> 709s 709s
709s

ERROR

709s

The requested URL could not be retrieved

709s
709s
709s 709s
709s

The following error was encountered while trying to retrieve the URL: http://127.0.0.1:8380/success

709s 709s
709s

Connection to 127.0.0.1 failed.

709s
709s 709s

The system returned: (111) Connection refused

709s 709s

The remote host or network may be down. Please try the request again.

709s 709s

Your cache administrator is webmaster.

709s 709s
709s
709s 709s
709s 709s 709s 709s 709s 709s 709s ERROR: The requested URL could not be retrieved 709s 709s 709s
709s

ERROR

709s

The requested URL could not be retrieved

709s
709s
709s 709s
709s

The following error was encountered while trying to retrieve the URL: http://127.0.0.1:8380/long_pause

709s 709s
709s

Connection to 127.0.0.1 failed.

709s
709s 709s

The system returned: (111) Connection refused

709s 709s

The remote host or network may be down. Please try the request again.

709s 709s

Your cache administrator is webmaster.

709s 709s
709s
709s 709s
709s 709s 709s make: *** [Makefile:107: do-test] Error 1 711s autopkgtest [09:47:42]: test livetest.sh: -----------------------] 713s livetest.sh FAIL non-zero exit status 2 713s autopkgtest [09:47:44]: test livetest.sh: - - - - - - - - - - results - - - - - - - - - - 714s autopkgtest [09:47:45]: @@@@@@@@@@@@@@@@@@@@ summary 714s command1 PASS 714s livetest.sh FAIL non-zero exit status 2 731s nova [W] Using flock in prodstack7-riscv64 731s Creating nova instance adt-questing-riscv64-pycurl-20250502-093551-juju-7f2275-prod-proposed-migration-environment-21-9d0a54fa-f454-4c51-8a45-2a89a590bd14 from image adt/ubuntu-questing-riscv64-server-20250501.img (UUID 2359bd49-b5b7-4912-915a-f8dc98a06fb2)... 731s nova [W] Timed out waiting for 0e2168ee-86b5-456a-9549-8be15db783b1 to get deleted.