0s autopkgtest [23:25:25]: starting date and time: 2024-03-26 23:25:25+0000 0s autopkgtest [23:25:25]: git checkout: 4a1cd702 l/adt_testbed: don't blame the testbed for unsolvable build deps 0s autopkgtest [23:25:25]: host juju-7f2275-prod-proposed-migration-environment-3; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.44npg1zt/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed --apt-upgrade r-cran-unitizer --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=r-base/4.3.3-2build1 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-3@bos02-s390x-7.secgroup --name adt-noble-s390x-r-cran-unitizer-20240326-232525-juju-7f2275-prod-proposed-migration-environment-3-47e20f7b-1633-4e2f-94b0-9758f9fd7af0 --image adt/ubuntu-noble-s390x-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-3 --net-id=net_prod-proposed-migration -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 161s autopkgtest [23:28:04]: testbed dpkg architecture: s390x 161s Get:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease [117 kB] 161s autopkgtest [23:28:05]: testbed apt version: 2.7.12 161s autopkgtest [23:28:05]: @@@@@@@@@@@@@@@@@@@@ test bed setup 161s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/multiverse Sources [55.4 kB] 161s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/restricted Sources [8504 B] 161s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/universe Sources [3985 kB] 161s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main Sources [497 kB] 161s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main s390x Packages [694 kB] 161s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main s390x c-n-f Metadata [3032 B] 161s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/restricted s390x Packages [1372 B] 161s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/restricted s390x c-n-f Metadata [116 B] 161s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x Packages [4152 kB] 162s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x c-n-f Metadata [7292 B] 162s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/multiverse s390x Packages [48.3 kB] 162s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/multiverse s390x c-n-f Metadata [116 B] 164s Fetched 9569 kB in 3s (3603 kB/s) 164s Reading package lists... 166s Reading package lists... 166s Building dependency tree... 166s Reading state information... 166s Calculating upgrade... 166s The following packages will be upgraded: 166s psmisc 166s 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 166s Need to get 178 kB of archives. 166s After this operation, 28.7 kB disk space will be freed. 166s Get:1 http://ftpmaster.internal/ubuntu noble/main s390x psmisc s390x 23.7-1 [178 kB] 167s Fetched 178 kB in 0s (441 kB/s) 167s (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 ... 52170 files and directories currently installed.) 167s Preparing to unpack .../psmisc_23.7-1_s390x.deb ... 167s Unpacking psmisc (23.7-1) over (23.6-2) ... 167s Setting up psmisc (23.7-1) ... 167s Processing triggers for man-db (2.12.0-3) ... 168s Reading package lists... 168s Building dependency tree... 168s Reading state information... 168s 0 upgraded, 0 newly installed, 0 to remove and 244 not upgraded. 169s Hit:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease 169s Hit:2 http://ftpmaster.internal/ubuntu noble InRelease 169s Hit:3 http://ftpmaster.internal/ubuntu noble-updates InRelease 169s Hit:4 http://ftpmaster.internal/ubuntu noble-security InRelease 170s Reading package lists... 170s Reading package lists... 170s Building dependency tree... 170s Reading state information... 171s Calculating upgrade... 171s The following packages were automatically installed and are no longer required: 171s libaio1 libnetplan0 python3-distutils python3-lib2to3 171s Use 'sudo apt autoremove' to remove them. 171s The following packages will be REMOVED: 171s libapt-pkg6.0 libarchive13 libatm1 libcurl3-gnutls libcurl4 libdb5.3 libelf1 171s libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls30 libgpgme11 171s libhogweed6 libmagic1 libnettle8 libnpth0 libnvme1 libparted2 libperl5.38 171s libpng16-16 libpsl5 libreadline8 libreiserfscore0 libssl3 libtirpc3 liburcu8 171s libuv1 171s The following NEW packages will be installed: 171s bpfcc-tools bpftrace fontconfig-config fonts-dejavu-core fonts-dejavu-mono 171s hwdata ieee-data libaio1t64 libapt-pkg6.0t64 libarchive13t64 libatm1t64 171s libbpfcc libc-dev-bin libc-devtools libc6-dev libclang-cpp18 libclang1-18 171s libcrypt-dev libcurl3t64-gnutls libcurl4t64 libdb5.3t64 libdeflate0 171s libdw1t64 libelf1t64 libext2fs2t64 libfontconfig1 libfreetype6 libgd3 171s libgdbm-compat4t64 libgdbm6t64 libglib2.0-0t64 libgnutls30t64 libgpgme11t64 171s libhogweed6t64 libjbig0 libjpeg-turbo8 libjpeg8 libllvm18 libmagic1t64 171s libnetplan1 libnettle8t64 libnpth0t64 libnvme1t64 libparted2t64 171s libperl5.38t64 libpng16-16t64 libpsl5t64 libreadline8t64 libreiserfscore0t64 171s libsharpyuv0 libssl3t64 libtiff6 libtirpc3t64 liburcu8t64 libuv1t64 libwebp7 171s libxpm4 linux-headers-6.8.0-20 linux-headers-6.8.0-20-generic 171s linux-image-6.8.0-20-generic linux-libc-dev linux-modules-6.8.0-20-generic 171s linux-modules-extra-6.8.0-20-generic linux-tools-6.8.0-20 171s linux-tools-6.8.0-20-generic linux-tools-common manpages manpages-dev 171s python3-bpfcc python3-netaddr rpcsvc-proto ubuntu-kernel-accessories 171s xdg-user-dirs 171s The following packages have been kept back: 171s s390-tools 171s The following packages will be upgraded: 171s apparmor apt apt-utils base-files bash bind9-dnsutils bind9-host bind9-libs 171s binutils binutils-common binutils-s390x-linux-gnu bolt bsdextrautils 171s bsdutils btrfs-progs coreutils cryptsetup-bin curl dbus dbus-bin dbus-daemon 171s dbus-session-bus-common dbus-system-bus-common dbus-user-session dhcpcd-base 171s dirmngr dmsetup dpkg dpkg-dev e2fsprogs e2fsprogs-l10n eject fdisk file ftp 171s fwupd gawk gcc-13-base gcc-14-base gir1.2-girepository-2.0 gir1.2-glib-2.0 171s gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpgconf gpgsm gpgv 171s groff-base ibverbs-providers inetutils-telnet info initramfs-tools 171s initramfs-tools-bin initramfs-tools-core install-info iproute2 jq keyboxd 171s kmod kpartx krb5-locales libapparmor1 libaudit-common libaudit1 libbinutils 171s libblkid1 libblockdev-crypto3 libblockdev-fs3 libblockdev-loop3 171s libblockdev-mdraid3 libblockdev-nvme3 libblockdev-part3 libblockdev-swap3 171s libblockdev-utils3 libblockdev3 libbpf1 libbrotli1 libcap-ng0 libcom-err2 171s libcryptsetup12 libctf-nobfd0 libctf0 libdbus-1-3 libdebconfclient0 171s libdevmapper1.02.1 libdpkg-perl libevent-core-2.1-7 libexpat1 libfdisk1 171s libfido2-1 libftdi1-2 libfwupd2 libgcc-s1 libgirepository-1.0-1 171s libglib2.0-data libgssapi-krb5-2 libgudev-1.0-0 libgusb2 libibverbs1 171s libjcat1 libjq1 libjson-glib-1.0-0 libjson-glib-1.0-common libk5crypto3 171s libkmod2 libkrb5-3 libkrb5support0 libldap-common libldap2 171s liblocale-gettext-perl liblzma5 libmagic-mgc libmbim-glib4 libmbim-proxy 171s libmm-glib0 libmount1 libnghttp2-14 libnsl2 libnss-systemd libpam-modules 171s libpam-modules-bin libpam-runtime libpam-systemd libpam0g libplymouth5 171s libpolkit-agent-1-0 libpolkit-gobject-1-0 libproc2-0 libprotobuf-c1 171s libpython3-stdlib libpython3.11-minimal libpython3.11-stdlib 171s libpython3.12-minimal libpython3.12-stdlib libqmi-glib5 libqmi-proxy 171s libqrtr-glib0 librtmp1 libsasl2-2 libsasl2-modules libsasl2-modules-db 171s libseccomp2 libselinux1 libsemanage-common libsemanage2 libsframe1 libslang2 171s libsmartcols1 libsqlite3-0 libss2 libssh-4 libstdc++6 libsystemd-shared 171s libsystemd0 libtext-charwidth-perl libtext-iconv-perl libtirpc-common 171s libudev1 libudisks2-0 libusb-1.0-0 libuuid1 libvolume-key1 libxml2 libxmlb2 171s libxmuu1 linux-generic linux-headers-generic linux-headers-virtual 171s linux-image-generic linux-image-virtual linux-virtual logsave lshw lsof 171s man-db motd-news-config mount mtr-tiny multipath-tools netplan-generator 171s netplan.io openssh-client openssh-server openssh-sftp-server openssl parted 171s perl perl-base perl-modules-5.38 pinentry-curses plymouth 171s plymouth-theme-ubuntu-text procps python-apt-common python3 python3-apt 171s python3-cryptography python3-dbus python3-distutils python3-gdbm python3-gi 171s python3-lib2to3 python3-minimal python3-netplan python3-pkg-resources 171s python3-pyrsistent python3-setuptools python3-typing-extensions python3-yaml 171s python3.11 python3.11-minimal python3.12 python3.12-minimal readline-common 171s rsync rsyslog s390-tools-data shared-mime-info sudo systemd systemd-dev 171s systemd-resolved systemd-sysv systemd-timesyncd tcpdump telnet tnftp 171s ubuntu-pro-client ubuntu-pro-client-l10n udev udisks2 usb.ids util-linux 171s uuid-runtime vim-common vim-tiny wget xxd xz-utils zlib1g 171s 243 upgraded, 73 newly installed, 28 to remove and 1 not upgraded. 171s Need to get 228 MB of archives. 171s After this operation, 524 MB of additional disk space will be used. 171s Get:1 http://ftpmaster.internal/ubuntu noble-proposed/main s390x motd-news-config all 13ubuntu8 [5098 B] 171s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main s390x base-files s390x 13ubuntu8 [74.2 kB] 171s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bash s390x 5.2.21-2ubuntu3 [845 kB] 172s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bsdutils s390x 1:2.39.3-9ubuntu2 [96.1 kB] 172s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libbrotli1 s390x 1.1.0-2build1 [375 kB] 172s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgssapi-krb5-2 s390x 1.20.1-6ubuntu1 [149 kB] 172s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libkrb5-3 s390x 1.20.1-6ubuntu1 [360 kB] 172s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libkrb5support0 s390x 1.20.1-6ubuntu1 [34.6 kB] 172s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libk5crypto3 s390x 1.20.1-6ubuntu1 [90.3 kB] 172s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcom-err2 s390x 1.47.0-2.4~exp1ubuntu2 [22.9 kB] 172s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/main s390x zlib1g s390x 1:1.3.dfsg-3.1ubuntu1 [75.7 kB] 172s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main s390x librtmp1 s390x 2.4+20151223.gitfa8646d.1-2build6 [58.4 kB] 172s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main s390x udisks2 s390x 2.10.1-6 [298 kB] 172s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libudisks2-0 s390x 2.10.1-6 [179 kB] 172s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblkid1 s390x 2.39.3-9ubuntu2 [128 kB] 172s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main s390x liblzma5 s390x 5.6.0-0.2 [137 kB] 172s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main s390x kmod s390x 31+20240202-2ubuntu4 [107 kB] 173s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libkmod2 s390x 31+20240202-2ubuntu4 [56.3 kB] 173s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-dev all 255.4-1ubuntu5 [103 kB] 173s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-timesyncd s390x 255.4-1ubuntu5 [35.3 kB] 173s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-session-bus-common all 1.14.10-4ubuntu2 [80.3 kB] 173s Get:22 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libaudit-common all 1:3.1.2-2.1 [5674 B] 173s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcap-ng0 s390x 0.8.4-2build1 [15.7 kB] 173s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libaudit1 s390x 1:3.1.2-2.1 [48.9 kB] 173s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam0g s390x 1.5.3-5ubuntu3 [69.8 kB] 173s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libselinux1 s390x 3.5-2ubuntu1 [84.7 kB] 173s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcurl4t64 s390x 8.5.0-2ubuntu8 [363 kB] 173s Get:28 http://ftpmaster.internal/ubuntu noble-proposed/main s390x curl s390x 8.5.0-2ubuntu8 [227 kB] 173s Get:29 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpsl5t64 s390x 0.21.2-1.1 [57.6 kB] 173s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main s390x wget s390x 1.21.4-1ubuntu2 [351 kB] 173s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main s390x tnftp s390x 20230507-2build1 [107 kB] 173s Get:32 http://ftpmaster.internal/ubuntu noble-proposed/main s390x tcpdump s390x 4.99.4-3ubuntu2 [490 kB] 173s Get:33 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsystemd-shared s390x 255.4-1ubuntu5 [2131 kB] 174s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-resolved s390x 255.4-1ubuntu5 [304 kB] 174s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main s390x sudo s390x 1.9.15p5-3ubuntu3 [968 kB] 175s Get:36 http://ftpmaster.internal/ubuntu noble-proposed/main s390x rsync s390x 3.2.7-1build1 [446 kB] 175s Get:37 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-cryptography s390x 41.0.7-4build2 [918 kB] 175s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssl s390x 3.0.13-0ubuntu2 [1010 kB] 175s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssh-sftp-server s390x 1:9.6p1-3ubuntu11 [39.0 kB] 175s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssh-client s390x 1:9.6p1-3ubuntu11 [935 kB] 176s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main s390x openssh-server s390x 1:9.6p1-3ubuntu11 [529 kB] 176s Get:42 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libssh-4 s390x 0.10.6-2build1 [189 kB] 176s Get:43 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsasl2-modules s390x 2.1.28+dfsg1-5ubuntu1 [76.6 kB] 176s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.12 s390x 3.12.2-4build3 [645 kB] 176s Get:45 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.12-minimal s390x 3.12.2-4build3 [2419 kB] 177s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.12-minimal s390x 3.12.2-4build3 [829 kB] 177s Get:47 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libparted2t64 s390x 3.6-3.1build2 [172 kB] 177s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main s390x parted s390x 3.6-3.1build2 [44.6 kB] 177s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.11 s390x 3.11.8-1build4 [589 kB] 178s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3.11-minimal s390x 3.11.8-1build4 [2280 kB] 178s Get:51 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.11-minimal s390x 3.11.8-1build4 [838 kB] 179s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.11-stdlib s390x 3.11.8-1build4 [1944 kB] 179s Get:53 http://ftpmaster.internal/ubuntu noble-proposed/main s390x shared-mime-info s390x 2.4-1build1 [474 kB] 179s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gir1.2-girepository-2.0 s390x 1.79.1-1ubuntu6 [24.5 kB] 179s Get:55 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gir1.2-glib-2.0 s390x 2.79.3-3ubuntu5 [180 kB] 179s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgirepository-1.0-1 s390x 1.79.1-1ubuntu6 [84.0 kB] 179s Get:57 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-gi s390x 3.47.0-3build1 [236 kB] 179s Get:58 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-dbus s390x 1.3.2-5build2 [100 kB] 180s Get:59 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnetplan1 s390x 1.0-1 [123 kB] 180s Get:60 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-netplan s390x 1.0-1 [23.0 kB] 180s Get:61 http://ftpmaster.internal/ubuntu noble-proposed/main s390x netplan-generator s390x 1.0-1 [59.1 kB] 180s Get:62 http://ftpmaster.internal/ubuntu noble-proposed/main s390x initramfs-tools-bin s390x 0.142ubuntu23 [20.5 kB] 180s Get:63 http://ftpmaster.internal/ubuntu noble-proposed/main s390x initramfs-tools-core all 0.142ubuntu23 [50.1 kB] 180s Get:64 http://ftpmaster.internal/ubuntu noble-proposed/main s390x initramfs-tools all 0.142ubuntu23 [9058 B] 180s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/main s390x netplan.io s390x 1.0-1 [65.4 kB] 180s Get:66 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxmlb2 s390x 0.3.15-1build1 [70.6 kB] 180s Get:67 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgpgme11t64 s390x 1.18.0-4.1ubuntu3 [150 kB] 180s Get:68 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libvolume-key1 s390x 0.3.12-7build1 [40.8 kB] 180s Get:69 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libqrtr-glib0 s390x 1.2.2-1ubuntu3 [17.5 kB] 180s Get:70 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libqmi-glib5 s390x 1.35.2-0ubuntu1 [918 kB] 180s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libqmi-proxy s390x 1.35.2-0ubuntu1 [6122 B] 180s Get:72 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpolkit-agent-1-0 s390x 124-1ubuntu1 [17.8 kB] 180s Get:73 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpolkit-gobject-1-0 s390x 124-1ubuntu1 [48.3 kB] 180s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmm-glib0 s390x 1.23.4-0ubuntu1 [251 kB] 180s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmbim-glib4 s390x 1.31.2-0ubuntu2 [238 kB] 180s Get:76 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmbim-proxy s390x 1.31.2-0ubuntu2 [6154 B] 180s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjson-glib-1.0-common all 1.8.0-2build1 [4210 B] 180s Get:78 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjson-glib-1.0-0 s390x 1.8.0-2build1 [68.4 kB] 180s Get:79 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgusb2 s390x 0.4.8-1build1 [39.0 kB] 180s Get:80 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgudev-1.0-0 s390x 1:238-3ubuntu2 [15.7 kB] 180s Get:81 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libarchive13t64 s390x 3.7.2-1.1ubuntu2 [419 kB] 180s Get:82 http://ftpmaster.internal/ubuntu noble-proposed/main s390x fwupd s390x 1.9.15-2 [4435 kB] 181s Get:83 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcurl3t64-gnutls s390x 8.5.0-2ubuntu8 [356 kB] 182s Get:84 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfwupd2 s390x 1.9.15-2 [136 kB] 182s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev3 s390x 3.1.0-1build1 [52.3 kB] 182s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-utils3 s390x 3.1.0-1build1 [19.2 kB] 182s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-swap3 s390x 3.1.0-1build1 [7778 B] 182s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-part3 s390x 3.1.0-1build1 [15.4 kB] 182s Get:89 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnvme1t64 s390x 1.8-3 [78.7 kB] 182s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-nvme3 s390x 3.1.0-1build1 [18.3 kB] 182s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-mdraid3 s390x 3.1.0-1build1 [13.2 kB] 182s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-loop3 s390x 3.1.0-1build1 [7138 B] 182s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/main s390x e2fsprogs-l10n all 1.47.0-2.4~exp1ubuntu2 [5996 B] 182s Get:94 http://ftpmaster.internal/ubuntu noble-proposed/main s390x logsave s390x 1.47.0-2.4~exp1ubuntu2 [22.5 kB] 182s Get:95 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libext2fs2t64 s390x 1.47.0-2.4~exp1ubuntu2 [235 kB] 182s Get:96 http://ftpmaster.internal/ubuntu noble-proposed/main s390x e2fsprogs s390x 1.47.0-2.4~exp1ubuntu2 [615 kB] 182s Get:97 http://ftpmaster.internal/ubuntu noble/main s390x libreiserfscore0t64 s390x 1:3.6.27-7.1 [85.5 kB] 182s Get:98 http://ftpmaster.internal/ubuntu noble-proposed/main s390x btrfs-progs s390x 6.6.3-1.1build1 [959 kB] 182s Get:99 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-fs3 s390x 3.1.0-1build1 [36.5 kB] 182s Get:100 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libblockdev-crypto3 s390x 3.1.0-1build1 [21.6 kB] 182s Get:101 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bolt s390x 0.9.6-2build1 [142 kB] 182s Get:102 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libglib2.0-0t64 s390x 2.79.3-3ubuntu5 [1566 kB] 183s Get:103 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjcat1 s390x 0.2.0-2build2 [34.4 kB] 183s Get:104 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libldap2 s390x 2.6.7+dfsg-1~exp1ubuntu6 [202 kB] 183s Get:105 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ubuntu-pro-client-l10n s390x 31.2.2 [19.4 kB] 183s Get:106 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ubuntu-pro-client s390x 31.2.2 [214 kB] 183s Get:107 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gnupg-utils s390x 2.4.4-2ubuntu15 [116 kB] 183s Get:108 http://ftpmaster.internal/ubuntu noble-proposed/main s390x keyboxd s390x 2.4.4-2ubuntu15 [83.1 kB] 183s Get:109 http://ftpmaster.internal/ubuntu noble/main s390x libnpth0t64 s390x 1.6-3.1 [8148 B] 183s Get:110 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpgv s390x 2.4.4-2ubuntu15 [165 kB] 183s Get:111 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpg-wks-client s390x 2.4.4-2ubuntu15 [76.8 kB] 183s Get:112 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpg-agent s390x 2.4.4-2ubuntu15 [240 kB] 183s Get:113 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpg s390x 2.4.4-2ubuntu15 [589 kB] 184s Get:114 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dirmngr s390x 2.4.4-2ubuntu15 [340 kB] 184s Get:115 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gnupg all 2.4.4-2ubuntu15 [359 kB] 184s Get:116 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-apt s390x 2.7.7 [171 kB] 184s Get:117 http://ftpmaster.internal/ubuntu noble-proposed/main s390x apt-utils s390x 2.7.14 [214 kB] 184s Get:118 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libapt-pkg6.0t64 s390x 2.7.14 [1014 kB] 184s Get:119 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnettle8t64 s390x 3.9.1-2.2 [210 kB] 184s Get:120 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libhogweed6t64 s390x 3.9.1-2.2 [204 kB] 184s Get:121 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgnutls30t64 s390x 3.8.3-1.1ubuntu2 [1044 kB] 184s Get:122 http://ftpmaster.internal/ubuntu noble-proposed/main s390x apt s390x 2.7.14 [1390 kB] 184s Get:123 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpgconf s390x 2.4.4-2ubuntu15 [111 kB] 184s Get:124 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gpgsm s390x 2.4.4-2ubuntu15 [244 kB] 184s Get:125 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libreadline8t64 s390x 8.2-4 [170 kB] 184s Get:126 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gawk s390x 1:5.2.1-2build2 [496 kB] 184s Get:127 http://ftpmaster.internal/ubuntu noble-proposed/main s390x fdisk s390x 2.39.3-9ubuntu2 [124 kB] 184s Get:128 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3.12-stdlib s390x 3.12.2-4build3 [2046 kB] 185s Get:129 http://ftpmaster.internal/ubuntu noble-proposed/main s390x perl-base s390x 5.38.2-3.2 [1961 kB] 185s Get:130 http://ftpmaster.internal/ubuntu noble-proposed/main s390x perl-modules-5.38 all 5.38.2-3.2 [3110 kB] 185s Get:131 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-gdbm s390x 3.12.2-3ubuntu1.1 [19.0 kB] 185s Get:132 http://ftpmaster.internal/ubuntu noble-proposed/main s390x man-db s390x 2.12.0-3build4 [1246 kB] 185s Get:133 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgdbm6t64 s390x 1.23-5.1 [36.4 kB] 185s Get:134 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgdbm-compat4t64 s390x 1.23-5.1 [6880 B] 185s Get:135 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libperl5.38t64 s390x 5.38.2-3.2 [5007 kB] 185s Get:136 http://ftpmaster.internal/ubuntu noble-proposed/main s390x perl s390x 5.38.2-3.2 [231 kB] 185s Get:137 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdb5.3t64 s390x 5.3.28+dfsg2-6 [763 kB] 186s Get:138 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsasl2-modules-db s390x 2.1.28+dfsg1-5ubuntu1 [21.1 kB] 186s Get:139 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsasl2-2 s390x 2.1.28+dfsg1-5ubuntu1 [57.8 kB] 186s Get:140 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfido2-1 s390x 1.14.0-1build1 [81.0 kB] 186s Get:141 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcryptsetup12 s390x 2:2.7.0-1ubuntu2 [264 kB] 186s Get:142 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dhcpcd-base s390x 1:10.0.6-1ubuntu2 [217 kB] 186s Get:143 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libuv1t64 s390x 1.48.0-1.1 [101 kB] 186s Get:144 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bind9-host s390x 1:9.18.24-0ubuntu3 [50.5 kB] 186s Get:145 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bind9-dnsutils s390x 1:9.18.24-0ubuntu3 [162 kB] 186s Get:146 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bind9-libs s390x 1:9.18.24-0ubuntu3 [1243 kB] 186s Get:147 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libssl3t64 s390x 3.0.13-0ubuntu2 [1675 kB] 186s Get:148 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnss-systemd s390x 255.4-1ubuntu5 [166 kB] 186s Get:149 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libudev1 s390x 255.4-1ubuntu5 [178 kB] 186s Get:150 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd s390x 255.4-1ubuntu5 [3533 kB] 186s Get:151 http://ftpmaster.internal/ubuntu noble-proposed/main s390x udev s390x 255.4-1ubuntu5 [1887 kB] 186s Get:152 http://ftpmaster.internal/ubuntu noble-proposed/main s390x systemd-sysv s390x 255.4-1ubuntu5 [11.9 kB] 186s Get:153 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-systemd s390x 255.4-1ubuntu5 [242 kB] 186s Get:154 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsystemd0 s390x 255.4-1ubuntu5 [443 kB] 186s Get:155 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-modules-bin s390x 1.5.3-5ubuntu3 [57.4 kB] 186s Get:156 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-modules s390x 1.5.3-5ubuntu3 [289 kB] 186s Get:157 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpam-runtime all 1.5.3-5ubuntu3 [40.8 kB] 186s Get:158 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-user-session s390x 1.14.10-4ubuntu2 [9960 B] 186s Get:159 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libapparmor1 s390x 4.0.0-beta3-0ubuntu2 [50.8 kB] 186s Get:160 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libexpat1 s390x 2.6.1-2 [94.8 kB] 186s Get:161 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-system-bus-common all 1.14.10-4ubuntu2 [81.5 kB] 186s Get:162 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-bin s390x 1.14.10-4ubuntu2 [41.4 kB] 186s Get:163 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus s390x 1.14.10-4ubuntu2 [24.3 kB] 186s Get:164 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dbus-daemon s390x 1.14.10-4ubuntu2 [118 kB] 186s Get:165 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdbus-1-3 s390x 1.14.10-4ubuntu2 [213 kB] 186s Get:166 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmount1 s390x 2.39.3-9ubuntu2 [138 kB] 186s Get:167 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libseccomp2 s390x 2.5.5-1ubuntu2 [53.4 kB] 186s Get:168 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdevmapper1.02.1 s390x 2:1.02.185-3ubuntu2 [142 kB] 186s Get:169 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libuuid1 s390x 2.39.3-9ubuntu2 [35.6 kB] 186s Get:170 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfdisk1 s390x 2.39.3-9ubuntu2 [151 kB] 186s Get:171 http://ftpmaster.internal/ubuntu noble-proposed/main s390x mount s390x 2.39.3-9ubuntu2 [119 kB] 186s Get:172 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsqlite3-0 s390x 3.45.1-1ubuntu1 [747 kB] 186s Get:173 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gcc-14-base s390x 14-20240315-1ubuntu1 [47.0 kB] 186s Get:174 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgcc-s1 s390x 14-20240315-1ubuntu1 [35.9 kB] 186s Get:175 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libstdc++6 s390x 14-20240315-1ubuntu1 [908 kB] 186s Get:176 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dpkg s390x 1.22.6ubuntu5 [1278 kB] 186s Get:177 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-minimal s390x 3.12.2-0ubuntu1 [27.1 kB] 186s Get:178 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3 s390x 3.12.2-0ubuntu1 [24.1 kB] 186s Get:179 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpython3-stdlib s390x 3.12.2-0ubuntu1 [9804 B] 186s Get:180 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsmartcols1 s390x 2.39.3-9ubuntu2 [67.9 kB] 186s Get:181 http://ftpmaster.internal/ubuntu noble-proposed/main s390x bsdextrautils s390x 2.39.3-9ubuntu2 [76.3 kB] 186s Get:182 http://ftpmaster.internal/ubuntu noble-proposed/main s390x groff-base s390x 1.23.0-3build1 [1049 kB] 186s Get:183 http://ftpmaster.internal/ubuntu noble-proposed/main s390x pinentry-curses s390x 1.2.1-3ubuntu4 [37.6 kB] 186s Get:184 http://ftpmaster.internal/ubuntu noble-proposed/main s390x readline-common all 8.2-4 [56.4 kB] 186s Get:185 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxml2 s390x 2.9.14+dfsg-1.3ubuntu2 [818 kB] 186s Get:186 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libbpf1 s390x 1:1.3.0-2build1 [176 kB] 186s Get:187 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libelf1t64 s390x 0.190-1.1build2 [69.7 kB] 186s Get:188 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtirpc-common all 1.3.4+ds-1.1 [8018 B] 186s Get:189 http://ftpmaster.internal/ubuntu noble-proposed/main s390x lsof s390x 4.95.0-1build2 [248 kB] 187s Get:190 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnsl2 s390x 1.3.0-3build2 [44.1 kB] 187s Get:191 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtirpc3t64 s390x 1.3.4+ds-1.1 [85.8 kB] 187s Get:192 http://ftpmaster.internal/ubuntu noble-proposed/main s390x iproute2 s390x 6.1.0-1ubuntu5 [1156 kB] 187s Get:193 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-yaml s390x 6.0.1-2build1 [121 kB] 187s Get:194 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libusb-1.0-0 s390x 2:1.0.27-1 [54.8 kB] 187s Get:195 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libprotobuf-c1 s390x 1.4.1-1ubuntu3 [23.4 kB] 187s Get:196 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libnghttp2-14 s390x 1.59.0-1build1 [77.8 kB] 187s Get:197 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libproc2-0 s390x 2:4.0.4-4ubuntu2 [60.1 kB] 187s Get:198 http://ftpmaster.internal/ubuntu noble-proposed/main s390x procps s390x 2:4.0.4-4ubuntu2 [724 kB] 187s Get:199 http://ftpmaster.internal/ubuntu noble-proposed/main s390x coreutils s390x 9.4-3ubuntu3 [1482 kB] 187s Get:200 http://ftpmaster.internal/ubuntu noble-proposed/main s390x util-linux s390x 2.39.3-9ubuntu2 [1143 kB] 187s Get:201 http://ftpmaster.internal/ubuntu noble-proposed/main s390x file s390x 1:5.45-3 [22.2 kB] 187s Get:202 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmagic-mgc s390x 1:5.45-3 [305 kB] 187s Get:203 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libmagic1t64 s390x 1:5.45-3 [93.1 kB] 187s Get:204 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libplymouth5 s390x 24.004.60-1ubuntu6 [151 kB] 187s Get:205 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpng16-16t64 s390x 1.6.43-3 [200 kB] 187s Get:206 http://ftpmaster.internal/ubuntu noble-proposed/main s390x multipath-tools s390x 0.9.4-5ubuntu6 [318 kB] 187s Get:207 http://ftpmaster.internal/ubuntu noble/main s390x liburcu8t64 s390x 0.14.0-3.1 [67.3 kB] 187s Get:208 http://ftpmaster.internal/ubuntu noble-proposed/main s390x liblocale-gettext-perl s390x 1.07-6ubuntu4 [15.8 kB] 187s Get:209 http://ftpmaster.internal/ubuntu noble-proposed/main s390x uuid-runtime s390x 2.39.3-9ubuntu2 [33.4 kB] 187s Get:210 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdebconfclient0 s390x 0.271ubuntu2 [11.4 kB] 187s Get:211 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsemanage-common all 3.5-1build4 [10.1 kB] 187s Get:212 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsemanage2 s390x 3.5-1build4 [96.7 kB] 187s Get:213 http://ftpmaster.internal/ubuntu noble-proposed/main s390x install-info s390x 7.1-3build1 [64.5 kB] 187s Get:214 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gcc-13-base s390x 13.2.0-21ubuntu1 [48.3 kB] 187s Get:215 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libss2 s390x 1.47.0-2.4~exp1ubuntu2 [17.2 kB] 187s Get:216 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dmsetup s390x 2:1.02.185-3ubuntu2 [80.4 kB] 187s Get:217 http://ftpmaster.internal/ubuntu noble-proposed/main s390x eject s390x 2.39.3-9ubuntu2 [26.2 kB] 187s Get:218 http://ftpmaster.internal/ubuntu noble-proposed/main s390x krb5-locales all 1.20.1-6ubuntu1 [13.8 kB] 188s Get:219 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libglib2.0-data all 2.79.3-3ubuntu5 [46.6 kB] 188s Get:220 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libslang2 s390x 2.3.3-3build1 [501 kB] 188s Get:221 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtext-charwidth-perl s390x 0.04-11build2 [9484 B] 188s Get:222 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtext-iconv-perl s390x 1.7-8build2 [13.8 kB] 188s Get:223 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python-apt-common all 2.7.7 [19.8 kB] 188s Get:224 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-setuptools all 68.1.2-2ubuntu1 [396 kB] 188s Get:225 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-pkg-resources all 68.1.2-2ubuntu1 [168 kB] 188s Get:226 http://ftpmaster.internal/ubuntu noble-proposed/main s390x rsyslog s390x 8.2312.0-3ubuntu7 [536 kB] 188s Get:227 http://ftpmaster.internal/ubuntu noble-proposed/main s390x vim-tiny s390x 2:9.1.0016-1ubuntu6 [879 kB] 188s Get:228 http://ftpmaster.internal/ubuntu noble-proposed/main s390x vim-common all 2:9.1.0016-1ubuntu6 [385 kB] 188s Get:229 http://ftpmaster.internal/ubuntu noble/main s390x xdg-user-dirs s390x 0.18-1 [18.5 kB] 188s Get:230 http://ftpmaster.internal/ubuntu noble-proposed/main s390x xxd s390x 2:9.1.0016-1ubuntu6 [63.5 kB] 188s Get:231 http://ftpmaster.internal/ubuntu noble-proposed/main s390x apparmor s390x 4.0.0-beta3-0ubuntu2 [710 kB] 188s Get:232 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ftp all 20230507-2build1 [4724 B] 188s Get:233 http://ftpmaster.internal/ubuntu noble-proposed/main s390x inetutils-telnet s390x 2:2.5-3ubuntu3 [105 kB] 188s Get:234 http://ftpmaster.internal/ubuntu noble-proposed/main s390x info s390x 7.1-3build1 [152 kB] 188s Get:235 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxmuu1 s390x 2:1.1.3-3build1 [8860 B] 188s Get:236 http://ftpmaster.internal/ubuntu noble-proposed/main s390x lshw s390x 02.19.git.2021.06.19.996aaad9c7-2build2 [346 kB] 188s Get:237 http://ftpmaster.internal/ubuntu noble/main s390x manpages all 6.05.01-1 [1340 kB] 188s Get:238 http://ftpmaster.internal/ubuntu noble-proposed/main s390x mtr-tiny s390x 0.95-1.1build1 [57.0 kB] 188s Get:239 http://ftpmaster.internal/ubuntu noble-proposed/main s390x plymouth-theme-ubuntu-text s390x 24.004.60-1ubuntu6 [10.2 kB] 188s Get:240 http://ftpmaster.internal/ubuntu noble-proposed/main s390x plymouth s390x 24.004.60-1ubuntu6 [147 kB] 188s Get:241 http://ftpmaster.internal/ubuntu noble-proposed/main s390x telnet all 0.17+2.5-3ubuntu3 [3682 B] 188s Get:242 http://ftpmaster.internal/ubuntu noble-proposed/main s390x usb.ids all 2024.03.18-1 [223 kB] 188s Get:243 http://ftpmaster.internal/ubuntu noble-proposed/main s390x xz-utils s390x 5.6.0-0.2 [274 kB] 188s Get:244 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libctf0 s390x 2.42-4ubuntu1 [98.4 kB] 188s Get:245 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libctf-nobfd0 s390x 2.42-4ubuntu1 [100 kB] 188s Get:246 http://ftpmaster.internal/ubuntu noble-proposed/main s390x binutils-s390x-linux-gnu s390x 2.42-4ubuntu1 [2270 kB] 189s Get:247 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libbinutils s390x 2.42-4ubuntu1 [477 kB] 189s Get:248 http://ftpmaster.internal/ubuntu noble-proposed/main s390x binutils s390x 2.42-4ubuntu1 [3056 B] 189s Get:249 http://ftpmaster.internal/ubuntu noble-proposed/main s390x binutils-common s390x 2.42-4ubuntu1 [217 kB] 189s Get:250 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsframe1 s390x 2.42-4ubuntu1 [14.2 kB] 189s Get:251 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libllvm18 s390x 1:18.1.2-1ubuntu2 [33.4 MB] 192s Get:252 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libclang-cpp18 s390x 1:18.1.2-1ubuntu2 [16.1 MB] 193s Get:253 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x libbpfcc s390x 0.29.1+ds-1ubuntu4 [697 kB] 193s Get:254 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x python3-bpfcc all 0.29.1+ds-1ubuntu4 [40.2 kB] 193s Get:255 http://ftpmaster.internal/ubuntu noble/main s390x ieee-data all 20220827.1 [2113 kB] 193s Get:256 http://ftpmaster.internal/ubuntu noble/main s390x python3-netaddr all 0.8.0-2ubuntu1 [319 kB] 193s Get:257 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x bpfcc-tools all 0.29.1+ds-1ubuntu4 [687 kB] 193s Get:258 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libclang1-18 s390x 1:18.1.2-1ubuntu2 [9349 kB] 194s Get:259 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdw1t64 s390x 0.190-1.1build2 [286 kB] 194s Get:260 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x bpftrace s390x 0.20.2-1ubuntu1 [1139 kB] 194s Get:261 http://ftpmaster.internal/ubuntu noble-proposed/main s390x cryptsetup-bin s390x 2:2.7.0-1ubuntu2 [211 kB] 194s Get:262 http://ftpmaster.internal/ubuntu noble-proposed/main s390x dpkg-dev all 1.22.6ubuntu5 [1074 kB] 194s Get:263 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libdpkg-perl all 1.22.6ubuntu5 [269 kB] 194s Get:264 http://ftpmaster.internal/ubuntu noble/main s390x fonts-dejavu-mono all 2.37-8 [502 kB] 194s Get:265 http://ftpmaster.internal/ubuntu noble/main s390x fonts-dejavu-core all 2.37-8 [835 kB] 194s Get:266 http://ftpmaster.internal/ubuntu noble-proposed/main s390x fontconfig-config s390x 2.15.0-1.1ubuntu1 [37.4 kB] 194s Get:267 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gnupg-l10n all 2.4.4-2ubuntu15 [65.8 kB] 194s Get:268 http://ftpmaster.internal/ubuntu noble/main s390x hwdata all 0.379-1 [29.1 kB] 194s Get:269 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libibverbs1 s390x 50.0-2build1 [70.0 kB] 194s Get:270 http://ftpmaster.internal/ubuntu noble-proposed/main s390x ibverbs-providers s390x 50.0-2build1 [408 kB] 195s Get:271 http://ftpmaster.internal/ubuntu noble-proposed/main s390x jq s390x 1.7.1-3 [66.5 kB] 195s Get:272 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libjq1 s390x 1.7.1-3 [168 kB] 195s Get:273 http://ftpmaster.internal/ubuntu noble/main s390x libaio1t64 s390x 0.3.113-6 [7290 B] 195s Get:274 http://ftpmaster.internal/ubuntu noble/main s390x libatm1t64 s390x 1:2.5.1-5.1 [24.5 kB] 195s Get:275 http://ftpmaster.internal/ubuntu noble/main s390x libc-dev-bin s390x 2.39-0ubuntu6 [20.2 kB] 195s Get:276 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfreetype6 s390x 2.13.2+dfsg-1build2 [437 kB] 195s Get:277 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libfontconfig1 s390x 2.15.0-1.1ubuntu1 [150 kB] 195s Get:278 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg-turbo8 s390x 2.1.5-2ubuntu1 [128 kB] 195s Get:279 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg8 s390x 8c-2ubuntu11 [2146 B] 195s Get:280 http://ftpmaster.internal/ubuntu noble/main s390x libdeflate0 s390x 1.19-1 [46.0 kB] 195s Get:281 http://ftpmaster.internal/ubuntu noble/main s390x libjbig0 s390x 2.1-6.1ubuntu1 [29.8 kB] 195s Get:282 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libsharpyuv0 s390x 1.3.2-0.4build2 [14.9 kB] 195s Get:283 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libwebp7 s390x 1.3.2-0.4build2 [207 kB] 195s Get:284 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtiff6 s390x 4.5.1+git230720-4ubuntu1 [218 kB] 195s Get:285 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxpm4 s390x 1:3.5.17-1build1 [41.4 kB] 195s Get:286 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgd3 s390x 2.3.3-9ubuntu3 [141 kB] 195s Get:287 http://ftpmaster.internal/ubuntu noble/main s390x libc-devtools s390x 2.39-0ubuntu6 [30.6 kB] 195s Get:288 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-libc-dev s390x 6.8.0-20.20 [1592 kB] 195s Get:289 http://ftpmaster.internal/ubuntu noble/main s390x libcrypt-dev s390x 1:4.4.36-4 [135 kB] 195s Get:290 http://ftpmaster.internal/ubuntu noble/main s390x rpcsvc-proto s390x 1.4.2-0ubuntu6 [64.7 kB] 195s Get:291 http://ftpmaster.internal/ubuntu noble/main s390x libc6-dev s390x 2.39-0ubuntu6 [1629 kB] 195s Get:292 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libevent-core-2.1-7 s390x 2.1.12-stable-9build1 [94.3 kB] 195s Get:293 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libftdi1-2 s390x 1.5-6build4 [29.3 kB] 195s Get:294 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libldap-common all 2.6.7+dfsg-1~exp1ubuntu6 [31.3 kB] 195s Get:295 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-modules-6.8.0-20-generic s390x 6.8.0-20.20 [21.0 MB] 197s Get:296 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-image-6.8.0-20-generic s390x 6.8.0-20.20 [9872 kB] 198s Get:297 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-modules-extra-6.8.0-20-generic s390x 6.8.0-20.20 [11.7 MB] 199s Get:298 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-generic s390x 6.8.0-20.20+1 [1734 B] 199s Get:299 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-image-generic s390x 6.8.0-20.20+1 [9688 B] 199s Get:300 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-virtual s390x 6.8.0-20.20+1 [1682 B] 199s Get:301 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-image-virtual s390x 6.8.0-20.20+1 [9700 B] 199s Get:302 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-virtual s390x 6.8.0-20.20+1 [1642 B] 199s Get:303 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-6.8.0-20 all 6.8.0-20.20 [13.6 MB] 201s Get:304 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-6.8.0-20-generic s390x 6.8.0-20.20 [2579 kB] 201s Get:305 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-headers-generic s390x 6.8.0-20.20+1 [9608 B] 201s Get:306 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-tools-common all 6.8.0-20.20 [437 kB] 201s Get:307 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-tools-6.8.0-20 s390x 6.8.0-20.20 [2674 kB] 202s Get:308 http://ftpmaster.internal/ubuntu noble-proposed/main s390x linux-tools-6.8.0-20-generic s390x 6.8.0-20.20 [1724 B] 202s Get:309 http://ftpmaster.internal/ubuntu noble/main s390x manpages-dev all 6.05.01-1 [2018 kB] 202s Get:310 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-distutils all 3.12.2-3ubuntu1.1 [133 kB] 202s Get:311 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-lib2to3 all 3.12.2-3ubuntu1.1 [79.1 kB] 202s Get:312 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-pyrsistent s390x 0.20.0-1build1 [55.8 kB] 202s Get:313 http://ftpmaster.internal/ubuntu noble-proposed/main s390x python3-typing-extensions all 4.10.0-1 [60.7 kB] 202s Get:314 http://ftpmaster.internal/ubuntu noble-proposed/main s390x s390-tools-data all 2.31.0-0ubuntu3 [17.8 kB] 202s Get:315 http://ftpmaster.internal/ubuntu noble/main s390x ubuntu-kernel-accessories s390x 1.536build1 [10.5 kB] 202s Get:316 http://ftpmaster.internal/ubuntu noble-proposed/main s390x kpartx s390x 0.9.4-5ubuntu6 [32.8 kB] 203s Preconfiguring packages ... 203s Fetched 228 MB in 31s (7390 kB/s) 203s (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 ... 52167 files and directories currently installed.) 203s Preparing to unpack .../motd-news-config_13ubuntu8_all.deb ... 203s Unpacking motd-news-config (13ubuntu8) over (13ubuntu7) ... 203s Preparing to unpack .../base-files_13ubuntu8_s390x.deb ... 203s Unpacking base-files (13ubuntu8) over (13ubuntu7) ... 203s Setting up base-files (13ubuntu8) ... 204s motd-news.service is a disabled or a static unit not running, not starting it. 204s (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 ... 52167 files and directories currently installed.) 204s Preparing to unpack .../bash_5.2.21-2ubuntu3_s390x.deb ... 204s Unpacking bash (5.2.21-2ubuntu3) over (5.2.21-2ubuntu2) ... 204s Setting up bash (5.2.21-2ubuntu3) ... 204s update-alternatives: using /usr/share/man/man7/bash-builtins.7.gz to provide /usr/share/man/man7/builtins.7.gz (builtins.7.gz) in auto mode 204s (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 ... 52167 files and directories currently installed.) 204s Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu2_s390x.deb ... 204s Unpacking bsdutils (1:2.39.3-9ubuntu2) over (1:2.39.3-6ubuntu2) ... 204s Setting up bsdutils (1:2.39.3-9ubuntu2) ... 204s (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 ... 52167 files and directories currently installed.) 204s Preparing to unpack .../0-libbrotli1_1.1.0-2build1_s390x.deb ... 204s Unpacking libbrotli1:s390x (1.1.0-2build1) over (1.1.0-2) ... 204s Preparing to unpack .../1-libgssapi-krb5-2_1.20.1-6ubuntu1_s390x.deb ... 204s Unpacking libgssapi-krb5-2:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 204s Preparing to unpack .../2-libkrb5-3_1.20.1-6ubuntu1_s390x.deb ... 204s Unpacking libkrb5-3:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 204s Preparing to unpack .../3-libkrb5support0_1.20.1-6ubuntu1_s390x.deb ... 204s Unpacking libkrb5support0:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 204s Preparing to unpack .../4-libk5crypto3_1.20.1-6ubuntu1_s390x.deb ... 204s Unpacking libk5crypto3:s390x (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 204s Preparing to unpack .../5-libcom-err2_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 204s Unpacking libcom-err2:s390x (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 204s Preparing to unpack .../6-zlib1g_1%3a1.3.dfsg-3.1ubuntu1_s390x.deb ... 204s Unpacking zlib1g:s390x (1:1.3.dfsg-3.1ubuntu1) over (1:1.3.dfsg-3ubuntu1) ... 204s Setting up zlib1g:s390x (1:1.3.dfsg-3.1ubuntu1) ... 204s (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 ... 52167 files and directories currently installed.) 204s Preparing to unpack .../librtmp1_2.4+20151223.gitfa8646d.1-2build6_s390x.deb ... 204s Unpacking librtmp1:s390x (2.4+20151223.gitfa8646d.1-2build6) over (2.4+20151223.gitfa8646d.1-2build4) ... 204s Preparing to unpack .../udisks2_2.10.1-6_s390x.deb ... 204s Unpacking udisks2 (2.10.1-6) over (2.10.1-1ubuntu2) ... 204s Preparing to unpack .../libudisks2-0_2.10.1-6_s390x.deb ... 204s Unpacking libudisks2-0:s390x (2.10.1-6) over (2.10.1-1ubuntu2) ... 204s Preparing to unpack .../libblkid1_2.39.3-9ubuntu2_s390x.deb ... 204s Unpacking libblkid1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 204s Setting up libblkid1:s390x (2.39.3-9ubuntu2) ... 204s (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 ... 52167 files and directories currently installed.) 204s Preparing to unpack .../liblzma5_5.6.0-0.2_s390x.deb ... 204s Unpacking liblzma5:s390x (5.6.0-0.2) over (5.4.5-0.3) ... 204s Setting up liblzma5:s390x (5.6.0-0.2) ... 204s (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 ... 52167 files and directories currently installed.) 204s Preparing to unpack .../0-kmod_31+20240202-2ubuntu4_s390x.deb ... 204s Unpacking kmod (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 204s Preparing to unpack .../1-libkmod2_31+20240202-2ubuntu4_s390x.deb ... 204s Unpacking libkmod2:s390x (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 204s Preparing to unpack .../2-systemd-dev_255.4-1ubuntu5_all.deb ... 204s Unpacking systemd-dev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 204s Preparing to unpack .../3-systemd-timesyncd_255.4-1ubuntu5_s390x.deb ... 204s Unpacking systemd-timesyncd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 204s Preparing to unpack .../4-dbus-session-bus-common_1.14.10-4ubuntu2_all.deb ... 204s Unpacking dbus-session-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 204s Preparing to unpack .../5-libaudit-common_1%3a3.1.2-2.1_all.deb ... 204s Unpacking libaudit-common (1:3.1.2-2.1) over (1:3.1.2-2) ... 205s Setting up libaudit-common (1:3.1.2-2.1) ... 205s (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 ... 52167 files and directories currently installed.) 205s Preparing to unpack .../libcap-ng0_0.8.4-2build1_s390x.deb ... 205s Unpacking libcap-ng0:s390x (0.8.4-2build1) over (0.8.4-2) ... 205s Setting up libcap-ng0:s390x (0.8.4-2build1) ... 205s (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 ... 52167 files and directories currently installed.) 205s Preparing to unpack .../libaudit1_1%3a3.1.2-2.1_s390x.deb ... 205s Unpacking libaudit1:s390x (1:3.1.2-2.1) over (1:3.1.2-2) ... 205s Setting up libaudit1:s390x (1:3.1.2-2.1) ... 205s (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 ... 52167 files and directories currently installed.) 205s Preparing to unpack .../libpam0g_1.5.3-5ubuntu3_s390x.deb ... 205s Unpacking libpam0g:s390x (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 205s Setting up libpam0g:s390x (1.5.3-5ubuntu3) ... 205s (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 ... 52167 files and directories currently installed.) 205s Preparing to unpack .../libselinux1_3.5-2ubuntu1_s390x.deb ... 205s Unpacking libselinux1:s390x (3.5-2ubuntu1) over (3.5-2build1) ... 205s Setting up libselinux1:s390x (3.5-2ubuntu1) ... 205s dpkg: libcurl4:s390x: dependency problems, but removing anyway as you requested: 205s s390-tools depends on libcurl4 (>= 7.16.2). 205s curl depends on libcurl4 (= 8.5.0-2ubuntu2). 205s 205s (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 ... 52167 files and directories currently installed.) 205s Removing libcurl4:s390x (8.5.0-2ubuntu2) ... 205s Selecting previously unselected package libcurl4t64:s390x. 205s (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 ... 52162 files and directories currently installed.) 205s Preparing to unpack .../libcurl4t64_8.5.0-2ubuntu8_s390x.deb ... 205s Unpacking libcurl4t64:s390x (8.5.0-2ubuntu8) ... 205s Preparing to unpack .../curl_8.5.0-2ubuntu8_s390x.deb ... 205s Unpacking curl (8.5.0-2ubuntu8) over (8.5.0-2ubuntu2) ... 205s dpkg: libpsl5:s390x: dependency problems, but removing anyway as you requested: 205s wget depends on libpsl5 (>= 0.16.0). 205s libcurl3-gnutls:s390x depends on libpsl5 (>= 0.16.0). 205s 205s (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 ... 52168 files and directories currently installed.) 205s Removing libpsl5:s390x (0.21.2-1build1) ... 205s Selecting previously unselected package libpsl5t64:s390x. 205s (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 ... 52163 files and directories currently installed.) 205s Preparing to unpack .../00-libpsl5t64_0.21.2-1.1_s390x.deb ... 205s Unpacking libpsl5t64:s390x (0.21.2-1.1) ... 205s Preparing to unpack .../01-wget_1.21.4-1ubuntu2_s390x.deb ... 205s Unpacking wget (1.21.4-1ubuntu2) over (1.21.4-1ubuntu1) ... 205s Preparing to unpack .../02-tnftp_20230507-2build1_s390x.deb ... 205s Unpacking tnftp (20230507-2build1) over (20230507-2) ... 205s Preparing to unpack .../03-tcpdump_4.99.4-3ubuntu2_s390x.deb ... 205s Unpacking tcpdump (4.99.4-3ubuntu2) over (4.99.4-3ubuntu1) ... 205s Preparing to unpack .../04-libsystemd-shared_255.4-1ubuntu5_s390x.deb ... 205s Unpacking libsystemd-shared:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 205s Preparing to unpack .../05-systemd-resolved_255.4-1ubuntu5_s390x.deb ... 205s Unpacking systemd-resolved (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 205s Preparing to unpack .../06-sudo_1.9.15p5-3ubuntu3_s390x.deb ... 205s Unpacking sudo (1.9.15p5-3ubuntu3) over (1.9.15p5-3ubuntu1) ... 205s Preparing to unpack .../07-rsync_3.2.7-1build1_s390x.deb ... 205s Unpacking rsync (3.2.7-1build1) over (3.2.7-1) ... 205s Preparing to unpack .../08-python3-cryptography_41.0.7-4build2_s390x.deb ... 205s Unpacking python3-cryptography (41.0.7-4build2) over (41.0.7-3) ... 205s Preparing to unpack .../09-openssl_3.0.13-0ubuntu2_s390x.deb ... 205s Unpacking openssl (3.0.13-0ubuntu2) over (3.0.10-1ubuntu4) ... 206s Preparing to unpack .../10-openssh-sftp-server_1%3a9.6p1-3ubuntu11_s390x.deb ... 206s Unpacking openssh-sftp-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 206s Preparing to unpack .../11-openssh-client_1%3a9.6p1-3ubuntu11_s390x.deb ... 206s Unpacking openssh-client (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 206s Preparing to unpack .../12-openssh-server_1%3a9.6p1-3ubuntu11_s390x.deb ... 206s Unpacking openssh-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 206s Preparing to unpack .../13-libssh-4_0.10.6-2build1_s390x.deb ... 206s Unpacking libssh-4:s390x (0.10.6-2build1) over (0.10.6-2) ... 206s Preparing to unpack .../14-libsasl2-modules_2.1.28+dfsg1-5ubuntu1_s390x.deb ... 206s Unpacking libsasl2-modules:s390x (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 206s Preparing to unpack .../15-python3.12_3.12.2-4build3_s390x.deb ... 206s Unpacking python3.12 (3.12.2-4build3) over (3.12.2-1) ... 206s Preparing to unpack .../16-python3.12-minimal_3.12.2-4build3_s390x.deb ... 206s Unpacking python3.12-minimal (3.12.2-4build3) over (3.12.2-1) ... 206s Preparing to unpack .../17-libpython3.12-minimal_3.12.2-4build3_s390x.deb ... 206s Unpacking libpython3.12-minimal:s390x (3.12.2-4build3) over (3.12.2-1) ... 206s dpkg: libparted2:s390x: dependency problems, but removing anyway as you requested: 206s parted depends on libparted2 (= 3.6-3). 206s 206s (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 ... 52169 files and directories currently installed.) 206s Removing libparted2:s390x (3.6-3) ... 206s Selecting previously unselected package libparted2t64:s390x. 206s (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 ... 52163 files and directories currently installed.) 206s Preparing to unpack .../00-libparted2t64_3.6-3.1build2_s390x.deb ... 206s Unpacking libparted2t64:s390x (3.6-3.1build2) ... 206s Preparing to unpack .../01-parted_3.6-3.1build2_s390x.deb ... 206s Unpacking parted (3.6-3.1build2) over (3.6-3) ... 206s Preparing to unpack .../02-python3.11_3.11.8-1build4_s390x.deb ... 206s Unpacking python3.11 (3.11.8-1build4) over (3.11.8-1) ... 206s Preparing to unpack .../03-python3.11-minimal_3.11.8-1build4_s390x.deb ... 206s Unpacking python3.11-minimal (3.11.8-1build4) over (3.11.8-1) ... 206s Preparing to unpack .../04-libpython3.11-minimal_3.11.8-1build4_s390x.deb ... 206s Unpacking libpython3.11-minimal:s390x (3.11.8-1build4) over (3.11.8-1) ... 207s Preparing to unpack .../05-libpython3.11-stdlib_3.11.8-1build4_s390x.deb ... 207s Unpacking libpython3.11-stdlib:s390x (3.11.8-1build4) over (3.11.8-1) ... 207s Preparing to unpack .../06-shared-mime-info_2.4-1build1_s390x.deb ... 207s Unpacking shared-mime-info (2.4-1build1) over (2.4-1) ... 207s Preparing to unpack .../07-gir1.2-girepository-2.0_1.79.1-1ubuntu6_s390x.deb ... 207s Unpacking gir1.2-girepository-2.0:s390x (1.79.1-1ubuntu6) over (1.79.1-1) ... 207s Preparing to unpack .../08-gir1.2-glib-2.0_2.79.3-3ubuntu5_s390x.deb ... 207s Unpacking gir1.2-glib-2.0:s390x (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 207s Preparing to unpack .../09-libgirepository-1.0-1_1.79.1-1ubuntu6_s390x.deb ... 207s Unpacking libgirepository-1.0-1:s390x (1.79.1-1ubuntu6) over (1.79.1-1) ... 207s Preparing to unpack .../10-python3-gi_3.47.0-3build1_s390x.deb ... 207s Unpacking python3-gi (3.47.0-3build1) over (3.47.0-3) ... 207s Preparing to unpack .../11-python3-dbus_1.3.2-5build2_s390x.deb ... 207s Unpacking python3-dbus (1.3.2-5build2) over (1.3.2-5build1) ... 207s Selecting previously unselected package libnetplan1:s390x. 207s Preparing to unpack .../12-libnetplan1_1.0-1_s390x.deb ... 207s Unpacking libnetplan1:s390x (1.0-1) ... 207s Preparing to unpack .../13-python3-netplan_1.0-1_s390x.deb ... 207s Unpacking python3-netplan (1.0-1) over (0.107.1-3) ... 207s Preparing to unpack .../14-netplan-generator_1.0-1_s390x.deb ... 207s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 207s Unpacking netplan-generator (1.0-1) over (0.107.1-3) ... 207s Preparing to unpack .../15-initramfs-tools-bin_0.142ubuntu23_s390x.deb ... 207s Unpacking initramfs-tools-bin (0.142ubuntu23) over (0.142ubuntu20) ... 207s Preparing to unpack .../16-initramfs-tools-core_0.142ubuntu23_all.deb ... 207s Unpacking initramfs-tools-core (0.142ubuntu23) over (0.142ubuntu20) ... 207s Preparing to unpack .../17-initramfs-tools_0.142ubuntu23_all.deb ... 207s Unpacking initramfs-tools (0.142ubuntu23) over (0.142ubuntu20) ... 207s Preparing to unpack .../18-netplan.io_1.0-1_s390x.deb ... 207s Unpacking netplan.io (1.0-1) over (0.107.1-3) ... 207s Preparing to unpack .../19-libxmlb2_0.3.15-1build1_s390x.deb ... 207s Unpacking libxmlb2:s390x (0.3.15-1build1) over (0.3.15-1) ... 207s dpkg: libgpgme11:s390x: dependency problems, but removing anyway as you requested: 207s libvolume-key1:s390x depends on libgpgme11 (>= 1.4.1). 207s libjcat1:s390x depends on libgpgme11 (>= 1.2.0). 207s 207s (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 ... 52172 files and directories currently installed.) 207s Removing libgpgme11:s390x (1.18.0-4ubuntu1) ... 207s Selecting previously unselected package libgpgme11t64:s390x. 207s (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 ... 52166 files and directories currently installed.) 207s Preparing to unpack .../00-libgpgme11t64_1.18.0-4.1ubuntu3_s390x.deb ... 207s Unpacking libgpgme11t64:s390x (1.18.0-4.1ubuntu3) ... 207s Preparing to unpack .../01-libvolume-key1_0.3.12-7build1_s390x.deb ... 207s Unpacking libvolume-key1:s390x (0.3.12-7build1) over (0.3.12-5build2) ... 207s Preparing to unpack .../02-libqrtr-glib0_1.2.2-1ubuntu3_s390x.deb ... 207s Unpacking libqrtr-glib0:s390x (1.2.2-1ubuntu3) over (1.2.2-1ubuntu2) ... 208s Preparing to unpack .../03-libqmi-glib5_1.35.2-0ubuntu1_s390x.deb ... 208s Unpacking libqmi-glib5:s390x (1.35.2-0ubuntu1) over (1.34.0-2) ... 208s Preparing to unpack .../04-libqmi-proxy_1.35.2-0ubuntu1_s390x.deb ... 208s Unpacking libqmi-proxy (1.35.2-0ubuntu1) over (1.34.0-2) ... 208s Preparing to unpack .../05-libpolkit-agent-1-0_124-1ubuntu1_s390x.deb ... 208s Unpacking libpolkit-agent-1-0:s390x (124-1ubuntu1) over (124-1) ... 208s Preparing to unpack .../06-libpolkit-gobject-1-0_124-1ubuntu1_s390x.deb ... 208s Unpacking libpolkit-gobject-1-0:s390x (124-1ubuntu1) over (124-1) ... 208s Preparing to unpack .../07-libmm-glib0_1.23.4-0ubuntu1_s390x.deb ... 208s Unpacking libmm-glib0:s390x (1.23.4-0ubuntu1) over (1.22.0-3) ... 208s Preparing to unpack .../08-libmbim-glib4_1.31.2-0ubuntu2_s390x.deb ... 208s Unpacking libmbim-glib4:s390x (1.31.2-0ubuntu2) over (1.30.0-1) ... 208s Preparing to unpack .../09-libmbim-proxy_1.31.2-0ubuntu2_s390x.deb ... 208s Unpacking libmbim-proxy (1.31.2-0ubuntu2) over (1.30.0-1) ... 208s Preparing to unpack .../10-libjson-glib-1.0-common_1.8.0-2build1_all.deb ... 208s Unpacking libjson-glib-1.0-common (1.8.0-2build1) over (1.8.0-2) ... 208s Preparing to unpack .../11-libjson-glib-1.0-0_1.8.0-2build1_s390x.deb ... 208s Unpacking libjson-glib-1.0-0:s390x (1.8.0-2build1) over (1.8.0-2) ... 208s Preparing to unpack .../12-libgusb2_0.4.8-1build1_s390x.deb ... 208s Unpacking libgusb2:s390x (0.4.8-1build1) over (0.4.8-1) ... 208s Preparing to unpack .../13-libgudev-1.0-0_1%3a238-3ubuntu2_s390x.deb ... 208s Unpacking libgudev-1.0-0:s390x (1:238-3ubuntu2) over (1:238-3) ... 208s dpkg: libarchive13:s390x: dependency problems, but removing anyway as you requested: 208s fwupd depends on libarchive13 (>= 3.2.1). 208s 208s (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 ... 52173 files and directories currently installed.) 208s Removing libarchive13:s390x (3.7.2-1ubuntu2) ... 208s Selecting previously unselected package libarchive13t64:s390x. 208s (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 ... 52167 files and directories currently installed.) 208s Preparing to unpack .../libarchive13t64_3.7.2-1.1ubuntu2_s390x.deb ... 208s Unpacking libarchive13t64:s390x (3.7.2-1.1ubuntu2) ... 208s Preparing to unpack .../fwupd_1.9.15-2_s390x.deb ... 208s Unpacking fwupd (1.9.15-2) over (1.9.14-1) ... 208s dpkg: libcurl3-gnutls:s390x: dependency problems, but removing anyway as you requested: 208s libfwupd2:s390x depends on libcurl3-gnutls (>= 7.63.0). 208s 208s (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 ... 52174 files and directories currently installed.) 208s Removing libcurl3-gnutls:s390x (8.5.0-2ubuntu2) ... 208s Selecting previously unselected package libcurl3t64-gnutls:s390x. 208s (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 ... 52167 files and directories currently installed.) 208s Preparing to unpack .../0-libcurl3t64-gnutls_8.5.0-2ubuntu8_s390x.deb ... 208s Unpacking libcurl3t64-gnutls:s390x (8.5.0-2ubuntu8) ... 208s Preparing to unpack .../1-libfwupd2_1.9.15-2_s390x.deb ... 208s Unpacking libfwupd2:s390x (1.9.15-2) over (1.9.14-1) ... 208s Preparing to unpack .../2-libblockdev3_3.1.0-1build1_s390x.deb ... 208s Unpacking libblockdev3:s390x (3.1.0-1build1) over (3.1.0-1) ... 208s Preparing to unpack .../3-libblockdev-utils3_3.1.0-1build1_s390x.deb ... 208s Unpacking libblockdev-utils3:s390x (3.1.0-1build1) over (3.1.0-1) ... 208s Preparing to unpack .../4-libblockdev-swap3_3.1.0-1build1_s390x.deb ... 208s Unpacking libblockdev-swap3:s390x (3.1.0-1build1) over (3.1.0-1) ... 208s Preparing to unpack .../5-libblockdev-part3_3.1.0-1build1_s390x.deb ... 208s Unpacking libblockdev-part3:s390x (3.1.0-1build1) over (3.1.0-1) ... 208s dpkg: libnvme1: dependency problems, but removing anyway as you requested: 208s libblockdev-nvme3:s390x depends on libnvme1 (>= 1.7.1). 208s 208s (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 ... 52174 files and directories currently installed.) 208s Removing libnvme1 (1.8-2) ... 208s Selecting previously unselected package libnvme1t64. 208s (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 ... 52167 files and directories currently installed.) 208s Preparing to unpack .../0-libnvme1t64_1.8-3_s390x.deb ... 208s Unpacking libnvme1t64 (1.8-3) ... 208s Preparing to unpack .../1-libblockdev-nvme3_3.1.0-1build1_s390x.deb ... 208s Unpacking libblockdev-nvme3:s390x (3.1.0-1build1) over (3.1.0-1) ... 208s Preparing to unpack .../2-libblockdev-mdraid3_3.1.0-1build1_s390x.deb ... 208s Unpacking libblockdev-mdraid3:s390x (3.1.0-1build1) over (3.1.0-1) ... 208s Preparing to unpack .../3-libblockdev-loop3_3.1.0-1build1_s390x.deb ... 208s Unpacking libblockdev-loop3:s390x (3.1.0-1build1) over (3.1.0-1) ... 208s Preparing to unpack .../4-e2fsprogs-l10n_1.47.0-2.4~exp1ubuntu2_all.deb ... 208s Unpacking e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 208s Preparing to unpack .../5-logsave_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 208s Unpacking logsave (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 208s dpkg: libext2fs2:s390x: dependency problems, but removing anyway as you requested: 208s libblockdev-fs3:s390x depends on libext2fs2 (>= 1.42.11). 208s e2fsprogs depends on libext2fs2 (= 1.47.0-2ubuntu1). 208s btrfs-progs depends on libext2fs2 (>= 1.42). 208s 208s (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 ... 52175 files and directories currently installed.) 208s Removing libext2fs2:s390x (1.47.0-2ubuntu1) ... 208s Selecting previously unselected package libext2fs2t64:s390x. 208s (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 ... 52168 files and directories currently installed.) 208s Preparing to unpack .../libext2fs2t64_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 208s Adding 'diversion of /lib/s390x-linux-gnu/libe2p.so.2 to /lib/s390x-linux-gnu/libe2p.so.2.usr-is-merged by libext2fs2t64' 208s Adding 'diversion of /lib/s390x-linux-gnu/libe2p.so.2.3 to /lib/s390x-linux-gnu/libe2p.so.2.3.usr-is-merged by libext2fs2t64' 208s Adding 'diversion of /lib/s390x-linux-gnu/libext2fs.so.2 to /lib/s390x-linux-gnu/libext2fs.so.2.usr-is-merged by libext2fs2t64' 208s Adding 'diversion of /lib/s390x-linux-gnu/libext2fs.so.2.4 to /lib/s390x-linux-gnu/libext2fs.so.2.4.usr-is-merged by libext2fs2t64' 208s Unpacking libext2fs2t64:s390x (1.47.0-2.4~exp1ubuntu2) ... 208s Setting up libcom-err2:s390x (1.47.0-2.4~exp1ubuntu2) ... 208s Setting up libext2fs2t64:s390x (1.47.0-2.4~exp1ubuntu2) ... 209s (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 ... 52184 files and directories currently installed.) 209s Preparing to unpack .../e2fsprogs_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 209s Unpacking e2fsprogs (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 209s dpkg: libreiserfscore0: dependency problems, but removing anyway as you requested: 209s btrfs-progs depends on libreiserfscore0 (>= 1:3.6.27). 209s 209s (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 ... 52184 files and directories currently installed.) 209s Removing libreiserfscore0 (1:3.6.27-7) ... 209s Selecting previously unselected package libreiserfscore0t64. 209s (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 ... 52179 files and directories currently installed.) 209s Preparing to unpack .../libreiserfscore0t64_1%3a3.6.27-7.1_s390x.deb ... 209s Unpacking libreiserfscore0t64 (1:3.6.27-7.1) ... 209s Preparing to unpack .../btrfs-progs_6.6.3-1.1build1_s390x.deb ... 209s Unpacking btrfs-progs (6.6.3-1.1build1) over (6.6.3-1.1) ... 209s Preparing to unpack .../libblockdev-fs3_3.1.0-1build1_s390x.deb ... 209s Unpacking libblockdev-fs3:s390x (3.1.0-1build1) over (3.1.0-1) ... 209s Preparing to unpack .../libblockdev-crypto3_3.1.0-1build1_s390x.deb ... 209s Unpacking libblockdev-crypto3:s390x (3.1.0-1build1) over (3.1.0-1) ... 209s Preparing to unpack .../bolt_0.9.6-2build1_s390x.deb ... 209s Unpacking bolt (0.9.6-2build1) over (0.9.6-2) ... 209s dpkg: libglib2.0-0:s390x: dependency problems, but removing anyway as you requested: 209s s390-tools depends on libglib2.0-0 (>= 2.77.0). 209s libnetplan0:s390x depends on libglib2.0-0 (>= 2.75.3). 209s libjcat1:s390x depends on libglib2.0-0 (>= 2.75.3). 209s 209s (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 ... 52185 files and directories currently installed.) 209s Removing libglib2.0-0:s390x (2.79.2-1~ubuntu1) ... 209s Selecting previously unselected package libglib2.0-0t64:s390x. 209s (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 ... 52160 files and directories currently installed.) 209s Preparing to unpack .../0-libglib2.0-0t64_2.79.3-3ubuntu5_s390x.deb ... 209s libglib2.0-0t64.preinst: Removing /var/lib/dpkg/info/libglib2.0-0:s390x.postrm to avoid loss of /usr/share/glib-2.0/schemas/gschemas.compiled... 209s removed '/var/lib/dpkg/info/libglib2.0-0:s390x.postrm' 209s Unpacking libglib2.0-0t64:s390x (2.79.3-3ubuntu5) ... 209s Preparing to unpack .../1-libjcat1_0.2.0-2build2_s390x.deb ... 209s Unpacking libjcat1:s390x (0.2.0-2build2) over (0.2.0-2) ... 209s Preparing to unpack .../2-libldap2_2.6.7+dfsg-1~exp1ubuntu6_s390x.deb ... 209s Unpacking libldap2:s390x (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 209s Preparing to unpack .../3-ubuntu-pro-client-l10n_31.2.2_s390x.deb ... 209s Unpacking ubuntu-pro-client-l10n (31.2.2) over (31.1) ... 209s Preparing to unpack .../4-ubuntu-pro-client_31.2.2_s390x.deb ... 209s Unpacking ubuntu-pro-client (31.2.2) over (31.1) ... 209s Preparing to unpack .../5-gnupg-utils_2.4.4-2ubuntu15_s390x.deb ... 209s Unpacking gnupg-utils (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 209s Preparing to unpack .../6-keyboxd_2.4.4-2ubuntu15_s390x.deb ... 209s Unpacking keyboxd (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 209s dpkg: libnpth0:s390x: dependency problems, but removing anyway as you requested: 209s gpgv depends on libnpth0 (>= 0.90). 209s gpgsm depends on libnpth0 (>= 0.90). 209s gpg-agent depends on libnpth0 (>= 0.90). 209s gpg depends on libnpth0 (>= 0.90). 209s dirmngr depends on libnpth0 (>= 0.90). 209s 209s (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 ... 52185 files and directories currently installed.) 209s Removing libnpth0:s390x (1.6-3build2) ... 209s Selecting previously unselected package libnpth0t64:s390x. 209s (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 ... 52180 files and directories currently installed.) 209s Preparing to unpack .../libnpth0t64_1.6-3.1_s390x.deb ... 209s Unpacking libnpth0t64:s390x (1.6-3.1) ... 209s Setting up libnpth0t64:s390x (1.6-3.1) ... 209s (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 ... 52186 files and directories currently installed.) 209s Preparing to unpack .../gpgv_2.4.4-2ubuntu15_s390x.deb ... 209s Unpacking gpgv (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 209s Setting up gpgv (2.4.4-2ubuntu15) ... 209s (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 ... 52186 files and directories currently installed.) 209s Preparing to unpack .../0-gpg-wks-client_2.4.4-2ubuntu15_s390x.deb ... 209s Unpacking gpg-wks-client (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 209s Preparing to unpack .../1-gpg-agent_2.4.4-2ubuntu15_s390x.deb ... 209s Unpacking gpg-agent (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 209s Preparing to unpack .../2-gpg_2.4.4-2ubuntu15_s390x.deb ... 209s Unpacking gpg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 209s Preparing to unpack .../3-dirmngr_2.4.4-2ubuntu15_s390x.deb ... 209s Unpacking dirmngr (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 209s Preparing to unpack .../4-gnupg_2.4.4-2ubuntu15_all.deb ... 209s Unpacking gnupg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 210s Preparing to unpack .../5-python3-apt_2.7.7_s390x.deb ... 210s Unpacking python3-apt (2.7.7) over (2.7.6) ... 210s Preparing to unpack .../6-apt-utils_2.7.14_s390x.deb ... 210s Unpacking apt-utils (2.7.14) over (2.7.12) ... 210s dpkg: libapt-pkg6.0:s390x: dependency problems, but removing anyway as you requested: 210s apt depends on libapt-pkg6.0 (>= 2.7.12). 210s 210s (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 ... 52184 files and directories currently installed.) 210s Removing libapt-pkg6.0:s390x (2.7.12) ... 210s dpkg: libnettle8:s390x: dependency problems, but removing anyway as you requested: 210s libhogweed6:s390x depends on libnettle8. 210s libgnutls30:s390x depends on libnettle8 (>= 3.9~). 210s 210s Removing libnettle8:s390x (3.9.1-2) ... 210s Selecting previously unselected package libapt-pkg6.0t64:s390x. 210s (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 ... 52128 files and directories currently installed.) 210s Preparing to unpack .../libapt-pkg6.0t64_2.7.14_s390x.deb ... 210s Unpacking libapt-pkg6.0t64:s390x (2.7.14) ... 210s Setting up libapt-pkg6.0t64:s390x (2.7.14) ... 210s Selecting previously unselected package libnettle8t64:s390x. 210s (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 ... 52178 files and directories currently installed.) 210s Preparing to unpack .../libnettle8t64_3.9.1-2.2_s390x.deb ... 210s Unpacking libnettle8t64:s390x (3.9.1-2.2) ... 210s Setting up libnettle8t64:s390x (3.9.1-2.2) ... 210s dpkg: libhogweed6:s390x: dependency problems, but removing anyway as you requested: 210s libgnutls30:s390x depends on libhogweed6 (>= 3.6). 210s 210s (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 ... 52186 files and directories currently installed.) 210s Removing libhogweed6:s390x (3.9.1-2) ... 210s Selecting previously unselected package libhogweed6t64:s390x. 210s (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 ... 52181 files and directories currently installed.) 210s Preparing to unpack .../libhogweed6t64_3.9.1-2.2_s390x.deb ... 210s Unpacking libhogweed6t64:s390x (3.9.1-2.2) ... 210s Setting up libhogweed6t64:s390x (3.9.1-2.2) ... 210s dpkg: libgnutls30:s390x: dependency problems, but removing anyway as you requested: 210s apt depends on libgnutls30 (>= 3.8.1). 210s 210s (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 ... 52187 files and directories currently installed.) 210s Removing libgnutls30:s390x (3.8.3-1ubuntu1) ... 210s Selecting previously unselected package libgnutls30t64:s390x. 210s (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 ... 52178 files and directories currently installed.) 210s Preparing to unpack .../libgnutls30t64_3.8.3-1.1ubuntu2_s390x.deb ... 210s Unpacking libgnutls30t64:s390x (3.8.3-1.1ubuntu2) ... 210s Setting up libgnutls30t64:s390x (3.8.3-1.1ubuntu2) ... 210s (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 ... 52206 files and directories currently installed.) 210s Preparing to unpack .../archives/apt_2.7.14_s390x.deb ... 210s Unpacking apt (2.7.14) over (2.7.12) ... 210s Setting up apt (2.7.14) ... 211s (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 ... 52206 files and directories currently installed.) 211s Preparing to unpack .../gpgconf_2.4.4-2ubuntu15_s390x.deb ... 211s Unpacking gpgconf (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 211s Preparing to unpack .../gpgsm_2.4.4-2ubuntu15_s390x.deb ... 211s Unpacking gpgsm (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 211s dpkg: libreadline8:s390x: dependency problems, but removing anyway as you requested: 211s libpython3.12-stdlib:s390x depends on libreadline8 (>= 7.0~beta). 211s gawk depends on libreadline8 (>= 6.0). 211s fdisk depends on libreadline8 (>= 6.0). 211s 211s (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 ... 52206 files and directories currently installed.) 211s Removing libreadline8:s390x (8.2-3) ... 211s Selecting previously unselected package libreadline8t64:s390x. 211s (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 ... 52194 files and directories currently installed.) 211s Preparing to unpack .../libreadline8t64_8.2-4_s390x.deb ... 211s Adding 'diversion of /lib/s390x-linux-gnu/libhistory.so.8 to /lib/s390x-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' 211s Adding 'diversion of /lib/s390x-linux-gnu/libhistory.so.8.2 to /lib/s390x-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' 211s Adding 'diversion of /lib/s390x-linux-gnu/libreadline.so.8 to /lib/s390x-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' 211s Adding 'diversion of /lib/s390x-linux-gnu/libreadline.so.8.2 to /lib/s390x-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' 211s Unpacking libreadline8t64:s390x (8.2-4) ... 211s Setting up libreadline8t64:s390x (8.2-4) ... 211s (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 ... 52214 files and directories currently installed.) 211s Preparing to unpack .../gawk_1%3a5.2.1-2build2_s390x.deb ... 211s Unpacking gawk (1:5.2.1-2build2) over (1:5.2.1-2) ... 211s Preparing to unpack .../fdisk_2.39.3-9ubuntu2_s390x.deb ... 211s Unpacking fdisk (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 211s Preparing to unpack .../libpython3.12-stdlib_3.12.2-4build3_s390x.deb ... 211s Unpacking libpython3.12-stdlib:s390x (3.12.2-4build3) over (3.12.2-1) ... 211s Preparing to unpack .../perl-base_5.38.2-3.2_s390x.deb ... 211s Unpacking perl-base (5.38.2-3.2) over (5.38.2-3) ... 211s Setting up perl-base (5.38.2-3.2) ... 211s (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 ... 52212 files and directories currently installed.) 211s Preparing to unpack .../perl-modules-5.38_5.38.2-3.2_all.deb ... 211s Unpacking perl-modules-5.38 (5.38.2-3.2) over (5.38.2-3) ... 212s Preparing to unpack .../python3-gdbm_3.12.2-3ubuntu1.1_s390x.deb ... 212s Unpacking python3-gdbm:s390x (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 212s Preparing to unpack .../man-db_2.12.0-3build4_s390x.deb ... 212s Unpacking man-db (2.12.0-3build4) over (2.12.0-3) ... 212s dpkg: libgdbm-compat4:s390x: dependency problems, but removing anyway as you requested: 212s libperl5.38:s390x depends on libgdbm-compat4 (>= 1.18-3). 212s 212s (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 ... 52212 files and directories currently installed.) 212s Removing libgdbm-compat4:s390x (1.23-5) ... 212s dpkg: libgdbm6:s390x: dependency problems, but removing anyway as you requested: 212s libperl5.38:s390x depends on libgdbm6 (>= 1.21). 212s 212s Removing libgdbm6:s390x (1.23-5) ... 212s Selecting previously unselected package libgdbm6t64:s390x. 212s (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 ... 52202 files and directories currently installed.) 212s Preparing to unpack .../libgdbm6t64_1.23-5.1_s390x.deb ... 212s Unpacking libgdbm6t64:s390x (1.23-5.1) ... 212s Selecting previously unselected package libgdbm-compat4t64:s390x. 212s Preparing to unpack .../libgdbm-compat4t64_1.23-5.1_s390x.deb ... 212s Unpacking libgdbm-compat4t64:s390x (1.23-5.1) ... 212s dpkg: libperl5.38:s390x: dependency problems, but removing anyway as you requested: 212s perl depends on libperl5.38 (= 5.38.2-3). 212s 212s (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 ... 52214 files and directories currently installed.) 212s Removing libperl5.38:s390x (5.38.2-3) ... 212s Selecting previously unselected package libperl5.38t64:s390x. 212s (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 ... 51692 files and directories currently installed.) 212s Preparing to unpack .../libperl5.38t64_5.38.2-3.2_s390x.deb ... 212s Unpacking libperl5.38t64:s390x (5.38.2-3.2) ... 212s Preparing to unpack .../perl_5.38.2-3.2_s390x.deb ... 212s Unpacking perl (5.38.2-3.2) over (5.38.2-3) ... 212s dpkg: libdb5.3:s390x: dependency problems, but removing anyway as you requested: 212s libsasl2-modules-db:s390x depends on libdb5.3. 212s libpam-modules:s390x depends on libdb5.3. 212s iproute2 depends on libdb5.3. 212s 212s (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 ... 52214 files and directories currently installed.) 212s Removing libdb5.3:s390x (5.3.28+dfsg2-4) ... 212s Selecting previously unselected package libdb5.3t64:s390x. 212s (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 ... 52208 files and directories currently installed.) 212s Preparing to unpack .../0-libdb5.3t64_5.3.28+dfsg2-6_s390x.deb ... 212s Unpacking libdb5.3t64:s390x (5.3.28+dfsg2-6) ... 213s Preparing to unpack .../1-libsasl2-modules-db_2.1.28+dfsg1-5ubuntu1_s390x.deb ... 213s Unpacking libsasl2-modules-db:s390x (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 213s Preparing to unpack .../2-libsasl2-2_2.1.28+dfsg1-5ubuntu1_s390x.deb ... 213s Unpacking libsasl2-2:s390x (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 213s Preparing to unpack .../3-libfido2-1_1.14.0-1build1_s390x.deb ... 213s Unpacking libfido2-1:s390x (1.14.0-1build1) over (1.14.0-1) ... 213s Preparing to unpack .../4-libcryptsetup12_2%3a2.7.0-1ubuntu2_s390x.deb ... 213s Unpacking libcryptsetup12:s390x (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 213s Preparing to unpack .../5-dhcpcd-base_1%3a10.0.6-1ubuntu2_s390x.deb ... 213s Unpacking dhcpcd-base (1:10.0.6-1ubuntu2) over (1:10.0.6-1ubuntu1) ... 213s dpkg: libuv1:s390x: dependency problems, but removing anyway as you requested: 213s bind9-libs:s390x depends on libuv1 (>= 1.40.0). 213s 213s (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 ... 52214 files and directories currently installed.) 213s Removing libuv1:s390x (1.48.0-1) ... 213s Selecting previously unselected package libuv1t64:s390x. 213s (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 ... 52209 files and directories currently installed.) 213s Preparing to unpack .../libuv1t64_1.48.0-1.1_s390x.deb ... 213s Unpacking libuv1t64:s390x (1.48.0-1.1) ... 213s Preparing to unpack .../bind9-host_1%3a9.18.24-0ubuntu3_s390x.deb ... 213s Unpacking bind9-host (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 213s Preparing to unpack .../bind9-dnsutils_1%3a9.18.24-0ubuntu3_s390x.deb ... 213s Unpacking bind9-dnsutils (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 213s Preparing to unpack .../bind9-libs_1%3a9.18.24-0ubuntu3_s390x.deb ... 213s Unpacking bind9-libs:s390x (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 213s dpkg: libssl3:s390x: dependency problems, but removing anyway as you requested: 213s systemd depends on libssl3 (>= 3.0.0). 213s s390-tools depends on libssl3 (>= 3.0.0). 213s linux-headers-6.8.0-11-generic depends on libssl3 (>= 3.0.0). 213s 213s (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 ... 52215 files and directories currently installed.) 213s Removing libssl3:s390x (3.0.10-1ubuntu4) ... 213s Selecting previously unselected package libssl3t64:s390x. 213s (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 ... 52204 files and directories currently installed.) 213s Preparing to unpack .../libssl3t64_3.0.13-0ubuntu2_s390x.deb ... 213s Unpacking libssl3t64:s390x (3.0.13-0ubuntu2) ... 213s Setting up libssl3t64:s390x (3.0.13-0ubuntu2) ... 213s (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 ... 52217 files and directories currently installed.) 213s Preparing to unpack .../libnss-systemd_255.4-1ubuntu5_s390x.deb ... 213s Unpacking libnss-systemd:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 213s Preparing to unpack .../libudev1_255.4-1ubuntu5_s390x.deb ... 213s Unpacking libudev1:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 213s Setting up libudev1:s390x (255.4-1ubuntu5) ... 213s (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 ... 52217 files and directories currently installed.) 213s Preparing to unpack .../systemd_255.4-1ubuntu5_s390x.deb ... 213s Unpacking systemd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 213s Preparing to unpack .../udev_255.4-1ubuntu5_s390x.deb ... 213s Unpacking udev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 213s Preparing to unpack .../libsystemd0_255.4-1ubuntu5_s390x.deb ... 213s Unpacking libsystemd0:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 213s Setting up libsystemd0:s390x (255.4-1ubuntu5) ... 213s Setting up libcryptsetup12:s390x (2:2.7.0-1ubuntu2) ... 213s Setting up libkmod2:s390x (31+20240202-2ubuntu4) ... 213s Setting up libsystemd-shared:s390x (255.4-1ubuntu5) ... 213s Setting up systemd-dev (255.4-1ubuntu5) ... 213s Setting up systemd (255.4-1ubuntu5) ... 214s (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 ... 52217 files and directories currently installed.) 214s Preparing to unpack .../systemd-sysv_255.4-1ubuntu5_s390x.deb ... 214s Unpacking systemd-sysv (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 214s Preparing to unpack .../libpam-systemd_255.4-1ubuntu5_s390x.deb ... 214s Unpacking libpam-systemd:s390x (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 214s Preparing to unpack .../libpam-modules-bin_1.5.3-5ubuntu3_s390x.deb ... 214s Unpacking libpam-modules-bin (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 214s Setting up libpam-modules-bin (1.5.3-5ubuntu3) ... 215s pam_namespace.service is a disabled or a static unit not running, not starting it. 215s (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 ... 52217 files and directories currently installed.) 215s Preparing to unpack .../libpam-modules_1.5.3-5ubuntu3_s390x.deb ... 215s Unpacking libpam-modules:s390x (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 215s Setting up libpam-modules:s390x (1.5.3-5ubuntu3) ... 215s Installing new version of config file /etc/security/namespace.init ... 215s (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 ... 52215 files and directories currently installed.) 215s Preparing to unpack .../libpam-runtime_1.5.3-5ubuntu3_all.deb ... 215s Unpacking libpam-runtime (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 215s Setting up libpam-runtime (1.5.3-5ubuntu3) ... 215s (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 ... 52215 files and directories currently installed.) 215s Preparing to unpack .../0-dbus-user-session_1.14.10-4ubuntu2_s390x.deb ... 215s Unpacking dbus-user-session (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 215s Preparing to unpack .../1-libapparmor1_4.0.0-beta3-0ubuntu2_s390x.deb ... 215s Unpacking libapparmor1:s390x (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 215s Preparing to unpack .../2-libexpat1_2.6.1-2_s390x.deb ... 215s Unpacking libexpat1:s390x (2.6.1-2) over (2.6.0-1) ... 215s Preparing to unpack .../3-dbus-system-bus-common_1.14.10-4ubuntu2_all.deb ... 215s Unpacking dbus-system-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 215s Preparing to unpack .../4-dbus-bin_1.14.10-4ubuntu2_s390x.deb ... 215s Unpacking dbus-bin (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 215s Preparing to unpack .../5-dbus_1.14.10-4ubuntu2_s390x.deb ... 215s Unpacking dbus (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 215s Preparing to unpack .../6-dbus-daemon_1.14.10-4ubuntu2_s390x.deb ... 215s Unpacking dbus-daemon (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 215s Preparing to unpack .../7-libdbus-1-3_1.14.10-4ubuntu2_s390x.deb ... 215s Unpacking libdbus-1-3:s390x (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 215s Preparing to unpack .../8-libmount1_2.39.3-9ubuntu2_s390x.deb ... 215s Unpacking libmount1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 215s Setting up libmount1:s390x (2.39.3-9ubuntu2) ... 215s (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 ... 52215 files and directories currently installed.) 215s Preparing to unpack .../libseccomp2_2.5.5-1ubuntu2_s390x.deb ... 215s Unpacking libseccomp2:s390x (2.5.5-1ubuntu2) over (2.5.5-1ubuntu1) ... 215s Setting up libseccomp2:s390x (2.5.5-1ubuntu2) ... 215s (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 ... 52215 files and directories currently installed.) 215s Preparing to unpack .../libdevmapper1.02.1_2%3a1.02.185-3ubuntu2_s390x.deb ... 215s Unpacking libdevmapper1.02.1:s390x (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 215s Preparing to unpack .../libuuid1_2.39.3-9ubuntu2_s390x.deb ... 215s Unpacking libuuid1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 215s Setting up libuuid1:s390x (2.39.3-9ubuntu2) ... 215s (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 ... 52215 files and directories currently installed.) 215s Preparing to unpack .../libfdisk1_2.39.3-9ubuntu2_s390x.deb ... 215s Unpacking libfdisk1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 215s Preparing to unpack .../mount_2.39.3-9ubuntu2_s390x.deb ... 215s Unpacking mount (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 215s Preparing to unpack .../libsqlite3-0_3.45.1-1ubuntu1_s390x.deb ... 215s Unpacking libsqlite3-0:s390x (3.45.1-1ubuntu1) over (3.45.1-1) ... 215s Preparing to unpack .../gcc-14-base_14-20240315-1ubuntu1_s390x.deb ... 215s Unpacking gcc-14-base:s390x (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 215s Setting up gcc-14-base:s390x (14-20240315-1ubuntu1) ... 215s (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 ... 52215 files and directories currently installed.) 215s Preparing to unpack .../libgcc-s1_14-20240315-1ubuntu1_s390x.deb ... 215s Unpacking libgcc-s1:s390x (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 216s Setting up libgcc-s1:s390x (14-20240315-1ubuntu1) ... 216s (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 ... 52215 files and directories currently installed.) 216s Preparing to unpack .../libstdc++6_14-20240315-1ubuntu1_s390x.deb ... 216s Unpacking libstdc++6:s390x (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 216s Setting up libstdc++6:s390x (14-20240315-1ubuntu1) ... 216s (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 ... 52215 files and directories currently installed.) 216s Preparing to unpack .../dpkg_1.22.6ubuntu5_s390x.deb ... 216s Unpacking dpkg (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 216s Setting up dpkg (1.22.6ubuntu5) ... 216s Setting up libpython3.12-minimal:s390x (3.12.2-4build3) ... 216s Setting up libexpat1:s390x (2.6.1-2) ... 216s Setting up python3.12-minimal (3.12.2-4build3) ... 217s (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 ... 52215 files and directories currently installed.) 217s Preparing to unpack .../python3-minimal_3.12.2-0ubuntu1_s390x.deb ... 217s Unpacking python3-minimal (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 217s Setting up python3-minimal (3.12.2-0ubuntu1) ... 218s (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 ... 52215 files and directories currently installed.) 218s Preparing to unpack .../python3_3.12.2-0ubuntu1_s390x.deb ... 218s Unpacking python3 (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 218s Preparing to unpack .../libpython3-stdlib_3.12.2-0ubuntu1_s390x.deb ... 218s Unpacking libpython3-stdlib:s390x (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 218s Preparing to unpack .../libsmartcols1_2.39.3-9ubuntu2_s390x.deb ... 218s Unpacking libsmartcols1:s390x (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 218s Setting up libsmartcols1:s390x (2.39.3-9ubuntu2) ... 218s (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 ... 52215 files and directories currently installed.) 218s Preparing to unpack .../0-bsdextrautils_2.39.3-9ubuntu2_s390x.deb ... 218s Unpacking bsdextrautils (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 218s Preparing to unpack .../1-groff-base_1.23.0-3build1_s390x.deb ... 218s Unpacking groff-base (1.23.0-3build1) over (1.23.0-3) ... 218s Preparing to unpack .../2-pinentry-curses_1.2.1-3ubuntu4_s390x.deb ... 218s Unpacking pinentry-curses (1.2.1-3ubuntu4) over (1.2.1-3ubuntu1) ... 218s Preparing to unpack .../3-readline-common_8.2-4_all.deb ... 218s Unpacking readline-common (8.2-4) over (8.2-3) ... 218s Preparing to unpack .../4-libxml2_2.9.14+dfsg-1.3ubuntu2_s390x.deb ... 218s Unpacking libxml2:s390x (2.9.14+dfsg-1.3ubuntu2) over (2.9.14+dfsg-1.3ubuntu1) ... 218s Preparing to unpack .../5-libbpf1_1%3a1.3.0-2build1_s390x.deb ... 218s Unpacking libbpf1:s390x (1:1.3.0-2build1) over (1:1.3.0-2) ... 218s dpkg: libelf1:s390x: dependency problems, but removing anyway as you requested: 218s linux-headers-6.8.0-11-generic depends on libelf1 (>= 0.144). 218s iproute2 depends on libelf1 (>= 0.131). 218s 218s (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 ... 52215 files and directories currently installed.) 218s Removing libelf1:s390x (0.190-1) ... 218s Selecting previously unselected package libelf1t64:s390x. 218s (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 ... 52210 files and directories currently installed.) 218s Preparing to unpack .../libelf1t64_0.190-1.1build2_s390x.deb ... 218s Unpacking libelf1t64:s390x (0.190-1.1build2) ... 218s Preparing to unpack .../libtirpc-common_1.3.4+ds-1.1_all.deb ... 218s Unpacking libtirpc-common (1.3.4+ds-1.1) over (1.3.4+ds-1build1) ... 218s Preparing to unpack .../lsof_4.95.0-1build2_s390x.deb ... 218s Unpacking lsof (4.95.0-1build2) over (4.95.0-1build1) ... 218s Preparing to unpack .../libnsl2_1.3.0-3build2_s390x.deb ... 218s Unpacking libnsl2:s390x (1.3.0-3build2) over (1.3.0-3) ... 218s dpkg: libtirpc3:s390x: dependency problems, but removing anyway as you requested: 218s iproute2 depends on libtirpc3 (>= 1.0.2). 218s 218s (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 ... 52215 files and directories currently installed.) 218s Removing libtirpc3:s390x (1.3.4+ds-1build1) ... 218s Selecting previously unselected package libtirpc3t64:s390x. 218s (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 ... 52209 files and directories currently installed.) 218s Preparing to unpack .../0-libtirpc3t64_1.3.4+ds-1.1_s390x.deb ... 218s Adding 'diversion of /lib/s390x-linux-gnu/libtirpc.so.3 to /lib/s390x-linux-gnu/libtirpc.so.3.usr-is-merged by libtirpc3t64' 218s Adding 'diversion of /lib/s390x-linux-gnu/libtirpc.so.3.0.0 to /lib/s390x-linux-gnu/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' 218s Unpacking libtirpc3t64:s390x (1.3.4+ds-1.1) ... 218s Preparing to unpack .../1-iproute2_6.1.0-1ubuntu5_s390x.deb ... 218s Unpacking iproute2 (6.1.0-1ubuntu5) over (6.1.0-1ubuntu2) ... 218s Preparing to unpack .../2-python3-yaml_6.0.1-2build1_s390x.deb ... 218s Unpacking python3-yaml (6.0.1-2build1) over (6.0.1-2) ... 218s Preparing to unpack .../3-libusb-1.0-0_2%3a1.0.27-1_s390x.deb ... 218s Unpacking libusb-1.0-0:s390x (2:1.0.27-1) over (2:1.0.26-1) ... 218s Preparing to unpack .../4-libprotobuf-c1_1.4.1-1ubuntu3_s390x.deb ... 218s Unpacking libprotobuf-c1:s390x (1.4.1-1ubuntu3) over (1.4.1-1ubuntu2) ... 218s Preparing to unpack .../5-libnghttp2-14_1.59.0-1build1_s390x.deb ... 218s Unpacking libnghttp2-14:s390x (1.59.0-1build1) over (1.59.0-1) ... 218s Preparing to unpack .../6-libproc2-0_2%3a4.0.4-4ubuntu2_s390x.deb ... 218s Unpacking libproc2-0:s390x (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 218s Preparing to unpack .../7-procps_2%3a4.0.4-4ubuntu2_s390x.deb ... 218s Unpacking procps (2:4.0.4-4ubuntu2) over (2:4.0.4-4ubuntu1) ... 218s Preparing to unpack .../8-coreutils_9.4-3ubuntu3_s390x.deb ... 218s Unpacking coreutils (9.4-3ubuntu3) over (9.4-2ubuntu4) ... 219s Setting up coreutils (9.4-3ubuntu3) ... 219s (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 ... 52220 files and directories currently installed.) 219s Preparing to unpack .../util-linux_2.39.3-9ubuntu2_s390x.deb ... 219s Unpacking util-linux (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 219s Setting up util-linux (2.39.3-9ubuntu2) ... 219s fstrim.service is a disabled or a static unit not running, not starting it. 220s (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 ... 52220 files and directories currently installed.) 220s Removing libatm1:s390x (1:2.5.1-5) ... 220s (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 ... 52215 files and directories currently installed.) 220s Preparing to unpack .../file_1%3a5.45-3_s390x.deb ... 220s Unpacking file (1:5.45-3) over (1:5.45-2) ... 220s (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 ... 52215 files and directories currently installed.) 220s Removing libmagic1:s390x (1:5.45-2) ... 220s (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 ... 52205 files and directories currently installed.) 220s Preparing to unpack .../libmagic-mgc_1%3a5.45-3_s390x.deb ... 220s Unpacking libmagic-mgc (1:5.45-3) over (1:5.45-2) ... 220s Selecting previously unselected package libmagic1t64:s390x. 220s Preparing to unpack .../libmagic1t64_1%3a5.45-3_s390x.deb ... 220s Unpacking libmagic1t64:s390x (1:5.45-3) ... 220s Preparing to unpack .../libplymouth5_24.004.60-1ubuntu6_s390x.deb ... 220s Unpacking libplymouth5:s390x (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 220s (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 ... 52216 files and directories currently installed.) 220s Removing libpng16-16:s390x (1.6.43-1) ... 220s Selecting previously unselected package libpng16-16t64:s390x. 220s (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 ... 52206 files and directories currently installed.) 220s Preparing to unpack .../libpng16-16t64_1.6.43-3_s390x.deb ... 220s Unpacking libpng16-16t64:s390x (1.6.43-3) ... 220s Preparing to unpack .../multipath-tools_0.9.4-5ubuntu6_s390x.deb ... 220s Unpacking multipath-tools (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 220s dpkg: liburcu8:s390x: dependency problems, but removing anyway as you requested: 220s xfsprogs depends on liburcu8 (>= 0.13.0). 220s 220s (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 ... 52216 files and directories currently installed.) 220s Removing liburcu8:s390x (0.14.0-3) ... 220s Selecting previously unselected package liburcu8t64:s390x. 220s (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 ... 52197 files and directories currently installed.) 220s Preparing to unpack .../liburcu8t64_0.14.0-3.1_s390x.deb ... 220s Unpacking liburcu8t64:s390x (0.14.0-3.1) ... 220s Preparing to unpack .../liblocale-gettext-perl_1.07-6ubuntu4_s390x.deb ... 220s Unpacking liblocale-gettext-perl (1.07-6ubuntu4) over (1.07-6build1) ... 220s Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu2_s390x.deb ... 220s Unpacking uuid-runtime (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 220s Preparing to unpack .../libdebconfclient0_0.271ubuntu2_s390x.deb ... 220s Unpacking libdebconfclient0:s390x (0.271ubuntu2) over (0.271ubuntu1) ... 220s Setting up libdebconfclient0:s390x (0.271ubuntu2) ... 220s (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 ... 52217 files and directories currently installed.) 220s Preparing to unpack .../libsemanage-common_3.5-1build4_all.deb ... 220s Unpacking libsemanage-common (3.5-1build4) over (3.5-1build2) ... 220s Setting up libsemanage-common (3.5-1build4) ... 220s (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 ... 52217 files and directories currently installed.) 220s Preparing to unpack .../libsemanage2_3.5-1build4_s390x.deb ... 220s Unpacking libsemanage2:s390x (3.5-1build4) over (3.5-1build2) ... 220s Setting up libsemanage2:s390x (3.5-1build4) ... 220s (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 ... 52217 files and directories currently installed.) 220s Preparing to unpack .../install-info_7.1-3build1_s390x.deb ... 220s Unpacking install-info (7.1-3build1) over (7.1-3) ... 220s Setting up install-info (7.1-3build1) ... 220s (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 ... 52217 files and directories currently installed.) 220s Preparing to unpack .../000-gcc-13-base_13.2.0-21ubuntu1_s390x.deb ... 220s Unpacking gcc-13-base:s390x (13.2.0-21ubuntu1) over (13.2.0-17ubuntu2) ... 220s Preparing to unpack .../001-libss2_1.47.0-2.4~exp1ubuntu2_s390x.deb ... 220s Unpacking libss2:s390x (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 220s Preparing to unpack .../002-dmsetup_2%3a1.02.185-3ubuntu2_s390x.deb ... 220s Unpacking dmsetup (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 220s Preparing to unpack .../003-eject_2.39.3-9ubuntu2_s390x.deb ... 220s Unpacking eject (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 220s Preparing to unpack .../004-krb5-locales_1.20.1-6ubuntu1_all.deb ... 220s Unpacking krb5-locales (1.20.1-6ubuntu1) over (1.20.1-5build1) ... 220s Preparing to unpack .../005-libglib2.0-data_2.79.3-3ubuntu5_all.deb ... 220s Unpacking libglib2.0-data (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 220s Preparing to unpack .../006-libslang2_2.3.3-3build1_s390x.deb ... 220s Unpacking libslang2:s390x (2.3.3-3build1) over (2.3.3-3) ... 220s Preparing to unpack .../007-libtext-charwidth-perl_0.04-11build2_s390x.deb ... 220s Unpacking libtext-charwidth-perl:s390x (0.04-11build2) over (0.04-11build1) ... 220s Preparing to unpack .../008-libtext-iconv-perl_1.7-8build2_s390x.deb ... 220s Unpacking libtext-iconv-perl:s390x (1.7-8build2) over (1.7-8build1) ... 220s Preparing to unpack .../009-python-apt-common_2.7.7_all.deb ... 220s Unpacking python-apt-common (2.7.7) over (2.7.6) ... 220s Preparing to unpack .../010-python3-setuptools_68.1.2-2ubuntu1_all.deb ... 221s Unpacking python3-setuptools (68.1.2-2ubuntu1) over (68.1.2-2) ... 221s Preparing to unpack .../011-python3-pkg-resources_68.1.2-2ubuntu1_all.deb ... 221s Unpacking python3-pkg-resources (68.1.2-2ubuntu1) over (68.1.2-2) ... 221s Preparing to unpack .../012-rsyslog_8.2312.0-3ubuntu7_s390x.deb ... 221s Unpacking rsyslog (8.2312.0-3ubuntu7) over (8.2312.0-3ubuntu3) ... 221s Preparing to unpack .../013-vim-tiny_2%3a9.1.0016-1ubuntu6_s390x.deb ... 221s Unpacking vim-tiny (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 221s Preparing to unpack .../014-vim-common_2%3a9.1.0016-1ubuntu6_all.deb ... 221s Unpacking vim-common (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 221s Selecting previously unselected package xdg-user-dirs. 221s Preparing to unpack .../015-xdg-user-dirs_0.18-1_s390x.deb ... 221s Unpacking xdg-user-dirs (0.18-1) ... 221s Preparing to unpack .../016-xxd_2%3a9.1.0016-1ubuntu6_s390x.deb ... 221s Unpacking xxd (2:9.1.0016-1ubuntu6) over (2:9.1.0016-1ubuntu2) ... 221s Preparing to unpack .../017-apparmor_4.0.0-beta3-0ubuntu2_s390x.deb ... 221s Unpacking apparmor (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 221s Preparing to unpack .../018-ftp_20230507-2build1_all.deb ... 221s Unpacking ftp (20230507-2build1) over (20230507-2) ... 222s Preparing to unpack .../019-inetutils-telnet_2%3a2.5-3ubuntu3_s390x.deb ... 222s Unpacking inetutils-telnet (2:2.5-3ubuntu3) over (2:2.5-3ubuntu1) ... 222s Preparing to unpack .../020-info_7.1-3build1_s390x.deb ... 222s Unpacking info (7.1-3build1) over (7.1-3) ... 222s Preparing to unpack .../021-libxmuu1_2%3a1.1.3-3build1_s390x.deb ... 222s Unpacking libxmuu1:s390x (2:1.1.3-3build1) over (2:1.1.3-3) ... 222s Preparing to unpack .../022-lshw_02.19.git.2021.06.19.996aaad9c7-2build2_s390x.deb ... 222s Unpacking lshw (02.19.git.2021.06.19.996aaad9c7-2build2) over (02.19.git.2021.06.19.996aaad9c7-2build1) ... 222s Selecting previously unselected package manpages. 222s Preparing to unpack .../023-manpages_6.05.01-1_all.deb ... 222s Unpacking manpages (6.05.01-1) ... 222s Preparing to unpack .../024-mtr-tiny_0.95-1.1build1_s390x.deb ... 222s Unpacking mtr-tiny (0.95-1.1build1) over (0.95-1.1) ... 222s Preparing to unpack .../025-plymouth-theme-ubuntu-text_24.004.60-1ubuntu6_s390x.deb ... 222s Unpacking plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 222s Preparing to unpack .../026-plymouth_24.004.60-1ubuntu6_s390x.deb ... 222s Unpacking plymouth (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 222s Preparing to unpack .../027-telnet_0.17+2.5-3ubuntu3_all.deb ... 222s Unpacking telnet (0.17+2.5-3ubuntu3) over (0.17+2.5-3ubuntu1) ... 222s Preparing to unpack .../028-usb.ids_2024.03.18-1_all.deb ... 222s Unpacking usb.ids (2024.03.18-1) over (2024.01.30-1) ... 222s Preparing to unpack .../029-xz-utils_5.6.0-0.2_s390x.deb ... 222s Unpacking xz-utils (5.6.0-0.2) over (5.4.5-0.3) ... 222s Preparing to unpack .../030-libctf0_2.42-4ubuntu1_s390x.deb ... 222s Unpacking libctf0:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 222s Preparing to unpack .../031-libctf-nobfd0_2.42-4ubuntu1_s390x.deb ... 222s Unpacking libctf-nobfd0:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 222s Preparing to unpack .../032-binutils-s390x-linux-gnu_2.42-4ubuntu1_s390x.deb ... 222s Unpacking binutils-s390x-linux-gnu (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 222s Preparing to unpack .../033-libbinutils_2.42-4ubuntu1_s390x.deb ... 222s Unpacking libbinutils:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 222s Preparing to unpack .../034-binutils_2.42-4ubuntu1_s390x.deb ... 222s Unpacking binutils (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 222s Preparing to unpack .../035-binutils-common_2.42-4ubuntu1_s390x.deb ... 222s Unpacking binutils-common:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 222s Preparing to unpack .../036-libsframe1_2.42-4ubuntu1_s390x.deb ... 222s Unpacking libsframe1:s390x (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 222s Selecting previously unselected package libllvm18:s390x. 222s Preparing to unpack .../037-libllvm18_1%3a18.1.2-1ubuntu2_s390x.deb ... 222s Unpacking libllvm18:s390x (1:18.1.2-1ubuntu2) ... 223s Selecting previously unselected package libclang-cpp18. 223s Preparing to unpack .../038-libclang-cpp18_1%3a18.1.2-1ubuntu2_s390x.deb ... 223s Unpacking libclang-cpp18 (1:18.1.2-1ubuntu2) ... 224s Selecting previously unselected package libbpfcc:s390x. 224s Preparing to unpack .../039-libbpfcc_0.29.1+ds-1ubuntu4_s390x.deb ... 224s Unpacking libbpfcc:s390x (0.29.1+ds-1ubuntu4) ... 224s Selecting previously unselected package python3-bpfcc. 224s Preparing to unpack .../040-python3-bpfcc_0.29.1+ds-1ubuntu4_all.deb ... 224s Unpacking python3-bpfcc (0.29.1+ds-1ubuntu4) ... 224s Selecting previously unselected package ieee-data. 224s Preparing to unpack .../041-ieee-data_20220827.1_all.deb ... 224s Unpacking ieee-data (20220827.1) ... 224s Selecting previously unselected package python3-netaddr. 224s Preparing to unpack .../042-python3-netaddr_0.8.0-2ubuntu1_all.deb ... 224s Unpacking python3-netaddr (0.8.0-2ubuntu1) ... 224s Selecting previously unselected package bpfcc-tools. 224s Preparing to unpack .../043-bpfcc-tools_0.29.1+ds-1ubuntu4_all.deb ... 224s Unpacking bpfcc-tools (0.29.1+ds-1ubuntu4) ... 224s Selecting previously unselected package libclang1-18. 224s Preparing to unpack .../044-libclang1-18_1%3a18.1.2-1ubuntu2_s390x.deb ... 224s Unpacking libclang1-18 (1:18.1.2-1ubuntu2) ... 224s Selecting previously unselected package libdw1t64:s390x. 224s Preparing to unpack .../045-libdw1t64_0.190-1.1build2_s390x.deb ... 224s Unpacking libdw1t64:s390x (0.190-1.1build2) ... 224s Selecting previously unselected package bpftrace. 224s Preparing to unpack .../046-bpftrace_0.20.2-1ubuntu1_s390x.deb ... 224s Unpacking bpftrace (0.20.2-1ubuntu1) ... 224s Preparing to unpack .../047-cryptsetup-bin_2%3a2.7.0-1ubuntu2_s390x.deb ... 224s Unpacking cryptsetup-bin (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 224s Preparing to unpack .../048-dpkg-dev_1.22.6ubuntu5_all.deb ... 224s Unpacking dpkg-dev (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 224s Preparing to unpack .../049-libdpkg-perl_1.22.6ubuntu5_all.deb ... 224s Unpacking libdpkg-perl (1.22.6ubuntu5) over (1.22.4ubuntu5) ... 225s Selecting previously unselected package fonts-dejavu-mono. 225s Preparing to unpack .../050-fonts-dejavu-mono_2.37-8_all.deb ... 225s Unpacking fonts-dejavu-mono (2.37-8) ... 225s Selecting previously unselected package fonts-dejavu-core. 225s Preparing to unpack .../051-fonts-dejavu-core_2.37-8_all.deb ... 225s Unpacking fonts-dejavu-core (2.37-8) ... 225s Selecting previously unselected package fontconfig-config. 225s Preparing to unpack .../052-fontconfig-config_2.15.0-1.1ubuntu1_s390x.deb ... 225s Unpacking fontconfig-config (2.15.0-1.1ubuntu1) ... 225s Preparing to unpack .../053-gnupg-l10n_2.4.4-2ubuntu15_all.deb ... 225s Unpacking gnupg-l10n (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 225s Selecting previously unselected package hwdata. 225s Preparing to unpack .../054-hwdata_0.379-1_all.deb ... 225s Unpacking hwdata (0.379-1) ... 225s Preparing to unpack .../055-libibverbs1_50.0-2build1_s390x.deb ... 225s Unpacking libibverbs1:s390x (50.0-2build1) over (50.0-2) ... 225s Preparing to unpack .../056-ibverbs-providers_50.0-2build1_s390x.deb ... 225s Unpacking ibverbs-providers:s390x (50.0-2build1) over (50.0-2) ... 225s Preparing to unpack .../057-jq_1.7.1-3_s390x.deb ... 225s Unpacking jq (1.7.1-3) over (1.7.1-2) ... 225s Preparing to unpack .../058-libjq1_1.7.1-3_s390x.deb ... 225s Unpacking libjq1:s390x (1.7.1-3) over (1.7.1-2) ... 225s Selecting previously unselected package libaio1t64:s390x. 225s Preparing to unpack .../059-libaio1t64_0.3.113-6_s390x.deb ... 225s Unpacking libaio1t64:s390x (0.3.113-6) ... 225s Selecting previously unselected package libatm1t64:s390x. 225s Preparing to unpack .../060-libatm1t64_1%3a2.5.1-5.1_s390x.deb ... 225s Unpacking libatm1t64:s390x (1:2.5.1-5.1) ... 225s Selecting previously unselected package libc-dev-bin. 225s Preparing to unpack .../061-libc-dev-bin_2.39-0ubuntu6_s390x.deb ... 225s Unpacking libc-dev-bin (2.39-0ubuntu6) ... 225s Selecting previously unselected package libfreetype6:s390x. 225s Preparing to unpack .../062-libfreetype6_2.13.2+dfsg-1build2_s390x.deb ... 225s Unpacking libfreetype6:s390x (2.13.2+dfsg-1build2) ... 225s Selecting previously unselected package libfontconfig1:s390x. 225s Preparing to unpack .../063-libfontconfig1_2.15.0-1.1ubuntu1_s390x.deb ... 225s Unpacking libfontconfig1:s390x (2.15.0-1.1ubuntu1) ... 225s Selecting previously unselected package libjpeg-turbo8:s390x. 225s Preparing to unpack .../064-libjpeg-turbo8_2.1.5-2ubuntu1_s390x.deb ... 225s Unpacking libjpeg-turbo8:s390x (2.1.5-2ubuntu1) ... 225s Selecting previously unselected package libjpeg8:s390x. 225s Preparing to unpack .../065-libjpeg8_8c-2ubuntu11_s390x.deb ... 225s Unpacking libjpeg8:s390x (8c-2ubuntu11) ... 225s Selecting previously unselected package libdeflate0:s390x. 225s Preparing to unpack .../066-libdeflate0_1.19-1_s390x.deb ... 225s Unpacking libdeflate0:s390x (1.19-1) ... 225s Selecting previously unselected package libjbig0:s390x. 225s Preparing to unpack .../067-libjbig0_2.1-6.1ubuntu1_s390x.deb ... 225s Unpacking libjbig0:s390x (2.1-6.1ubuntu1) ... 225s Selecting previously unselected package libsharpyuv0:s390x. 225s Preparing to unpack .../068-libsharpyuv0_1.3.2-0.4build2_s390x.deb ... 225s Unpacking libsharpyuv0:s390x (1.3.2-0.4build2) ... 225s Selecting previously unselected package libwebp7:s390x. 225s Preparing to unpack .../069-libwebp7_1.3.2-0.4build2_s390x.deb ... 225s Unpacking libwebp7:s390x (1.3.2-0.4build2) ... 225s Selecting previously unselected package libtiff6:s390x. 225s Preparing to unpack .../070-libtiff6_4.5.1+git230720-4ubuntu1_s390x.deb ... 225s Unpacking libtiff6:s390x (4.5.1+git230720-4ubuntu1) ... 225s Selecting previously unselected package libxpm4:s390x. 225s Preparing to unpack .../071-libxpm4_1%3a3.5.17-1build1_s390x.deb ... 225s Unpacking libxpm4:s390x (1:3.5.17-1build1) ... 225s Selecting previously unselected package libgd3:s390x. 225s Preparing to unpack .../072-libgd3_2.3.3-9ubuntu3_s390x.deb ... 225s Unpacking libgd3:s390x (2.3.3-9ubuntu3) ... 225s Selecting previously unselected package libc-devtools. 225s Preparing to unpack .../073-libc-devtools_2.39-0ubuntu6_s390x.deb ... 225s Unpacking libc-devtools (2.39-0ubuntu6) ... 225s Selecting previously unselected package linux-libc-dev:s390x. 225s Preparing to unpack .../074-linux-libc-dev_6.8.0-20.20_s390x.deb ... 225s Unpacking linux-libc-dev:s390x (6.8.0-20.20) ... 225s Selecting previously unselected package libcrypt-dev:s390x. 225s Preparing to unpack .../075-libcrypt-dev_1%3a4.4.36-4_s390x.deb ... 225s Unpacking libcrypt-dev:s390x (1:4.4.36-4) ... 225s Selecting previously unselected package rpcsvc-proto. 225s Preparing to unpack .../076-rpcsvc-proto_1.4.2-0ubuntu6_s390x.deb ... 225s Unpacking rpcsvc-proto (1.4.2-0ubuntu6) ... 225s Selecting previously unselected package libc6-dev:s390x. 225s Preparing to unpack .../077-libc6-dev_2.39-0ubuntu6_s390x.deb ... 225s Unpacking libc6-dev:s390x (2.39-0ubuntu6) ... 225s Preparing to unpack .../078-libevent-core-2.1-7_2.1.12-stable-9build1_s390x.deb ... 225s Unpacking libevent-core-2.1-7:s390x (2.1.12-stable-9build1) over (2.1.12-stable-9) ... 225s Preparing to unpack .../079-libftdi1-2_1.5-6build4_s390x.deb ... 225s Unpacking libftdi1-2:s390x (1.5-6build4) over (1.5-6build3) ... 225s Preparing to unpack .../080-libldap-common_2.6.7+dfsg-1~exp1ubuntu6_all.deb ... 225s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 225s Selecting previously unselected package linux-modules-6.8.0-20-generic. 225s Preparing to unpack .../081-linux-modules-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 225s Unpacking linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 226s Selecting previously unselected package linux-image-6.8.0-20-generic. 226s Preparing to unpack .../082-linux-image-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 226s Unpacking linux-image-6.8.0-20-generic (6.8.0-20.20) ... 226s Selecting previously unselected package linux-modules-extra-6.8.0-20-generic. 226s Preparing to unpack .../083-linux-modules-extra-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 226s Unpacking linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 226s Preparing to unpack .../084-linux-generic_6.8.0-20.20+1_s390x.deb ... 226s Unpacking linux-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 226s Preparing to unpack .../085-linux-image-generic_6.8.0-20.20+1_s390x.deb ... 226s Unpacking linux-image-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 226s Preparing to unpack .../086-linux-virtual_6.8.0-20.20+1_s390x.deb ... 226s Unpacking linux-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 226s Preparing to unpack .../087-linux-image-virtual_6.8.0-20.20+1_s390x.deb ... 226s Unpacking linux-image-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 226s Preparing to unpack .../088-linux-headers-virtual_6.8.0-20.20+1_s390x.deb ... 226s Unpacking linux-headers-virtual (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 226s Selecting previously unselected package linux-headers-6.8.0-20. 226s Preparing to unpack .../089-linux-headers-6.8.0-20_6.8.0-20.20_all.deb ... 226s Unpacking linux-headers-6.8.0-20 (6.8.0-20.20) ... 228s Selecting previously unselected package linux-headers-6.8.0-20-generic. 228s Preparing to unpack .../090-linux-headers-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 228s Unpacking linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 228s Preparing to unpack .../091-linux-headers-generic_6.8.0-20.20+1_s390x.deb ... 228s Unpacking linux-headers-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 228s Selecting previously unselected package linux-tools-common. 228s Preparing to unpack .../092-linux-tools-common_6.8.0-20.20_all.deb ... 228s Unpacking linux-tools-common (6.8.0-20.20) ... 229s Selecting previously unselected package linux-tools-6.8.0-20. 229s Preparing to unpack .../093-linux-tools-6.8.0-20_6.8.0-20.20_s390x.deb ... 229s Unpacking linux-tools-6.8.0-20 (6.8.0-20.20) ... 229s Selecting previously unselected package linux-tools-6.8.0-20-generic. 229s Preparing to unpack .../094-linux-tools-6.8.0-20-generic_6.8.0-20.20_s390x.deb ... 229s Unpacking linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 229s Selecting previously unselected package manpages-dev. 229s Preparing to unpack .../095-manpages-dev_6.05.01-1_all.deb ... 229s Unpacking manpages-dev (6.05.01-1) ... 229s Preparing to unpack .../096-python3-distutils_3.12.2-3ubuntu1.1_all.deb ... 229s Unpacking python3-distutils (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 229s Preparing to unpack .../097-python3-lib2to3_3.12.2-3ubuntu1.1_all.deb ... 229s Unpacking python3-lib2to3 (3.12.2-3ubuntu1.1) over (3.11.5-1) ... 229s Preparing to unpack .../098-python3-pyrsistent_0.20.0-1build1_s390x.deb ... 229s Unpacking python3-pyrsistent:s390x (0.20.0-1build1) over (0.20.0-1) ... 229s Preparing to unpack .../099-python3-typing-extensions_4.10.0-1_all.deb ... 229s Unpacking python3-typing-extensions (4.10.0-1) over (4.9.0-1) ... 229s Preparing to unpack .../100-s390-tools-data_2.31.0-0ubuntu3_all.deb ... 229s Unpacking s390-tools-data (2.31.0-0ubuntu3) over (2.31.0-0ubuntu1) ... 229s Selecting previously unselected package ubuntu-kernel-accessories. 229s Preparing to unpack .../101-ubuntu-kernel-accessories_1.536build1_s390x.deb ... 229s Unpacking ubuntu-kernel-accessories (1.536build1) ... 229s Preparing to unpack .../102-kpartx_0.9.4-5ubuntu6_s390x.deb ... 229s Unpacking kpartx (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 229s Setting up cryptsetup-bin (2:2.7.0-1ubuntu2) ... 229s Setting up pinentry-curses (1.2.1-3ubuntu4) ... 229s Setting up motd-news-config (13ubuntu8) ... 229s Setting up libtext-iconv-perl:s390x (1.7-8build2) ... 229s Setting up libtext-charwidth-perl:s390x (0.04-11build2) ... 229s Setting up libsharpyuv0:s390x (1.3.2-0.4build2) ... 229s Setting up liburcu8t64:s390x (0.14.0-3.1) ... 229s Setting up tcpdump (4.99.4-3ubuntu2) ... 229s Setting up libibverbs1:s390x (50.0-2build1) ... 229s Setting up systemd-sysv (255.4-1ubuntu5) ... 229s Setting up ubuntu-kernel-accessories (1.536build1) ... 229s Setting up libapparmor1:s390x (4.0.0-beta3-0ubuntu2) ... 229s Setting up libatm1t64:s390x (1:2.5.1-5.1) ... 229s Setting up libgdbm6t64:s390x (1.23-5.1) ... 229s Setting up bsdextrautils (2.39.3-9ubuntu2) ... 229s Setting up libxpm4:s390x (1:3.5.17-1build1) ... 229s Setting up libgdbm-compat4t64:s390x (1.23-5.1) ... 229s Setting up xdg-user-dirs (0.18-1) ... 229s Setting up ibverbs-providers:s390x (50.0-2build1) ... 229s Setting up linux-headers-6.8.0-20 (6.8.0-20.20) ... 229s Setting up libmagic-mgc (1:5.45-3) ... 229s Setting up gawk (1:5.2.1-2build2) ... 229s Setting up libjq1:s390x (1.7.1-3) ... 229s Setting up manpages (6.05.01-1) ... 229s Setting up libtirpc-common (1.3.4+ds-1.1) ... 229s Setting up libbrotli1:s390x (1.1.0-2build1) ... 229s Setting up libsqlite3-0:s390x (3.45.1-1ubuntu1) ... 229s Setting up libsasl2-modules:s390x (2.1.28+dfsg1-5ubuntu1) ... 229s Setting up libuv1t64:s390x (1.48.0-1.1) ... 229s Setting up libmagic1t64:s390x (1:5.45-3) ... 229s Setting up rsyslog (8.2312.0-3ubuntu7) ... 230s info: The user `syslog' is already a member of `adm'. 231s Setting up binutils-common:s390x (2.42-4ubuntu1) ... 231s Setting up libpsl5t64:s390x (0.21.2-1.1) ... 231s Setting up libnghttp2-14:s390x (1.59.0-1build1) ... 231s Setting up libdeflate0:s390x (1.19-1) ... 231s Setting up linux-libc-dev:s390x (6.8.0-20.20) ... 231s Setting up libreiserfscore0t64 (1:3.6.27-7.1) ... 231s Setting up libctf-nobfd0:s390x (2.42-4ubuntu1) ... 231s Setting up libnss-systemd:s390x (255.4-1ubuntu5) ... 231s Setting up krb5-locales (1.20.1-6ubuntu1) ... 231s Setting up file (1:5.45-3) ... 231s Setting up kmod (31+20240202-2ubuntu4) ... 231s Setting up lshw (02.19.git.2021.06.19.996aaad9c7-2build2) ... 231s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu6) ... 231s Setting up libprotobuf-c1:s390x (1.4.1-1ubuntu3) ... 231s Setting up libjbig0:s390x (2.1-6.1ubuntu1) ... 231s Setting up xxd (2:9.1.0016-1ubuntu6) ... 231s Setting up libsframe1:s390x (2.42-4ubuntu1) ... 231s Setting up libelf1t64:s390x (0.190-1.1build2) ... 231s Setting up libkrb5support0:s390x (1.20.1-6ubuntu1) ... 231s Setting up libdw1t64:s390x (0.190-1.1build2) ... 231s Setting up linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 231s Setting up eject (2.39.3-9ubuntu2) ... 231s Setting up apparmor (4.0.0-beta3-0ubuntu2) ... 231s Installing new version of config file /etc/apparmor.d/abstractions/authentication ... 231s Installing new version of config file /etc/apparmor.d/abstractions/crypto ... 231s Installing new version of config file /etc/apparmor.d/abstractions/kde-open5 ... 231s Installing new version of config file /etc/apparmor.d/abstractions/openssl ... 231s Installing new version of config file /etc/apparmor.d/code ... 231s Installing new version of config file /etc/apparmor.d/firefox ... 232s Reloading AppArmor profiles 232s Setting up libglib2.0-0t64:s390x (2.79.3-3ubuntu5) ... 232s No schema files found: doing nothing. 232s Setting up libglib2.0-data (2.79.3-3ubuntu5) ... 232s Setting up rpcsvc-proto (1.4.2-0ubuntu6) ... 232s Setting up vim-common (2:9.1.0016-1ubuntu6) ... 232s Setting up gcc-13-base:s390x (13.2.0-21ubuntu1) ... 232s Setting up libqrtr-glib0:s390x (1.2.2-1ubuntu3) ... 232s Setting up libslang2:s390x (2.3.3-3build1) ... 232s Setting up libnvme1t64 (1.8-3) ... 232s Setting up mtr-tiny (0.95-1.1build1) ... 232s Setting up gnupg-l10n (2.4.4-2ubuntu15) ... 232s Setting up librtmp1:s390x (2.4+20151223.gitfa8646d.1-2build6) ... 232s Setting up libdbus-1-3:s390x (1.14.10-4ubuntu2) ... 232s Setting up xz-utils (5.6.0-0.2) ... 232s Setting up perl-modules-5.38 (5.38.2-3.2) ... 232s Setting up libproc2-0:s390x (2:4.0.4-4ubuntu2) ... 232s Setting up libblockdev-utils3:s390x (3.1.0-1build1) ... 232s Setting up fonts-dejavu-mono (2.37-8) ... 232s Setting up libpng16-16t64:s390x (1.6.43-3) ... 232s Setting up systemd-timesyncd (255.4-1ubuntu5) ... 233s Setting up libevent-core-2.1-7:s390x (2.1.12-stable-9build1) ... 233s Setting up udev (255.4-1ubuntu5) ... 234s Setting up libss2:s390x (1.47.0-2.4~exp1ubuntu2) ... 234s Setting up usb.ids (2024.03.18-1) ... 234s Setting up sudo (1.9.15p5-3ubuntu3) ... 234s Setting up fonts-dejavu-core (2.37-8) ... 234s Setting up dhcpcd-base (1:10.0.6-1ubuntu2) ... 234s Setting up gir1.2-glib-2.0:s390x (2.79.3-3ubuntu5) ... 234s Setting up libk5crypto3:s390x (1.20.1-6ubuntu1) ... 234s Setting up libjpeg-turbo8:s390x (2.1.5-2ubuntu1) ... 234s Setting up logsave (1.47.0-2.4~exp1ubuntu2) ... 234s Setting up libwebp7:s390x (1.3.2-0.4build2) ... 234s Setting up libfdisk1:s390x (2.39.3-9ubuntu2) ... 234s Setting up libdb5.3t64:s390x (5.3.28+dfsg2-6) ... 234s Setting up libblockdev-nvme3:s390x (3.1.0-1build1) ... 234s Setting up libdevmapper1.02.1:s390x (2:1.02.185-3ubuntu2) ... 234s Setting up libblockdev-fs3:s390x (3.1.0-1build1) ... 234s Setting up libaio1t64:s390x (0.3.113-6) ... 234s Setting up python-apt-common (2.7.7) ... 234s Setting up mount (2.39.3-9ubuntu2) ... 234s Setting up dmsetup (2:1.02.185-3ubuntu2) ... 234s Setting up uuid-runtime (2.39.3-9ubuntu2) ... 235s uuidd.service is a disabled or a static unit not running, not starting it. 235s Setting up libmm-glib0:s390x (1.23.4-0ubuntu1) ... 235s Setting up groff-base (1.23.0-3build1) ... 235s Setting up libcrypt-dev:s390x (1:4.4.36-4) ... 235s Setting up libplymouth5:s390x (24.004.60-1ubuntu6) ... 235s Setting up dbus-session-bus-common (1.14.10-4ubuntu2) ... 235s Setting up kpartx (0.9.4-5ubuntu6) ... 235s Setting up jq (1.7.1-3) ... 235s Setting up procps (2:4.0.4-4ubuntu2) ... 235s Setting up gpgconf (2.4.4-2ubuntu15) ... 235s Setting up libgirepository-1.0-1:s390x (1.79.1-1ubuntu6) ... 235s Setting up libjson-glib-1.0-common (1.8.0-2build1) ... 235s Setting up libkrb5-3:s390x (1.20.1-6ubuntu1) ... 235s Setting up libpython3.11-minimal:s390x (3.11.8-1build4) ... 235s Setting up libusb-1.0-0:s390x (2:1.0.27-1) ... 235s Setting up libperl5.38t64:s390x (5.38.2-3.2) ... 235s Setting up tnftp (20230507-2build1) ... 235s Setting up libbinutils:s390x (2.42-4ubuntu1) ... 235s Setting up dbus-system-bus-common (1.14.10-4ubuntu2) ... 235s Setting up libfido2-1:s390x (1.14.0-1build1) ... 235s Setting up libc-dev-bin (2.39-0ubuntu6) ... 235s Setting up openssl (3.0.13-0ubuntu2) ... 235s Setting up linux-modules-6.8.0-20-generic (6.8.0-20.20) ... 235s Setting up readline-common (8.2-4) ... 235s Setting up libxml2:s390x (2.9.14+dfsg-1.3ubuntu2) ... 235s Setting up libxmuu1:s390x (2:1.1.3-3build1) ... 235s Setting up dbus-bin (1.14.10-4ubuntu2) ... 235s Setting up info (7.1-3build1) ... 235s Setting up liblocale-gettext-perl (1.07-6ubuntu4) ... 235s Setting up gpg (2.4.4-2ubuntu15) ... 235s Setting up libgudev-1.0-0:s390x (1:238-3ubuntu2) ... 235s Setting up libpolkit-gobject-1-0:s390x (124-1ubuntu1) ... 235s Setting up libbpf1:s390x (1:1.3.0-2build1) ... 235s Setting up libmbim-glib4:s390x (1.31.2-0ubuntu2) ... 235s Setting up rsync (3.2.7-1build1) ... 236s rsync.service is a disabled or a static unit not running, not starting it. 236s Setting up libudisks2-0:s390x (2.10.1-6) ... 236s Setting up bolt (0.9.6-2build1) ... 237s bolt.service is a disabled or a static unit not running, not starting it. 237s Setting up s390-tools-data (2.31.0-0ubuntu3) ... 237s Setting up libllvm18:s390x (1:18.1.2-1ubuntu2) ... 237s Setting up gnupg-utils (2.4.4-2ubuntu15) ... 237s Setting up initramfs-tools-bin (0.142ubuntu23) ... 237s Setting up libctf0:s390x (2.42-4ubuntu1) ... 237s Setting up libjpeg8:s390x (8c-2ubuntu11) ... 237s Setting up python3.11-minimal (3.11.8-1build4) ... 238s Setting up libclang1-18 (1:18.1.2-1ubuntu2) ... 238s Setting up manpages-dev (6.05.01-1) ... 238s Setting up linux-modules-extra-6.8.0-20-generic (6.8.0-20.20) ... 238s Setting up apt-utils (2.7.14) ... 238s Setting up binutils-s390x-linux-gnu (2.42-4ubuntu1) ... 238s Setting up gpg-agent (2.4.4-2ubuntu15) ... 239s Setting up libpython3.12-stdlib:s390x (3.12.2-4build3) ... 239s Setting up libblockdev-mdraid3:s390x (3.1.0-1build1) ... 239s Setting up wget (1.21.4-1ubuntu2) ... 239s Setting up linux-image-6.8.0-20-generic (6.8.0-20.20) ... 239s I: /boot/vmlinuz is now a symlink to vmlinuz-6.8.0-20-generic 239s I: /boot/initrd.img is now a symlink to initrd.img-6.8.0-20-generic 239s Setting up libblockdev-swap3:s390x (3.1.0-1build1) ... 239s Setting up plymouth (24.004.60-1ubuntu6) ... 239s update-initramfs: Generating /boot/initrd.img-6.8.0-11-generic 239s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 244s Not invoking zipl: initrd doesn't exist yet 244s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 244s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 244s Setting up fontconfig-config (2.15.0-1.1ubuntu1) ... 244s Setting up libxmlb2:s390x (0.3.15-1build1) ... 244s Setting up btrfs-progs (6.6.3-1.1build1) ... 244s Setting up libpython3.11-stdlib:s390x (3.11.8-1build4) ... 244s Setting up python3.12 (3.12.2-4build3) ... 245s Setting up libblockdev-loop3:s390x (3.1.0-1build1) ... 245s Setting up gpgsm (2.4.4-2ubuntu15) ... 245s Setting up inetutils-telnet (2:2.5-3ubuntu3) ... 245s Setting up e2fsprogs (1.47.0-2.4~exp1ubuntu2) ... 245s update-initramfs: deferring update (trigger activated) 246s e2scrub_all.service is a disabled or a static unit not running, not starting it. 246s Setting up libparted2t64:s390x (3.6-3.1build2) ... 246s Setting up linux-headers-generic (6.8.0-20.20+1) ... 246s Setting up dbus-daemon (1.14.10-4ubuntu2) ... 246s Setting up binutils (2.42-4ubuntu1) ... 246s Setting up libmbim-proxy (1.31.2-0ubuntu2) ... 246s Setting up vim-tiny (2:9.1.0016-1ubuntu6) ... 246s Setting up libnetplan1:s390x (1.0-1) ... 246s Setting up man-db (2.12.0-3build4) ... 246s Updating database of manual pages ... 248s man-db.service is a disabled or a static unit not running, not starting it. 248s Setting up libblockdev3:s390x (3.1.0-1build1) ... 248s Setting up fdisk (2.39.3-9ubuntu2) ... 248s Setting up multipath-tools (0.9.4-5ubuntu6) ... 249s Setting up libjson-glib-1.0-0:s390x (1.8.0-2build1) ... 249s Setting up libblockdev-part3:s390x (3.1.0-1build1) ... 249s Setting up libsasl2-modules-db:s390x (2.1.28+dfsg1-5ubuntu1) ... 249s Setting up hwdata (0.379-1) ... 249s Setting up libftdi1-2:s390x (1.5-6build4) ... 249s Setting up perl (5.38.2-3.2) ... 249s Setting up plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) ... 249s update-initramfs: deferring update (trigger activated) 249s Setting up libfreetype6:s390x (2.13.2+dfsg-1build2) ... 249s Setting up gir1.2-girepository-2.0:s390x (1.79.1-1ubuntu6) ... 249s Setting up dbus (1.14.10-4ubuntu2) ... 249s A reboot is required to replace the running dbus-daemon. 249s Please reboot the system when convenient. 249s Setting up shared-mime-info (2.4-1build1) ... 250s Setting up libgssapi-krb5-2:s390x (1.20.1-6ubuntu1) ... 250s Setting up ftp (20230507-2build1) ... 250s Setting up keyboxd (2.4.4-2ubuntu15) ... 250s Setting up libdpkg-perl (1.22.6ubuntu5) ... 250s Setting up libsasl2-2:s390x (2.1.28+dfsg1-5ubuntu1) ... 250s Setting up libssh-4:s390x (0.10.6-2build1) ... 250s Setting up ieee-data (20220827.1) ... 250s Setting up libtiff6:s390x (4.5.1+git230720-4ubuntu1) ... 250s Setting up libpam-systemd:s390x (255.4-1ubuntu5) ... 250s Setting up libpolkit-agent-1-0:s390x (124-1ubuntu1) ... 250s Setting up libc6-dev:s390x (2.39-0ubuntu6) ... 250s Setting up libgpgme11t64:s390x (1.18.0-4.1ubuntu3) ... 250s Setting up libfontconfig1:s390x (2.15.0-1.1ubuntu1) ... 250s Setting up linux-image-virtual (6.8.0-20.20+1) ... 250s Setting up netplan-generator (1.0-1) ... 250s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 250s Setting up initramfs-tools-core (0.142ubuntu23) ... 250s Setting up libclang-cpp18 (1:18.1.2-1ubuntu2) ... 250s Setting up libbpfcc:s390x (0.29.1+ds-1ubuntu4) ... 250s Setting up linux-tools-common (6.8.0-20.20) ... 250s Setting up libarchive13t64:s390x (3.7.2-1.1ubuntu2) ... 250s Setting up libldap2:s390x (2.6.7+dfsg-1~exp1ubuntu6) ... 250s Setting up libpython3-stdlib:s390x (3.12.2-0ubuntu1) ... 250s Setting up systemd-resolved (255.4-1ubuntu5) ... 250s Setting up python3.11 (3.11.8-1build4) ... 251s Setting up linux-image-generic (6.8.0-20.20+1) ... 251s Setting up telnet (0.17+2.5-3ubuntu3) ... 251s Setting up initramfs-tools (0.142ubuntu23) ... 251s update-initramfs: deferring update (trigger activated) 251s Setting up linux-headers-virtual (6.8.0-20.20+1) ... 251s Setting up linux-generic (6.8.0-20.20+1) ... 251s Setting up libcurl4t64:s390x (8.5.0-2ubuntu8) ... 251s Setting up bpftrace (0.20.2-1ubuntu1) ... 251s Setting up bind9-libs:s390x (1:9.18.24-0ubuntu3) ... 251s Setting up libtirpc3t64:s390x (1.3.4+ds-1.1) ... 251s Setting up e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) ... 251s Setting up iproute2 (6.1.0-1ubuntu5) ... 252s Setting up openssh-client (1:9.6p1-3ubuntu11) ... 252s Setting up libgusb2:s390x (0.4.8-1build1) ... 252s Setting up libcurl3t64-gnutls:s390x (8.5.0-2ubuntu8) ... 252s Setting up parted (3.6-3.1build2) ... 252s Setting up libqmi-glib5:s390x (1.35.2-0ubuntu1) ... 252s Setting up linux-tools-6.8.0-20 (6.8.0-20.20) ... 252s Setting up python3 (3.12.2-0ubuntu1) ... 252s Setting up libjcat1:s390x (0.2.0-2build2) ... 252s Setting up dpkg-dev (1.22.6ubuntu5) ... 252s Setting up linux-virtual (6.8.0-20.20+1) ... 252s Setting up dirmngr (2.4.4-2ubuntu15) ... 252s Setting up dbus-user-session (1.14.10-4ubuntu2) ... 252s Setting up linux-tools-6.8.0-20-generic (6.8.0-20.20) ... 252s Setting up python3-cryptography (41.0.7-4build2) ... 252s Setting up python3-gi (3.47.0-3build1) ... 252s Setting up libgd3:s390x (2.3.3-9ubuntu3) ... 252s Setting up python3-typing-extensions (4.10.0-1) ... 253s Setting up lsof (4.95.0-1build2) ... 253s Setting up python3-pyrsistent:s390x (0.20.0-1build1) ... 253s Setting up python3-netaddr (0.8.0-2ubuntu1) ... 253s Setting up libnsl2:s390x (1.3.0-3build2) ... 253s Setting up gnupg (2.4.4-2ubuntu15) ... 253s Setting up python3-netplan (1.0-1) ... 253s Setting up curl (8.5.0-2ubuntu8) ... 253s Setting up libvolume-key1:s390x (0.3.12-7build1) ... 253s Setting up bind9-host (1:9.18.24-0ubuntu3) ... 253s Setting up python3-lib2to3 (3.12.2-3ubuntu1.1) ... 253s Setting up python3-bpfcc (0.29.1+ds-1ubuntu4) ... 253s Setting up libc-devtools (2.39-0ubuntu6) ... 253s Setting up python3-pkg-resources (68.1.2-2ubuntu1) ... 254s Setting up python3-distutils (3.12.2-3ubuntu1.1) ... 254s python3.12: can't get files for byte-compilation 254s Setting up openssh-sftp-server (1:9.6p1-3ubuntu11) ... 254s Setting up python3-dbus (1.3.2-5build2) ... 254s Setting up python3-setuptools (68.1.2-2ubuntu1) ... 255s Setting up gpg-wks-client (2.4.4-2ubuntu15) ... 255s Setting up openssh-server (1:9.6p1-3ubuntu11) ... 255s Replacing config file /etc/ssh/sshd_config with new version 256s Created symlink /etc/systemd/system/ssh.service.requires/ssh.socket → /usr/lib/systemd/system/ssh.socket. 257s Setting up libblockdev-crypto3:s390x (3.1.0-1build1) ... 257s Setting up python3-gdbm:s390x (3.12.2-3ubuntu1.1) ... 257s Setting up python3-apt (2.7.7) ... 258s Setting up libfwupd2:s390x (1.9.15-2) ... 258s Setting up python3-yaml (6.0.1-2build1) ... 258s Setting up libqmi-proxy (1.35.2-0ubuntu1) ... 258s Setting up netplan.io (1.0-1) ... 258s Setting up bpfcc-tools (0.29.1+ds-1ubuntu4) ... 258s Setting up bind9-dnsutils (1:9.18.24-0ubuntu3) ... 258s Setting up ubuntu-pro-client (31.2.2) ... 260s Setting up fwupd (1.9.15-2) ... 260s fwupd-offline-update.service is a disabled or a static unit not running, not starting it. 260s fwupd-refresh.service is a disabled or a static unit not running, not starting it. 260s Setting up ubuntu-pro-client-l10n (31.2.2) ... 260s Setting up udisks2 (2.10.1-6) ... 261s Processing triggers for ufw (0.36.2-5) ... 261s Processing triggers for debianutils (5.17) ... 261s Processing triggers for install-info (7.1-3build1) ... 261s Processing triggers for libc-bin (2.39-0ubuntu6) ... 261s Processing triggers for linux-image-6.8.0-20-generic (6.8.0-20.20) ... 261s /etc/kernel/postinst.d/initramfs-tools: 261s update-initramfs: Generating /boot/initrd.img-6.8.0-20-generic 261s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 264s Using config file '/etc/zipl.conf' 264s Building bootmap in '/boot' 264s Adding IPL section 'ubuntu' (default) 264s Preparing boot device for LD-IPL: vda (0000). 264s Done. 264s /etc/kernel/postinst.d/zz-zipl: 264s Using config file '/etc/zipl.conf' 264s Building bootmap in '/boot' 264s Adding IPL section 'ubuntu' (default) 264s Preparing boot device for LD-IPL: vda (0000). 264s Done. 264s Processing triggers for initramfs-tools (0.142ubuntu23) ... 264s update-initramfs: Generating /boot/initrd.img-6.8.0-20-generic 264s W: No lz4 in /usr/bin:/sbin:/bin, using gzip 268s Using config file '/etc/zipl.conf' 268s Building bootmap in '/boot' 268s Adding IPL section 'ubuntu' (default) 268s Preparing boot device for LD-IPL: vda (0000). 268s Done. 270s Reading package lists... 270s Building dependency tree... 270s Reading state information... 270s The following packages will be REMOVED: 270s libaio1* libnetplan0* python3-distutils* python3-lib2to3* 270s 0 upgraded, 0 newly installed, 4 to remove and 1 not upgraded. 270s After this operation, 1445 kB disk space will be freed. 270s (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 ... 81786 files and directories currently installed.) 270s Removing libaio1:s390x (0.3.113-5) ... 270s Removing libnetplan0:s390x (0.107.1-3) ... 270s Removing python3-distutils (3.12.2-3ubuntu1.1) ... 270s Removing python3-lib2to3 (3.12.2-3ubuntu1.1) ... 270s Processing triggers for libc-bin (2.39-0ubuntu6) ... 271s autopkgtest [23:29:56]: rebooting testbed after setup commands that affected boot 299s autopkgtest [23:30:24]: testbed running kernel: Linux 6.8.0-20-generic #20-Ubuntu SMP Mon Mar 18 10:49:25 UTC 2024 301s autopkgtest [23:30:26]: @@@@@@@@@@@@@@@@@@@@ apt-source r-cran-unitizer 303s Get:1 http://ftpmaster.internal/ubuntu noble/universe r-cran-unitizer 1.4.20-1 (dsc) [2167 B] 303s Get:2 http://ftpmaster.internal/ubuntu noble/universe r-cran-unitizer 1.4.20-1 (tar) [609 kB] 303s Get:3 http://ftpmaster.internal/ubuntu noble/universe r-cran-unitizer 1.4.20-1 (diff) [3464 B] 303s gpgv: Signature made Fri Oct 27 13:07:12 2023 UTC 303s gpgv: using RSA key F1F007320A035541F0A663CA578A0494D1C646D1 303s gpgv: issuer "tille@debian.org" 303s gpgv: Can't check signature: No public key 303s dpkg-source: warning: cannot verify inline signature for ./r-cran-unitizer_1.4.20-1.dsc: no acceptable signature found 304s autopkgtest [23:30:29]: testing package r-cran-unitizer version 1.4.20-1 304s autopkgtest [23:30:29]: build not needed 306s autopkgtest [23:30:31]: test run-unit-test: preparing testbed 310s Reading package lists... 310s Building dependency tree... 310s Reading state information... 310s Starting pkgProblemResolver with broken count: 0 310s Starting 2 pkgProblemResolver with broken count: 0 310s Done 311s The following additional packages will be installed: 311s fontconfig fonts-font-awesome fonts-glyphicons-halflings fonts-mathjax 311s javascript-common libblas3 libcairo2 libdatrie1 libgfortran5 libgomp1 311s libgraphite2-3 libharfbuzz0b libice6 libjs-bootstrap libjs-bootstrap4 311s libjs-d3 libjs-es5-shim libjs-highlight.js libjs-jquery 311s libjs-jquery-datatables libjs-jquery-selectize.js libjs-jquery-ui libjs-json 311s libjs-mathjax libjs-microplugin.js libjs-modernizr libjs-popper.js 311s libjs-prettify libjs-sifter.js libjs-twitter-bootstrap-datepicker liblapack3 311s liblua5.4-0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 311s libpaper-utils libpaper1 libpixman-1-0 libsm6 libtcl8.6 libthai-data 311s libthai0 libtk8.6 libxcb-render0 libxcb-shm0 libxft2 libxrender1 libxss1 311s libxt6t64 littler node-bootstrap-sass node-html5shiv node-normalize.css 311s pandoc pandoc-data r-base-core r-cran-base64enc r-cran-bslib r-cran-cachem 311s r-cran-cli r-cran-commonmark r-cran-crayon r-cran-diffobj r-cran-digest 311s r-cran-ellipsis r-cran-evaluate r-cran-fastmap r-cran-fontawesome r-cran-fs 311s r-cran-glue r-cran-highr r-cran-htmltools r-cran-httpuv r-cran-jquerylib 311s r-cran-jsonlite r-cran-knitr r-cran-later r-cran-lifecycle r-cran-littler 311s r-cran-magrittr r-cran-memoise r-cran-mime r-cran-pkgkitten r-cran-promises 311s r-cran-r6 r-cran-rappdirs r-cran-rcpp r-cran-rlang r-cran-rmarkdown 311s r-cran-sass r-cran-shiny r-cran-sourcetools r-cran-stringi r-cran-stringr 311s r-cran-tinytex r-cran-unitizer r-cran-vctrs r-cran-withr r-cran-xfun 311s r-cran-xtable r-cran-yaml unzip x11-common xdg-utils zip 311s Suggested packages: 311s apache2 | lighttpd | httpd libjs-jquery-ui-docs fonts-mathjax-extras 311s fonts-stix libjs-mathjax-doc tcl8.6 tk8.6 nodejs texlive-latex-recommended 311s texlive-xetex texlive-luatex pandoc-citeproc texlive-latex-extra context 311s wkhtmltopdf librsvg2-bin groff ghc php python ruby libjs-katex 311s citation-style-language-styles elpa-ess r-doc-info | r-doc-pdf r-mathlib 311s r-base-html r-cran-rstudioapi r-cran-markdown r-cran-testthat r-cran-getopt 311s r-cran-covr r-cran-httr r-cran-roxygen2 r-cran-inline r-cran-plm r-cran-zoo 311s r-cran-survival 311s Recommended packages: 311s node-jquery r-recommended r-base-dev r-doc-html r-cran-curl r-cran-ggplot2 311s r-cran-testthat r-cran-thematic r-cran-callr r-cran-covr r-cran-htmlwidgets 311s r-cran-mockery r-cran-processx r-cran-ps r-cran-rprojroot r-cran-rstudioapi 311s r-cran-tibble r-cran-whoami r-cran-xml2 r-cran-lattice r-cran-dplyr 311s r-cran-rsvg r-cran-pillar r-cran-spelling r-cran-dbi r-cran-rsqlite 311s r-cran-waldo r-cran-testit r-cran-cairo r-cran-markdown r-cran-ragg 311s r-cran-httr r-cran-r.rsp r-cran-sf r-cran-codetools r-cran-formatr 311s r-cran-gridsvg r-cran-jpeg r-cran-magick r-cran-png r-cran-reticulate 311s r-cran-rgl r-cran-tikzdevice r-cran-webshot r-cran-svglite node-highlight.js 311s r-cran-lintr r-cran-tidyverse r-cran-future r-cran-purrr r-cran-usethis 311s r-cran-dygraphs r-cran-rsconnect r-cran-downlit r-cran-bit64 r-cran-generics 311s r-cran-pkgdown r-cran-zeallot r-cran-remotes r-cran-renv r-cran-runit 311s libfile-mimeinfo-perl libnet-dbus-perl libx11-protocol-perl x11-utils 311s x11-xserver-utils 311s The following NEW packages will be installed: 311s autopkgtest-satdep fontconfig fonts-font-awesome fonts-glyphicons-halflings 311s fonts-mathjax javascript-common libblas3 libcairo2 libdatrie1 libgfortran5 311s libgomp1 libgraphite2-3 libharfbuzz0b libice6 libjs-bootstrap 311s libjs-bootstrap4 libjs-d3 libjs-es5-shim libjs-highlight.js libjs-jquery 311s libjs-jquery-datatables libjs-jquery-selectize.js libjs-jquery-ui libjs-json 311s libjs-mathjax libjs-microplugin.js libjs-modernizr libjs-popper.js 311s libjs-prettify libjs-sifter.js libjs-twitter-bootstrap-datepicker liblapack3 311s liblua5.4-0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 311s libpaper-utils libpaper1 libpixman-1-0 libsm6 libtcl8.6 libthai-data 311s libthai0 libtk8.6 libxcb-render0 libxcb-shm0 libxft2 libxrender1 libxss1 311s libxt6t64 littler node-bootstrap-sass node-html5shiv node-normalize.css 311s pandoc pandoc-data r-base-core r-cran-base64enc r-cran-bslib r-cran-cachem 311s r-cran-cli r-cran-commonmark r-cran-crayon r-cran-diffobj r-cran-digest 311s r-cran-ellipsis r-cran-evaluate r-cran-fastmap r-cran-fontawesome r-cran-fs 311s r-cran-glue r-cran-highr r-cran-htmltools r-cran-httpuv r-cran-jquerylib 311s r-cran-jsonlite r-cran-knitr r-cran-later r-cran-lifecycle r-cran-littler 311s r-cran-magrittr r-cran-memoise r-cran-mime r-cran-pkgkitten r-cran-promises 311s r-cran-r6 r-cran-rappdirs r-cran-rcpp r-cran-rlang r-cran-rmarkdown 311s r-cran-sass r-cran-shiny r-cran-sourcetools r-cran-stringi r-cran-stringr 311s r-cran-tinytex r-cran-unitizer r-cran-vctrs r-cran-withr r-cran-xfun 311s r-cran-xtable r-cran-yaml unzip x11-common xdg-utils zip 311s 0 upgraded, 106 newly installed, 0 to remove and 1 not upgraded. 311s Need to get 117 MB/117 MB of archives. 311s After this operation, 512 MB of additional disk space will be used. 311s Get:1 /tmp/autopkgtest.yRHocd/1-autopkgtest-satdep.deb autopkgtest-satdep s390x 0 [724 B] 311s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main s390x fontconfig s390x 2.15.0-1.1ubuntu1 [191 kB] 311s Get:3 http://ftpmaster.internal/ubuntu noble/main s390x fonts-font-awesome all 5.0.10+really4.7.0~dfsg-4.1 [516 kB] 312s Get:4 http://ftpmaster.internal/ubuntu noble/universe s390x fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 312s Get:5 http://ftpmaster.internal/ubuntu noble/main s390x fonts-mathjax all 2.7.9+dfsg-1 [2208 kB] 313s Get:6 http://ftpmaster.internal/ubuntu noble/main s390x javascript-common all 11+nmu1 [5936 B] 313s Get:7 http://ftpmaster.internal/ubuntu noble/main s390x libblas3 s390x 3.12.0-3 [245 kB] 313s Get:8 http://ftpmaster.internal/ubuntu noble/main s390x libpixman-1-0 s390x 0.42.2-1 [173 kB] 313s Get:9 http://ftpmaster.internal/ubuntu noble/main s390x libxcb-render0 s390x 1.15-1 [17.0 kB] 313s Get:10 http://ftpmaster.internal/ubuntu noble/main s390x libxcb-shm0 s390x 1.15-1 [5782 B] 313s Get:11 http://ftpmaster.internal/ubuntu noble/main s390x libxrender1 s390x 1:0.9.10-1.1 [19.4 kB] 313s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcairo2 s390x 1.18.0-1ubuntu1 [589 kB] 313s Get:13 http://ftpmaster.internal/ubuntu noble/main s390x libdatrie1 s390x 0.2.13-3 [22.6 kB] 313s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgfortran5 s390x 14-20240315-1ubuntu1 [600 kB] 314s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgomp1 s390x 14-20240315-1ubuntu1 [151 kB] 314s Get:16 http://ftpmaster.internal/ubuntu noble/main s390x libgraphite2-3 s390x 1.3.14-2 [90.4 kB] 314s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libharfbuzz0b s390x 8.3.0-2build1 [515 kB] 314s Get:18 http://ftpmaster.internal/ubuntu noble/main s390x x11-common all 1:7.7+23ubuntu2 [23.4 kB] 314s Get:19 http://ftpmaster.internal/ubuntu noble/main s390x libice6 s390x 2:1.0.10-1build2 [40.8 kB] 314s Get:20 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 314s Get:21 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-popper.js all 1.16.1+ds-6 [54.1 kB] 314s Get:22 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-bootstrap4 all 4.6.1+dfsg1-4 [537 kB] 314s Get:23 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-d3 all 3.5.17-4 [132 kB] 314s Get:24 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-es5-shim all 4.6.7-2 [39.8 kB] 314s Get:25 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-highlight.js all 9.18.5+dfsg1-2 [385 kB] 314s Get:26 http://ftpmaster.internal/ubuntu noble/main s390x libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 314s Get:27 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-jquery-datatables all 1.11.5+dfsg-2 [146 kB] 314s Get:28 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-sifter.js all 0.6.0+dfsg-3 [12.6 kB] 314s Get:29 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-microplugin.js all 0.0.3+dfsg-1.1 [3712 B] 314s Get:30 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-jquery-selectize.js all 0.12.6+dfsg-1.1 [51.0 kB] 314s Get:31 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-jquery-ui all 1.13.2+dfsg-1 [252 kB] 314s Get:32 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-json all 0~20221030+~1.0.8-1 [20.6 kB] 314s Get:33 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-prettify all 2015.12.04+dfsg-1.1 [39.3 kB] 314s Get:34 http://ftpmaster.internal/ubuntu noble/main s390x liblapack3 s390x 3.12.0-3 [2979 kB] 315s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main s390x liblua5.4-0 s390x 5.4.6-3build1 [179 kB] 315s Get:36 http://ftpmaster.internal/ubuntu noble/main s390x libthai-data all 0.1.29-2 [158 kB] 315s Get:37 http://ftpmaster.internal/ubuntu noble/main s390x libthai0 s390x 0.1.29-2 [20.6 kB] 315s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpango-1.0-0 s390x 1.52.1+ds-1 [242 kB] 315s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpangoft2-1.0-0 s390x 1.52.1+ds-1 [44.2 kB] 315s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpangocairo-1.0-0 s390x 1.52.1+ds-1 [28.7 kB] 315s Get:41 http://ftpmaster.internal/ubuntu noble/main s390x libpaper1 s390x 1.1.29 [13.3 kB] 315s Get:42 http://ftpmaster.internal/ubuntu noble/main s390x libpaper-utils s390x 1.1.29 [8452 B] 315s Get:43 http://ftpmaster.internal/ubuntu noble/main s390x libsm6 s390x 2:1.2.3-1build2 [16.9 kB] 315s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libtcl8.6 s390x 8.6.14+dfsg-1 [1037 kB] 315s Get:45 http://ftpmaster.internal/ubuntu noble/main s390x libxft2 s390x 2.3.6-1 [44.3 kB] 315s Get:46 http://ftpmaster.internal/ubuntu noble/main s390x libxss1 s390x 1:1.2.3-1build2 [8192 B] 315s Get:47 http://ftpmaster.internal/ubuntu noble/main s390x libtk8.6 s390x 8.6.14-1 [833 kB] 315s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libxt6t64 s390x 1:1.2.1-1.2 [184 kB] 315s Get:49 http://ftpmaster.internal/ubuntu noble/main s390x zip s390x 3.0-13 [175 kB] 315s Get:50 http://ftpmaster.internal/ubuntu noble/main s390x unzip s390x 6.0-28ubuntu3 [180 kB] 315s Get:51 http://ftpmaster.internal/ubuntu noble/main s390x xdg-utils all 1.1.3-4.1ubuntu3 [62.0 kB] 315s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-base-core s390x 4.3.3-2build1 [27.1 MB] 318s Get:53 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-littler s390x 0.3.19-1 [93.0 kB] 318s Get:54 http://ftpmaster.internal/ubuntu noble/universe s390x littler all 0.3.19-1 [2472 B] 318s Get:55 http://ftpmaster.internal/ubuntu noble/universe s390x node-bootstrap-sass all 3.4.3-2 [187 kB] 318s Get:56 http://ftpmaster.internal/ubuntu noble/universe s390x node-html5shiv all 3.7.3+dfsg-5 [13.5 kB] 318s Get:57 http://ftpmaster.internal/ubuntu noble/universe s390x node-normalize.css all 8.0.1-5 [10.8 kB] 318s Get:58 http://ftpmaster.internal/ubuntu noble/universe s390x pandoc-data all 3.1.3-1 [92.4 kB] 318s Get:59 http://ftpmaster.internal/ubuntu noble/universe s390x pandoc s390x 3.1.3+ds-2 [41.5 MB] 322s Get:60 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-base64enc s390x 0.1-3-3 [28.0 kB] 322s Get:61 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-rlang s390x 1.1.3-1 [1672 kB] 322s Get:62 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-fastmap s390x 1.1.1-1 [69.1 kB] 322s Get:63 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-cachem s390x 1.0.8-1 [72.1 kB] 323s Get:64 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-digest s390x 0.6.34-1 [187 kB] 323s Get:65 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-ellipsis s390x 0.3.2-2 [35.4 kB] 323s Get:66 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-htmltools s390x 0.5.7-1 [368 kB] 323s Get:67 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-jquerylib all 0.1.4+dfsg-4 [13.5 kB] 323s Get:68 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-jsonlite s390x 1.8.8+dfsg-1 [444 kB] 323s Get:69 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-cli s390x 3.6.2-1 [1382 kB] 323s Get:70 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-glue s390x 1.7.0-1 [154 kB] 323s Get:71 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 323s Get:72 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-memoise all 2.0.1-1 [53.9 kB] 323s Get:73 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-mime s390x 0.12-1 [35.7 kB] 323s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-cran-fs s390x 1.6.3+dfsg-1build1 [229 kB] 323s Get:75 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-r6 all 2.5.1-1 [99.0 kB] 323s Get:76 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-rappdirs s390x 0.3.3-1 [47.5 kB] 323s Get:77 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-sass s390x 0.4.8+dfsg-1 [1025 kB] 323s Get:78 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-bslib all 0.6.1+dfsg-1 [5138 kB] 324s Get:79 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-commonmark s390x 1.9.1-1 [142 kB] 324s Get:80 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-crayon all 1.5.2-1 [164 kB] 324s Get:81 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-diffobj s390x 0.3.5-1 [1115 kB] 324s Get:82 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-evaluate all 0.23-1 [90.2 kB] 324s Get:83 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-fontawesome all 0.5.2-1 [1300 kB] 324s Get:84 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-xfun s390x 0.41+dfsg-1 [415 kB] 324s Get:85 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-highr all 0.10+dfsg-1 [38.3 kB] 324s Get:86 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-pkgkitten all 0.2.3-1 [25.1 kB] 324s Get:87 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-rcpp s390x 1.0.12-1 [1985 kB] 324s Get:88 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-later s390x 1.3.2+dfsg-1 [126 kB] 324s Get:89 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-magrittr s390x 2.0.3-1 [154 kB] 324s Get:90 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-promises s390x 1.2.1+dfsg-1 [285 kB] 324s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-cran-httpuv s390x 1.6.14+dfsg-1build1 [518 kB] 324s Get:92 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-yaml s390x 2.3.8-1 [127 kB] 324s Get:93 http://ftpmaster.internal/ubuntu noble/main s390x libjs-mathjax all 2.7.9+dfsg-1 [5665 kB] 325s Get:94 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-knitr all 1.45+dfsg-1 [917 kB] 325s Get:95 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-stringi s390x 1.8.3-1 [885 kB] 326s Get:96 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-vctrs s390x 0.6.5-1 [1448 kB] 326s Get:97 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-stringr all 1.5.1-1 [290 kB] 326s Get:98 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-tinytex all 0.49-1 [141 kB] 326s Get:99 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-modernizr all 2.6.2+ds1-5 [48.3 kB] 326s Get:100 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-xtable all 1:1.8-4-2 [689 kB] 326s Get:101 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-sourcetools s390x 0.1.7-1-1 [47.1 kB] 326s Get:102 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-cran-withr all 3.0.0+dfsg-1 [228 kB] 326s Get:103 http://ftpmaster.internal/ubuntu noble/universe s390x libjs-twitter-bootstrap-datepicker all 1.3.1+dfsg1-4.1 [28.5 kB] 327s Get:104 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-shiny all 1.8.0+dfsg-1 [2762 kB] 329s Get:105 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-rmarkdown all 2.25+dfsg-3 [1481 kB] 329s Get:106 http://ftpmaster.internal/ubuntu noble/universe s390x r-cran-unitizer all 1.4.20-1 [1419 kB] 330s Preconfiguring packages ... 330s Fetched 117 MB in 19s (6199 kB/s) 330s Selecting previously unselected package fontconfig. 330s (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 ... 81562 files and directories currently installed.) 330s Preparing to unpack .../000-fontconfig_2.15.0-1.1ubuntu1_s390x.deb ... 330s Unpacking fontconfig (2.15.0-1.1ubuntu1) ... 330s Selecting previously unselected package fonts-font-awesome. 330s Preparing to unpack .../001-fonts-font-awesome_5.0.10+really4.7.0~dfsg-4.1_all.deb ... 330s Unpacking fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... 330s Selecting previously unselected package fonts-glyphicons-halflings. 330s Preparing to unpack .../002-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 330s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 330s Selecting previously unselected package fonts-mathjax. 330s Preparing to unpack .../003-fonts-mathjax_2.7.9+dfsg-1_all.deb ... 330s Unpacking fonts-mathjax (2.7.9+dfsg-1) ... 330s Selecting previously unselected package javascript-common. 330s Preparing to unpack .../004-javascript-common_11+nmu1_all.deb ... 330s Unpacking javascript-common (11+nmu1) ... 331s Selecting previously unselected package libblas3:s390x. 331s Preparing to unpack .../005-libblas3_3.12.0-3_s390x.deb ... 331s Unpacking libblas3:s390x (3.12.0-3) ... 331s Selecting previously unselected package libpixman-1-0:s390x. 331s Preparing to unpack .../006-libpixman-1-0_0.42.2-1_s390x.deb ... 331s Unpacking libpixman-1-0:s390x (0.42.2-1) ... 331s Selecting previously unselected package libxcb-render0:s390x. 331s Preparing to unpack .../007-libxcb-render0_1.15-1_s390x.deb ... 331s Unpacking libxcb-render0:s390x (1.15-1) ... 331s Selecting previously unselected package libxcb-shm0:s390x. 331s Preparing to unpack .../008-libxcb-shm0_1.15-1_s390x.deb ... 331s Unpacking libxcb-shm0:s390x (1.15-1) ... 331s Selecting previously unselected package libxrender1:s390x. 331s Preparing to unpack .../009-libxrender1_1%3a0.9.10-1.1_s390x.deb ... 331s Unpacking libxrender1:s390x (1:0.9.10-1.1) ... 331s Selecting previously unselected package libcairo2:s390x. 331s Preparing to unpack .../010-libcairo2_1.18.0-1ubuntu1_s390x.deb ... 331s Unpacking libcairo2:s390x (1.18.0-1ubuntu1) ... 331s Selecting previously unselected package libdatrie1:s390x. 331s Preparing to unpack .../011-libdatrie1_0.2.13-3_s390x.deb ... 331s Unpacking libdatrie1:s390x (0.2.13-3) ... 331s Selecting previously unselected package libgfortran5:s390x. 331s Preparing to unpack .../012-libgfortran5_14-20240315-1ubuntu1_s390x.deb ... 331s Unpacking libgfortran5:s390x (14-20240315-1ubuntu1) ... 331s Selecting previously unselected package libgomp1:s390x. 331s Preparing to unpack .../013-libgomp1_14-20240315-1ubuntu1_s390x.deb ... 331s Unpacking libgomp1:s390x (14-20240315-1ubuntu1) ... 331s Selecting previously unselected package libgraphite2-3:s390x. 331s Preparing to unpack .../014-libgraphite2-3_1.3.14-2_s390x.deb ... 331s Unpacking libgraphite2-3:s390x (1.3.14-2) ... 331s Selecting previously unselected package libharfbuzz0b:s390x. 331s Preparing to unpack .../015-libharfbuzz0b_8.3.0-2build1_s390x.deb ... 331s Unpacking libharfbuzz0b:s390x (8.3.0-2build1) ... 331s Selecting previously unselected package x11-common. 331s Preparing to unpack .../016-x11-common_1%3a7.7+23ubuntu2_all.deb ... 331s Unpacking x11-common (1:7.7+23ubuntu2) ... 331s Selecting previously unselected package libice6:s390x. 331s Preparing to unpack .../017-libice6_2%3a1.0.10-1build2_s390x.deb ... 331s Unpacking libice6:s390x (2:1.0.10-1build2) ... 331s Selecting previously unselected package libjs-bootstrap. 331s Preparing to unpack .../018-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 331s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 331s Selecting previously unselected package libjs-popper.js. 331s Preparing to unpack .../019-libjs-popper.js_1.16.1+ds-6_all.deb ... 331s Unpacking libjs-popper.js (1.16.1+ds-6) ... 331s Selecting previously unselected package libjs-bootstrap4. 331s Preparing to unpack .../020-libjs-bootstrap4_4.6.1+dfsg1-4_all.deb ... 331s Unpacking libjs-bootstrap4 (4.6.1+dfsg1-4) ... 331s Selecting previously unselected package libjs-d3. 331s Preparing to unpack .../021-libjs-d3_3.5.17-4_all.deb ... 331s Unpacking libjs-d3 (3.5.17-4) ... 331s Selecting previously unselected package libjs-es5-shim. 331s Preparing to unpack .../022-libjs-es5-shim_4.6.7-2_all.deb ... 331s Unpacking libjs-es5-shim (4.6.7-2) ... 331s Selecting previously unselected package libjs-highlight.js. 331s Preparing to unpack .../023-libjs-highlight.js_9.18.5+dfsg1-2_all.deb ... 331s Unpacking libjs-highlight.js (9.18.5+dfsg1-2) ... 331s Selecting previously unselected package libjs-jquery. 331s Preparing to unpack .../024-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 331s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 331s Selecting previously unselected package libjs-jquery-datatables. 331s Preparing to unpack .../025-libjs-jquery-datatables_1.11.5+dfsg-2_all.deb ... 331s Unpacking libjs-jquery-datatables (1.11.5+dfsg-2) ... 331s Selecting previously unselected package libjs-sifter.js. 331s Preparing to unpack .../026-libjs-sifter.js_0.6.0+dfsg-3_all.deb ... 331s Unpacking libjs-sifter.js (0.6.0+dfsg-3) ... 331s Selecting previously unselected package libjs-microplugin.js. 331s Preparing to unpack .../027-libjs-microplugin.js_0.0.3+dfsg-1.1_all.deb ... 331s Unpacking libjs-microplugin.js (0.0.3+dfsg-1.1) ... 331s Selecting previously unselected package libjs-jquery-selectize.js. 331s Preparing to unpack .../028-libjs-jquery-selectize.js_0.12.6+dfsg-1.1_all.deb ... 331s Unpacking libjs-jquery-selectize.js (0.12.6+dfsg-1.1) ... 331s Selecting previously unselected package libjs-jquery-ui. 331s Preparing to unpack .../029-libjs-jquery-ui_1.13.2+dfsg-1_all.deb ... 331s Unpacking libjs-jquery-ui (1.13.2+dfsg-1) ... 331s Selecting previously unselected package libjs-json. 331s Preparing to unpack .../030-libjs-json_0~20221030+~1.0.8-1_all.deb ... 331s Unpacking libjs-json (0~20221030+~1.0.8-1) ... 331s Selecting previously unselected package libjs-prettify. 331s Preparing to unpack .../031-libjs-prettify_2015.12.04+dfsg-1.1_all.deb ... 331s Unpacking libjs-prettify (2015.12.04+dfsg-1.1) ... 331s Selecting previously unselected package liblapack3:s390x. 331s Preparing to unpack .../032-liblapack3_3.12.0-3_s390x.deb ... 331s Unpacking liblapack3:s390x (3.12.0-3) ... 331s Selecting previously unselected package liblua5.4-0:s390x. 331s Preparing to unpack .../033-liblua5.4-0_5.4.6-3build1_s390x.deb ... 331s Unpacking liblua5.4-0:s390x (5.4.6-3build1) ... 331s Selecting previously unselected package libthai-data. 331s Preparing to unpack .../034-libthai-data_0.1.29-2_all.deb ... 331s Unpacking libthai-data (0.1.29-2) ... 331s Selecting previously unselected package libthai0:s390x. 331s Preparing to unpack .../035-libthai0_0.1.29-2_s390x.deb ... 331s Unpacking libthai0:s390x (0.1.29-2) ... 331s Selecting previously unselected package libpango-1.0-0:s390x. 331s Preparing to unpack .../036-libpango-1.0-0_1.52.1+ds-1_s390x.deb ... 331s Unpacking libpango-1.0-0:s390x (1.52.1+ds-1) ... 331s Selecting previously unselected package libpangoft2-1.0-0:s390x. 331s Preparing to unpack .../037-libpangoft2-1.0-0_1.52.1+ds-1_s390x.deb ... 331s Unpacking libpangoft2-1.0-0:s390x (1.52.1+ds-1) ... 331s Selecting previously unselected package libpangocairo-1.0-0:s390x. 331s Preparing to unpack .../038-libpangocairo-1.0-0_1.52.1+ds-1_s390x.deb ... 331s Unpacking libpangocairo-1.0-0:s390x (1.52.1+ds-1) ... 331s Selecting previously unselected package libpaper1:s390x. 331s Preparing to unpack .../039-libpaper1_1.1.29_s390x.deb ... 331s Unpacking libpaper1:s390x (1.1.29) ... 331s Selecting previously unselected package libpaper-utils. 331s Preparing to unpack .../040-libpaper-utils_1.1.29_s390x.deb ... 331s Unpacking libpaper-utils (1.1.29) ... 331s Selecting previously unselected package libsm6:s390x. 331s Preparing to unpack .../041-libsm6_2%3a1.2.3-1build2_s390x.deb ... 331s Unpacking libsm6:s390x (2:1.2.3-1build2) ... 331s Selecting previously unselected package libtcl8.6:s390x. 331s Preparing to unpack .../042-libtcl8.6_8.6.14+dfsg-1_s390x.deb ... 331s Unpacking libtcl8.6:s390x (8.6.14+dfsg-1) ... 332s Selecting previously unselected package libxft2:s390x. 332s Preparing to unpack .../043-libxft2_2.3.6-1_s390x.deb ... 332s Unpacking libxft2:s390x (2.3.6-1) ... 332s Selecting previously unselected package libxss1:s390x. 332s Preparing to unpack .../044-libxss1_1%3a1.2.3-1build2_s390x.deb ... 332s Unpacking libxss1:s390x (1:1.2.3-1build2) ... 332s Selecting previously unselected package libtk8.6:s390x. 332s Preparing to unpack .../045-libtk8.6_8.6.14-1_s390x.deb ... 332s Unpacking libtk8.6:s390x (8.6.14-1) ... 332s Selecting previously unselected package libxt6t64:s390x. 332s Preparing to unpack .../046-libxt6t64_1%3a1.2.1-1.2_s390x.deb ... 332s Unpacking libxt6t64:s390x (1:1.2.1-1.2) ... 332s Selecting previously unselected package zip. 332s Preparing to unpack .../047-zip_3.0-13_s390x.deb ... 332s Unpacking zip (3.0-13) ... 332s Selecting previously unselected package unzip. 332s Preparing to unpack .../048-unzip_6.0-28ubuntu3_s390x.deb ... 332s Unpacking unzip (6.0-28ubuntu3) ... 332s Selecting previously unselected package xdg-utils. 332s Preparing to unpack .../049-xdg-utils_1.1.3-4.1ubuntu3_all.deb ... 332s Unpacking xdg-utils (1.1.3-4.1ubuntu3) ... 332s Selecting previously unselected package r-base-core. 332s Preparing to unpack .../050-r-base-core_4.3.3-2build1_s390x.deb ... 332s Unpacking r-base-core (4.3.3-2build1) ... 332s Selecting previously unselected package r-cran-littler. 332s Preparing to unpack .../051-r-cran-littler_0.3.19-1_s390x.deb ... 332s Unpacking r-cran-littler (0.3.19-1) ... 332s Selecting previously unselected package littler. 332s Preparing to unpack .../052-littler_0.3.19-1_all.deb ... 332s Unpacking littler (0.3.19-1) ... 332s Selecting previously unselected package node-bootstrap-sass. 332s Preparing to unpack .../053-node-bootstrap-sass_3.4.3-2_all.deb ... 332s Unpacking node-bootstrap-sass (3.4.3-2) ... 332s Selecting previously unselected package node-html5shiv. 332s Preparing to unpack .../054-node-html5shiv_3.7.3+dfsg-5_all.deb ... 332s Unpacking node-html5shiv (3.7.3+dfsg-5) ... 332s Selecting previously unselected package node-normalize.css. 332s Preparing to unpack .../055-node-normalize.css_8.0.1-5_all.deb ... 332s Unpacking node-normalize.css (8.0.1-5) ... 332s Selecting previously unselected package pandoc-data. 332s Preparing to unpack .../056-pandoc-data_3.1.3-1_all.deb ... 332s Unpacking pandoc-data (3.1.3-1) ... 332s Selecting previously unselected package pandoc. 332s Preparing to unpack .../057-pandoc_3.1.3+ds-2_s390x.deb ... 332s Unpacking pandoc (3.1.3+ds-2) ... 334s Selecting previously unselected package r-cran-base64enc. 334s Preparing to unpack .../058-r-cran-base64enc_0.1-3-3_s390x.deb ... 334s Unpacking r-cran-base64enc (0.1-3-3) ... 334s Selecting previously unselected package r-cran-rlang. 334s Preparing to unpack .../059-r-cran-rlang_1.1.3-1_s390x.deb ... 334s Unpacking r-cran-rlang (1.1.3-1) ... 334s Selecting previously unselected package r-cran-fastmap. 334s Preparing to unpack .../060-r-cran-fastmap_1.1.1-1_s390x.deb ... 334s Unpacking r-cran-fastmap (1.1.1-1) ... 334s Selecting previously unselected package r-cran-cachem. 334s Preparing to unpack .../061-r-cran-cachem_1.0.8-1_s390x.deb ... 334s Unpacking r-cran-cachem (1.0.8-1) ... 334s Selecting previously unselected package r-cran-digest. 334s Preparing to unpack .../062-r-cran-digest_0.6.34-1_s390x.deb ... 334s Unpacking r-cran-digest (0.6.34-1) ... 334s Selecting previously unselected package r-cran-ellipsis. 334s Preparing to unpack .../063-r-cran-ellipsis_0.3.2-2_s390x.deb ... 334s Unpacking r-cran-ellipsis (0.3.2-2) ... 334s Selecting previously unselected package r-cran-htmltools. 334s Preparing to unpack .../064-r-cran-htmltools_0.5.7-1_s390x.deb ... 334s Unpacking r-cran-htmltools (0.5.7-1) ... 334s Selecting previously unselected package r-cran-jquerylib. 334s Preparing to unpack .../065-r-cran-jquerylib_0.1.4+dfsg-4_all.deb ... 334s Unpacking r-cran-jquerylib (0.1.4+dfsg-4) ... 334s Selecting previously unselected package r-cran-jsonlite. 334s Preparing to unpack .../066-r-cran-jsonlite_1.8.8+dfsg-1_s390x.deb ... 334s Unpacking r-cran-jsonlite (1.8.8+dfsg-1) ... 334s Selecting previously unselected package r-cran-cli. 334s Preparing to unpack .../067-r-cran-cli_3.6.2-1_s390x.deb ... 334s Unpacking r-cran-cli (3.6.2-1) ... 334s Selecting previously unselected package r-cran-glue. 334s Preparing to unpack .../068-r-cran-glue_1.7.0-1_s390x.deb ... 334s Unpacking r-cran-glue (1.7.0-1) ... 334s Selecting previously unselected package r-cran-lifecycle. 334s Preparing to unpack .../069-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 334s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 334s Selecting previously unselected package r-cran-memoise. 334s Preparing to unpack .../070-r-cran-memoise_2.0.1-1_all.deb ... 334s Unpacking r-cran-memoise (2.0.1-1) ... 334s Selecting previously unselected package r-cran-mime. 334s Preparing to unpack .../071-r-cran-mime_0.12-1_s390x.deb ... 334s Unpacking r-cran-mime (0.12-1) ... 334s Selecting previously unselected package r-cran-fs. 334s Preparing to unpack .../072-r-cran-fs_1.6.3+dfsg-1build1_s390x.deb ... 334s Unpacking r-cran-fs (1.6.3+dfsg-1build1) ... 334s Selecting previously unselected package r-cran-r6. 334s Preparing to unpack .../073-r-cran-r6_2.5.1-1_all.deb ... 334s Unpacking r-cran-r6 (2.5.1-1) ... 334s Selecting previously unselected package r-cran-rappdirs. 334s Preparing to unpack .../074-r-cran-rappdirs_0.3.3-1_s390x.deb ... 334s Unpacking r-cran-rappdirs (0.3.3-1) ... 334s Selecting previously unselected package r-cran-sass. 334s Preparing to unpack .../075-r-cran-sass_0.4.8+dfsg-1_s390x.deb ... 334s Unpacking r-cran-sass (0.4.8+dfsg-1) ... 335s Selecting previously unselected package r-cran-bslib. 335s Preparing to unpack .../076-r-cran-bslib_0.6.1+dfsg-1_all.deb ... 335s Unpacking r-cran-bslib (0.6.1+dfsg-1) ... 335s Selecting previously unselected package r-cran-commonmark. 335s Preparing to unpack .../077-r-cran-commonmark_1.9.1-1_s390x.deb ... 335s Unpacking r-cran-commonmark (1.9.1-1) ... 335s Selecting previously unselected package r-cran-crayon. 335s Preparing to unpack .../078-r-cran-crayon_1.5.2-1_all.deb ... 335s Unpacking r-cran-crayon (1.5.2-1) ... 335s Selecting previously unselected package r-cran-diffobj. 335s Preparing to unpack .../079-r-cran-diffobj_0.3.5-1_s390x.deb ... 335s Unpacking r-cran-diffobj (0.3.5-1) ... 335s Selecting previously unselected package r-cran-evaluate. 335s Preparing to unpack .../080-r-cran-evaluate_0.23-1_all.deb ... 335s Unpacking r-cran-evaluate (0.23-1) ... 335s Selecting previously unselected package r-cran-fontawesome. 335s Preparing to unpack .../081-r-cran-fontawesome_0.5.2-1_all.deb ... 335s Unpacking r-cran-fontawesome (0.5.2-1) ... 335s Selecting previously unselected package r-cran-xfun. 335s Preparing to unpack .../082-r-cran-xfun_0.41+dfsg-1_s390x.deb ... 335s Unpacking r-cran-xfun (0.41+dfsg-1) ... 335s Selecting previously unselected package r-cran-highr. 335s Preparing to unpack .../083-r-cran-highr_0.10+dfsg-1_all.deb ... 335s Unpacking r-cran-highr (0.10+dfsg-1) ... 335s Selecting previously unselected package r-cran-pkgkitten. 335s Preparing to unpack .../084-r-cran-pkgkitten_0.2.3-1_all.deb ... 335s Unpacking r-cran-pkgkitten (0.2.3-1) ... 335s Selecting previously unselected package r-cran-rcpp. 335s Preparing to unpack .../085-r-cran-rcpp_1.0.12-1_s390x.deb ... 335s Unpacking r-cran-rcpp (1.0.12-1) ... 335s Selecting previously unselected package r-cran-later. 335s Preparing to unpack .../086-r-cran-later_1.3.2+dfsg-1_s390x.deb ... 335s Unpacking r-cran-later (1.3.2+dfsg-1) ... 335s Selecting previously unselected package r-cran-magrittr. 335s Preparing to unpack .../087-r-cran-magrittr_2.0.3-1_s390x.deb ... 335s Unpacking r-cran-magrittr (2.0.3-1) ... 335s Selecting previously unselected package r-cran-promises. 335s Preparing to unpack .../088-r-cran-promises_1.2.1+dfsg-1_s390x.deb ... 335s Unpacking r-cran-promises (1.2.1+dfsg-1) ... 335s Selecting previously unselected package r-cran-httpuv. 335s Preparing to unpack .../089-r-cran-httpuv_1.6.14+dfsg-1build1_s390x.deb ... 335s Unpacking r-cran-httpuv (1.6.14+dfsg-1build1) ... 335s Selecting previously unselected package r-cran-yaml. 335s Preparing to unpack .../090-r-cran-yaml_2.3.8-1_s390x.deb ... 335s Unpacking r-cran-yaml (2.3.8-1) ... 335s Selecting previously unselected package libjs-mathjax. 335s Preparing to unpack .../091-libjs-mathjax_2.7.9+dfsg-1_all.deb ... 335s Unpacking libjs-mathjax (2.7.9+dfsg-1) ... 336s Selecting previously unselected package r-cran-knitr. 336s Preparing to unpack .../092-r-cran-knitr_1.45+dfsg-1_all.deb ... 336s Unpacking r-cran-knitr (1.45+dfsg-1) ... 336s Selecting previously unselected package r-cran-stringi. 336s Preparing to unpack .../093-r-cran-stringi_1.8.3-1_s390x.deb ... 336s Unpacking r-cran-stringi (1.8.3-1) ... 336s Selecting previously unselected package r-cran-vctrs. 336s Preparing to unpack .../094-r-cran-vctrs_0.6.5-1_s390x.deb ... 336s Unpacking r-cran-vctrs (0.6.5-1) ... 336s Selecting previously unselected package r-cran-stringr. 336s Preparing to unpack .../095-r-cran-stringr_1.5.1-1_all.deb ... 336s Unpacking r-cran-stringr (1.5.1-1) ... 336s Selecting previously unselected package r-cran-tinytex. 336s Preparing to unpack .../096-r-cran-tinytex_0.49-1_all.deb ... 336s Unpacking r-cran-tinytex (0.49-1) ... 336s Selecting previously unselected package libjs-modernizr. 336s Preparing to unpack .../097-libjs-modernizr_2.6.2+ds1-5_all.deb ... 336s Unpacking libjs-modernizr (2.6.2+ds1-5) ... 336s Selecting previously unselected package r-cran-xtable. 336s Preparing to unpack .../098-r-cran-xtable_1%3a1.8-4-2_all.deb ... 336s Unpacking r-cran-xtable (1:1.8-4-2) ... 337s Selecting previously unselected package r-cran-sourcetools. 337s Preparing to unpack .../099-r-cran-sourcetools_0.1.7-1-1_s390x.deb ... 337s Unpacking r-cran-sourcetools (0.1.7-1-1) ... 337s Selecting previously unselected package r-cran-withr. 337s Preparing to unpack .../100-r-cran-withr_3.0.0+dfsg-1_all.deb ... 337s Unpacking r-cran-withr (3.0.0+dfsg-1) ... 337s Selecting previously unselected package libjs-twitter-bootstrap-datepicker. 337s Preparing to unpack .../101-libjs-twitter-bootstrap-datepicker_1.3.1+dfsg1-4.1_all.deb ... 337s Unpacking libjs-twitter-bootstrap-datepicker (1.3.1+dfsg1-4.1) ... 337s Selecting previously unselected package r-cran-shiny. 337s Preparing to unpack .../102-r-cran-shiny_1.8.0+dfsg-1_all.deb ... 337s Unpacking r-cran-shiny (1.8.0+dfsg-1) ... 337s Selecting previously unselected package r-cran-rmarkdown. 337s Preparing to unpack .../103-r-cran-rmarkdown_2.25+dfsg-3_all.deb ... 337s Unpacking r-cran-rmarkdown (2.25+dfsg-3) ... 337s Selecting previously unselected package r-cran-unitizer. 337s Preparing to unpack .../104-r-cran-unitizer_1.4.20-1_all.deb ... 337s Unpacking r-cran-unitizer (1.4.20-1) ... 337s Selecting previously unselected package autopkgtest-satdep. 337s Preparing to unpack .../105-1-autopkgtest-satdep.deb ... 337s Unpacking autopkgtest-satdep (0) ... 337s Setting up libjs-json (0~20221030+~1.0.8-1) ... 337s Setting up javascript-common (11+nmu1) ... 337s Setting up libgraphite2-3:s390x (1.3.14-2) ... 337s Setting up libpixman-1-0:s390x (0.42.2-1) ... 337s Setting up libpaper1:s390x (1.1.29) ... 337s 337s Creating config file /etc/papersize with new version 337s Setting up fontconfig (2.15.0-1.1ubuntu1) ... 339s Regenerating fonts cache... done. 339s Setting up fonts-mathjax (2.7.9+dfsg-1) ... 339s Setting up libjs-mathjax (2.7.9+dfsg-1) ... 339s Setting up libxrender1:s390x (1:0.9.10-1.1) ... 339s Setting up libdatrie1:s390x (0.2.13-3) ... 339s Setting up libjs-popper.js (1.16.1+ds-6) ... 339s Setting up libxcb-render0:s390x (1.15-1) ... 339s Setting up libjs-sifter.js (0.6.0+dfsg-3) ... 339s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 339s Setting up unzip (6.0-28ubuntu3) ... 339s Setting up x11-common (1:7.7+23ubuntu2) ... 339s Setting up node-html5shiv (3.7.3+dfsg-5) ... 339s Setting up libjs-microplugin.js (0.0.3+dfsg-1.1) ... 339s Setting up libxcb-shm0:s390x (1.15-1) ... 339s Setting up libpaper-utils (1.1.29) ... 339s Setting up libgomp1:s390x (14-20240315-1ubuntu1) ... 339s Setting up libjs-modernizr (2.6.2+ds1-5) ... 339s Setting up libcairo2:s390x (1.18.0-1ubuntu1) ... 339s Setting up libjs-es5-shim (4.6.7-2) ... 339s Setting up zip (3.0-13) ... 339s Setting up libblas3:s390x (3.12.0-3) ... 339s update-alternatives: using /usr/lib/s390x-linux-gnu/blas/libblas.so.3 to provide /usr/lib/s390x-linux-gnu/libblas.so.3 (libblas.so.3-s390x-linux-gnu) in auto mode 339s Setting up libjs-d3 (3.5.17-4) ... 339s Setting up libtcl8.6:s390x (8.6.14+dfsg-1) ... 339s Setting up libgfortran5:s390x (14-20240315-1ubuntu1) ... 339s Setting up libjs-highlight.js (9.18.5+dfsg1-2) ... 339s Setting up liblua5.4-0:s390x (5.4.6-3build1) ... 339s Setting up libharfbuzz0b:s390x (8.3.0-2build1) ... 339s Setting up libthai-data (0.1.29-2) ... 339s Setting up node-bootstrap-sass (3.4.3-2) ... 339s Setting up libjs-prettify (2015.12.04+dfsg-1.1) ... 339s Setting up libxss1:s390x (1:1.2.3-1build2) ... 339s Setting up libjs-bootstrap4 (4.6.1+dfsg1-4) ... 339s Setting up pandoc-data (3.1.3-1) ... 339s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 339s Setting up node-normalize.css (8.0.1-5) ... 339s Setting up fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... 339s Setting up xdg-utils (1.1.3-4.1ubuntu3) ... 339s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 339s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 339s Setting up libjs-jquery-selectize.js (0.12.6+dfsg-1.1) ... 339s Setting up libice6:s390x (2:1.0.10-1build2) ... 339s Setting up liblapack3:s390x (3.12.0-3) ... 339s update-alternatives: using /usr/lib/s390x-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/s390x-linux-gnu/liblapack.so.3 (liblapack.so.3-s390x-linux-gnu) in auto mode 339s Setting up libxft2:s390x (2.3.6-1) ... 339s Setting up libtk8.6:s390x (8.6.14-1) ... 339s Setting up libjs-twitter-bootstrap-datepicker (1.3.1+dfsg1-4.1) ... 339s Setting up libjs-jquery-datatables (1.11.5+dfsg-2) ... 339s Setting up libthai0:s390x (0.1.29-2) ... 339s Setting up libjs-jquery-ui (1.13.2+dfsg-1) ... 339s Setting up pandoc (3.1.3+ds-2) ... 339s Setting up libsm6:s390x (2:1.2.3-1build2) ... 339s Setting up libpango-1.0-0:s390x (1.52.1+ds-1) ... 339s Setting up libxt6t64:s390x (1:1.2.1-1.2) ... 339s Setting up libpangoft2-1.0-0:s390x (1.52.1+ds-1) ... 339s Setting up libpangocairo-1.0-0:s390x (1.52.1+ds-1) ... 339s Setting up r-base-core (4.3.3-2build1) ... 340s 340s Creating config file /etc/R/Renviron with new version 340s Setting up r-cran-crayon (1.5.2-1) ... 340s Setting up r-cran-sourcetools (0.1.7-1-1) ... 340s Setting up r-cran-commonmark (1.9.1-1) ... 340s Setting up r-cran-r6 (2.5.1-1) ... 340s Setting up r-cran-pkgkitten (0.2.3-1) ... 340s Setting up r-cran-magrittr (2.0.3-1) ... 340s Setting up r-cran-rappdirs (0.3.3-1) ... 340s Setting up r-cran-littler (0.3.19-1) ... 340s Setting up r-cran-fs (1.6.3+dfsg-1build1) ... 340s Setting up r-cran-rcpp (1.0.12-1) ... 340s Setting up r-cran-diffobj (0.3.5-1) ... 340s Setting up r-cran-rlang (1.1.3-1) ... 340s Setting up littler (0.3.19-1) ... 340s Setting up r-cran-xfun (0.41+dfsg-1) ... 340s Setting up r-cran-withr (3.0.0+dfsg-1) ... 340s Setting up r-cran-mime (0.12-1) ... 340s Setting up r-cran-base64enc (0.1-3-3) ... 340s Setting up r-cran-digest (0.6.34-1) ... 340s Setting up r-cran-yaml (2.3.8-1) ... 340s Setting up r-cran-evaluate (0.23-1) ... 340s Setting up r-cran-highr (0.10+dfsg-1) ... 340s Setting up r-cran-glue (1.7.0-1) ... 340s Setting up r-cran-xtable (1:1.8-4-2) ... 340s Setting up r-cran-cli (3.6.2-1) ... 340s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 340s Setting up r-cran-fastmap (1.1.1-1) ... 340s Setting up r-cran-jsonlite (1.8.8+dfsg-1) ... 340s Setting up r-cran-stringi (1.8.3-1) ... 340s Setting up r-cran-later (1.3.2+dfsg-1) ... 340s Setting up r-cran-tinytex (0.49-1) ... 340s Setting up r-cran-knitr (1.45+dfsg-1) ... 340s Setting up r-cran-cachem (1.0.8-1) ... 340s Setting up r-cran-unitizer (1.4.20-1) ... 340s Setting up r-cran-vctrs (0.6.5-1) ... 340s Setting up r-cran-ellipsis (0.3.2-2) ... 340s Setting up r-cran-stringr (1.5.1-1) ... 340s Setting up r-cran-memoise (2.0.1-1) ... 340s Setting up r-cran-promises (1.2.1+dfsg-1) ... 340s Setting up r-cran-htmltools (0.5.7-1) ... 340s Setting up r-cran-sass (0.4.8+dfsg-1) ... 340s Setting up r-cran-httpuv (1.6.14+dfsg-1build1) ... 340s Setting up r-cran-fontawesome (0.5.2-1) ... 340s Setting up r-cran-jquerylib (0.1.4+dfsg-4) ... 340s Setting up r-cran-bslib (0.6.1+dfsg-1) ... 340s Setting up r-cran-shiny (1.8.0+dfsg-1) ... 340s Setting up r-cran-rmarkdown (2.25+dfsg-3) ... 340s Setting up autopkgtest-satdep (0) ... 340s Processing triggers for man-db (2.12.0-3build4) ... 340s Processing triggers for install-info (7.1-3build1) ... 340s Processing triggers for libc-bin (2.39-0ubuntu6) ... 346s (Reading database ... 95245 files and directories currently installed.) 346s Removing autopkgtest-satdep (0) ... 346s autopkgtest [23:31:11]: test run-unit-test: [----------------------- 347s Begin testing t-browser.R 347s 347s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 347s Copyright (C) 2024 The R Foundation for Statistical Computing 347s Platform: s390x-ibm-linux-gnu (64-bit) 347s 347s R is free software and comes with ABSOLUTELY NO WARRANTY. 347s You are welcome to redistribute it under certain conditions. 347s Type 'license()' or 'licence()' for distribution details. 347s 347s R is a collaborative project with many contributors. 347s Type 'contributors()' for more information and 347s 'citation()' on how to cite R or R packages in publications. 347s 347s Type 'demo()' for some demos, 'help()' for on-line help, or 347s 'help.start()' for an HTML browser interface to help. 347s Type 'q()' to quit R. 347s 347s > source(file.path("_helper", "init.R")) 347s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 347s > 347s > options(unitizer.color = FALSE) 347s > zero.env <- parent.env(.GlobalEnv) 347s > obj.item <- new("unitizerItem", call = quote(1 + 1), env = new.env()) 347s > obj.item@data@value <- list(2) 347s > obj.item@data@output <- c("two", "dos", "due") 347s > obj.item@data@conditions <- new("conditionList", .items = list(simpleError("hello"), 347s + simpleWarning("What a warning"))) 347s > obj.item@data@message <- vapply(unitizer:::as.list(obj.item@data@conditions), 347s + conditionMessage, character(1L)) 347s > obj.item@data@aborted <- TRUE 347s > 347s > # - "unitizerItem accessor functions work" ------------------------------------- 347s > 347s > obj.item$value 347s [1] 2 347s > obj.item$output 347s [1] "two" "dos" "due" 347s > obj.item$conditions 347s Condition list with 2 conditions: 347s 1. Error: hello 347s 2. Warning: What a warning 347s > 347s > # Create a bunch of expressions for testing 347s > 347s > exps1 <- expression( 347s + library(stats), 347s + unitizer_sect("Section 1", { 347s + 1 + 1 347s + runif(20) 347s + stop("woohoo") 347s + "I'll be removed" 347s + "I too will be removed" 347s + }), 347s + unitizer_sect("Section 2", { 347s + "I three will be removed" 347s + sample(20) 347s + })) 347s > exps2 <- expression( 347s + library(stats), 347s + unitizer_sect("Section 1", { 347s + 1 + 1 347s + runif(20) 347s + stop("woohoo") 347s + var <- 200 347s + matrix(1:9, 3) 347s + }), 347s + unitizer_sect("Section 2", { 347s + 1 + 20 347s + var1 <- list(1, 2, 3) 347s + sample(20) 347s + matrix(1:9, ncol = 3) 347s + lm(x ~ y, data.frame(x = 1:10, y = c(5, 3, 3, 2, 1, 8, 2, 347s + 1, 4, 1.5))) 347s + })) 347s > my.unitizer <- new("unitizer", id = 1, zero.env = zero.env) 347s > coi(my.unitizer <- my.unitizer + exps1) 347s > my.unitizer2 <- new("unitizer", id = 2, zero.env = zero.env) 347s > # make previous items into reference items 347s > my.unitizer2 <- my.unitizer2 + my.unitizer@items.new 347s > # now add back items to compare 347s > coi(my.unitizer2 <- my.unitizer2 + exps2) 347s > unitizer.prepped <- unitizer:::browsePrep(my.unitizer2, mode = "unitize") 347s > 347s > # NOTE: for some reason, changes in between revisions d9619db and a46e941 347s > # should have caused the tests to fail, but didn't. We did not notice 347s > # failures until we ran tests quite a bit later at ca9f540364. Not sure why 347s > # this happened. The failures were due to the order of tests changing because 347s > # we moved ignored tests to be in the same sub-section as the subsequent non- 347s > # ignored tests 347s > 347s > # - "Can convert to data.frame" ------------------------------------------------ 347s > 347s > all.equal(unitizer:::as.data.frame(unitizer.prepped), rds("browse_df1")) 347s [1] TRUE 347s > 347s > # - "unitizerBrowse correctly processes unitizer for display" ------------------ 347s > 347s > # force all tests to be reviewed so they will be shown 347s > unitizer.prepped@mapping@reviewed <- 347s + rep(TRUE, length(unitizer.prepped@mapping@reviewed)) 347s > unitizer.prepped@mapping@review.val <- 347s + rep("Y", length(unitizer.prepped@mapping@reviewed)) 347s > all.equal(as.character(unitizer.prepped, 60), rds("browse_aschar1")) 347s [1] TRUE 347s > 347s > # Alternating tests 347s > unitizer.prepped@mapping@reviewed <- 347s + as.logical(seq(length(unitizer.prepped@mapping@reviewed))%%2) 347s > all.equal(as.character(unitizer.prepped, 60), rds("browse_aschar2")) 347s [1] TRUE 347s > 347s > # Errors / warnings 347s > try(as.character(unitizer.prepped, -1)) # positive 347s Error in .local(x, ...) : 347s Argument `width` must be a positive scalar numeric. 347s > prep.narrow <- as.character(unitizer.prepped, 5) # too small 347s Warning in .local(x, ...) : 347s Selected display width too small, will be ignored 347s > 347s > all.equal(prep.narrow, rds("browse_ascharnarrow")) 347s [1] TRUE 347s > 347s > # Colors work (should be last in this section) since the reference @global 347s > 347s > unitizer.prepped@global$unitizer.opts[["unitizer.color"]] <- TRUE 347s > old.opt <- options(crayon.enabled = TRUE) 347s > prep.color <- as.character(unitizer.prepped, 60) 347s > all.equal(prep.color, rds("browse_aschar3")) 347s [1] TRUE 347s > unitizer.prepped@global$unitizer.opts[["unitizer.color"]] <- FALSE 347s > options(old.opt) 347s > 347s > # - "processInput generates Correct Item Structure" ---------------------------- 347s > 347s > # Here we just test that the calls of each item are what we expect, making 347s > # sure that different behavior for Y or N depending on sub-section type is 347s > # observed correctly (e.g. a Y for new test means keep it, where as for 347s > # removed test means don't keep it) 347s > # For debugging: 347s > # cbind(substr(unitizer:::deparseCalls(unitizer.prepped), 1, 15), as.character(unitizer.prepped@mapping@review.type), unitizer.prepped@mapping@review.val, unitizer.prepped@mapping@reviewed) 347s > # cat(deparse(width=500, 347s > # lapply( 347s > # unitizer:::as.list(unitizer:::processInput(unitizer.prepped)), 347s > # function(x) call("quote", slot(x, "call"))) 347s > # ) ) 347s > unitizer.prepped@mapping@reviewed <- 347s + rep(TRUE, length(unitizer.prepped@mapping@reviewed)) 347s > unitizer.prepped@mapping@review.val <- 347s + rep("Y", length(unitizer.prepped@mapping@reviewed)) 347s > 347s > # Assume user accepted all tests 347s > 347s > lapply( 347s + unitizer:::as.list(unitizer:::processInput(unitizer.prepped)), slot, "call" 347s + ) 347s [[1]] 347s library(stats) 347s 347s [[2]] 347s runif(20) 347s 347s [[3]] 347s var <- 200 347s 347s [[4]] 347s matrix(1:9, 3) 347s 347s [[5]] 347s 1 + 1 347s 347s [[6]] 347s stop("woohoo") 347s 347s [[7]] 347s var1 <- list(1, 2, 3) 347s 347s [[8]] 347s sample(20) 347s 347s [[9]] 347s 1 + 20 347s 347s [[10]] 347s matrix(1:9, ncol = 3) 347s 347s [[11]] 347s lm(x ~ y, data.frame(x = 1:10, y = c(5, 3, 3, 2, 1, 8, 2, 1, 347s 4, 1.5))) 347s 347s > # Assume user accepted all but 1, 4, 6 and 11, note it isn't completely 347s > # obvious what should be kept since an N for anything but a new and passed 347s > # test will result in some object remaining in the list (typically the 347s > # reference copy thereof) 347s > unitizer.prepped@mapping@review.val[] <- "N" 347s > unitizer.prepped@mapping@review.val[c(2, 6, 8, 12)] <- "Y" 347s > lapply( 347s + unitizer:::as.list(unitizer:::processInput(unitizer.prepped)), slot, "call" 347s + ) 347s [[1]] 347s runif(20) 347s 347s [[2]] 347s stop("woohoo") 347s 347s [[3]] 347s [1] "I'll be removed" 347s 347s [[4]] 347s sample(20) 347s 347s [[5]] 347s matrix(1:9, ncol = 3) 347s 347s [[6]] 347s [1] "I three will be removed" 347s 347s > # - "unitizerBrowse subsetting works" ------------------------------------------ 347s > 347s > # note single bracket subsetting for `unitizerBrowse` overrides the `unitizerList` 347s > # subsetting 347s > unitizer:::deparseCalls(unitizer:::extractItems(unitizer.prepped[c(4, 8, 10)])) 347s [1] "matrix(1:9, 3)" "\"I too will be removed\"" 347s [3] "sample(20)" 347s > unitizer:::deparseCalls(unitizer:::extractItems(unitizer.prepped[c(2, 3, 11)])) 347s [1] "runif(20)" "var <- 200" "1 + 20" 347s > 347s > # - "Reference section mapping works" ------------------------------------------ 347s > 347s > # Copy over just two sections 347s > my.unitizer3 <- new("unitizer", id = 3, zero.env = zero.env) + 347s + my.unitizer2@items.new[-(2:6)] 347s > # Exclude section two tests 347s > # sections should copy over 347s > my.unitizer3 <- unitizer:::refSections(my.unitizer3, my.unitizer2) 347s > # just copy over 1st and 3rd sections 347s > identical(my.unitizer3@sections.ref, my.unitizer2@sections[-2]) 347s [1] TRUE 347s > my.unitizer3@section.ref.map 347s [1] 1 2 2 2 2 2 347s > 347s > # Make sure "removed" sections are NA when kept 347s > unitizer.prepped@mapping@reviewed <- 347s + rep(TRUE, length(unitizer.prepped@mapping@reviewed)) 347s > # don't delete removed 347s > unitizer.prepped@mapping@review.val <- 347s + ifelse(unitizer.prepped@mapping@review.type %in% c("Removed"), "N", "Y") 347s > items.processed <- unitizer:::processInput(unitizer.prepped) 347s > vapply(unitizer:::as.list(items.processed), slot, 1L, "section.id") 347s [1] 1 2 2 2 2 2 NA NA 3 3 3 3 3 NA 347s > 347s > # Now try to re-establish sections with removed tests 347s > my.unitizer4 <- 347s + new("unitizer", id = 4, zero.env = zero.env) + items.processed 347s > # sections should copy over 347s > my.unitizer4 <- unitizer:::refSections(my.unitizer4, my.unitizer2) 347s > is(my.unitizer4@sections.ref[[4L]], "unitizerSectionNA") 347s [1] TRUE 347s > my.unitizer4@section.ref.map 347s [1] 1 2 2 2 2 2 4 4 3 3 3 3 3 4 347s > 347s > # - "Item Extraction" ---------------------------------------------------------- 347s > 347s > items <- unitizer:::extractItems(unitizer.prepped) 347s > item.calls <- vapply( 347s + unitizer:::as.list(items), 347s + function(x) 347s + paste0(deparse(x@call, width.cutoff = 500), collapse = ""), character(1L) 347s + ) 347s > item.types <- vapply(unitizer:::as.list(items), slot, FALSE, "reference") 347s > item.ids <- vapply(unitizer:::as.list(items), slot, 1L, "id") 347s > item.df <- data.frame(item.calls, item.types, item.ids, stringsAsFactors = FALSE) 347s > 347s > all.equal(item.df[order(item.types, item.ids),], rds("browse_itemord")) 347s [1] TRUE 347s > 348s PASS 348s Begin testing t-capture.R 348s 348s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 348s Copyright (C) 2024 The R Foundation for Statistical Computing 348s Platform: s390x-ibm-linux-gnu (64-bit) 348s 348s R is free software and comes with ABSOLUTELY NO WARRANTY. 348s You are welcome to redistribute it under certain conditions. 348s Type 'license()' or 'licence()' for distribution details. 348s 348s R is a collaborative project with many contributors. 348s Type 'contributors()' for more information and 348s 'citation()' on how to cite R or R packages in publications. 348s 348s Type 'demo()' for some demos, 'help()' for on-line help, or 348s 'help.start()' for an HTML browser interface to help. 348s Type 'q()' to quit R. 348s 348s > source(file.path("_helper", "init.R")) 348s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("capture") 348s > 348s > # # Messing around trying to understand seek... 348s > # f <- tempfile() 348s > # con <- file(f, "w+b") 348s > # writeChar(paste(letters, LETTERS, collapse=" "), con) 348s > # readChar(con, 20) 348s > # pos <- seek(con, origin="current") 348s > # seek(con, pos, rw="write") 348s > # writeChar("xxxxxxxxx", con) 348s > # readChar(con, 3) 348s > # pos <- seek(con, origin="current") 348s > # seek(con, pos, rw="write") 348s > # writeChar("yyyyy", con) 348s > # close(con) 348s > # readLines(f) 348s > # unlink(f) 348s > 348s > # - "get_capture" -------------------------------------------------------------- 348s > 348s > old.max <- options(unitizer.max.capture.chars = 100L) 348s > cons <- new("unitizerCaptCons") 348s > base.char <- paste(rep(letters, 10), collapse = " ") 348s > writeChar(base.char, cons@out.c) 348s > 348s > # Error "Argument `chrs.max`" 348s > try(unitizer:::get_text_capture(cons, "output", TRUE, chrs.max = "howdy")) 348s Error in unitizer:::get_text_capture(cons, "output", TRUE, chrs.max = "howdy") : 348s Argument `chrs.max` must be integer(1L) and greater than 100L; using 200000L for nowTRUE 348s > # Warn max capt 348s > cpt0 <- unitizer:::get_text_capture(cons, "output", TRUE) 348s Warning in get_text(slot(cons, if (type == "message") "err.c" else "out.c")) : 348s Reached maximum text capture characters 100; see `getOption("unitizer.max.capture.chars")` 348s > nchar(cpt0) 348s [1] 100 348s > base.char.2 <- paste(rev(rep(letters, 10)), collapse = " ") 348s > writeChar(base.char.2, cons@err.c) 348s > sink(cons@err.c, type = "message") 348s > 348s > cpt0.err <- unitizer:::get_text_capture(cons, "message", FALSE) 348s Warning in get_text(slot(cons, if (type == "message") "err.c" else "out.c")) : 348s Reached maximum text capture characters 100; see `getOption("unitizer.max.capture.chars")` 348s > sink(type = "message") 348s > all.equal(cpt0.err, substr(base.char.2, 1, 100)) 348s [1] TRUE 348s > 348s > ## for some reason this test stopped working; not sure why, need to look into 348s > ## it; seemingly it messes up the pointer for the next read 348s > # writeChar("xxxxxx", cons@out.c) 348s > # cpt2 <- unitizer:::get_text_capture(cons, "output", TRUE) 348s > # expect_equal("xxxxxx", cpt2) 348s > writeChar(paste0(rep("yyyyyyy", 20L), collapse = ""), cons@out.c) 348s > # warn max capt 348s > cpt1 <- unitizer:::get_text_capture(cons, "output", TRUE) 348s Warning in get_text(slot(cons, if (type == "message") "err.c" else "out.c")) : 348s Reached maximum text capture characters 100; see `getOption("unitizer.max.capture.chars")` 348s > all.equal(cpt1, paste0(rep("y", 100), collapse = "")) 348s [1] TRUE 348s > unitizer:::close_and_clear(cons) 348s > options(old.max) 348s > 348s > # - "get_text" ----------------------------------------------------------------- 348s > 348s > old.max <- options(unitizer.max.capture.chars = 100L) 348s > f <- tempfile() 348s > con <- file(f, "w+b") 348s > base.char <- paste(letters, collapse = " ") 348s > sink(con, type = "message") 348s > cat(base.char, file = stderr()) 348s > # this needs to temporarily switch the sink to be able to issue the warning 348s > # Warn: "Reached maximum" 348s > unitizer:::get_text(con, 10) 348s Warning in unitizer:::get_text(con, 10) : 348s Reached maximum text capture characters 10; see `getOption("unitizer.max.capture.chars")` 348s [1] "a b c d e " 348s > # should still be to writing to our file, 10 chars in 348s > cat("boogiewoogy", file = stderr()) 348s > sink(type = "message") 348s > suppressWarnings(readLines(f)) # incomplete final line... 348s [1] "a b c d e boogiewoogy l m n o p q r s t u v w x y z" 348s > 348s > options(old.max) 348s > unlink(f) 348s > 348s > # - "connection capture works" ------------------------------------------------- 348s > 348s > out.num <- as.integer(stdout()) 348s > err.num <- as.integer(stderr()) 348s > err.con <- getConnection(sink.number(type = "message")) 348s > cons <- new("unitizerCaptCons") 348s > cons <- unitizer:::set_capture(cons) 348s > cat("hello there\n") 348s > cat("goodbye there\n", file = stderr()) 348s > capt <- unitizer:::get_capture(cons) 348s > cons <- unitizer:::unsink_cons(cons) 348s > capt 348s $output 348s [1] "hello there\n" 348s 348s $message 348s [1] "goodbye there\n" 348s 348s > # expect_identical(as.integer(stdout()), out.num) 348s > identical(as.integer(stdout()), out.num) 348s [1] TRUE 348s > identical(as.integer(stderr()), err.num) 348s [1] TRUE 348s > unitizer:::close_and_clear(cons) 348s > 348s > # Now, here we add an extra stdout sink. In both cases unsink_cons will not 348s > # touch the sinks since we're not in an expected state, leaving 348s > # close_and_clear to cleanup 348s > err.con <- getConnection(sink.number(type = "message")) 348s > cons <- new("unitizerCaptCons") 348s > cons <- unitizer:::set_capture(cons) 348s > cat("there hello\n") 348s > # message does not work with testthat 348s > cat("there goodbye\n", file = stderr()) 348s > f1 <- tempfile() 348s > f2 <- tempfile() 348s > c2 <- file(f2, "w") 348s > sink(f1) 348s > sink(c2, type = "message") 348s > cat("12 there hello\n") 348s > # message does not work with testthat 348s > cat("12 there goodbye\n", file = stderr()) 348s > capt <- unitizer:::get_capture(cons) 348s > cons <- unitizer:::unsink_cons(cons) 348s > unitizer:::close_and_clear(cons) 348s > attr(cons@out.c, "waive") 348s [1] TRUE 348s > attr(cons@err.c, "waive") 348s [1] TRUE 348s > capt 348s $output 348s [1] "there hello\n" 348s 348s $message 348s [1] "there goodbye\n" 348s 348s > readLines(f1) 348s [1] "12 there hello" 348s > readLines(f2) 348s [1] "12 there goodbye" 348s > close(c2) 348s > unlink(c(f1, f2)) 348s > 348s > # Same, but this time close the sinks properly, so the connections should not 348s > # be waived 348s > err.con <- getConnection(sink.number(type = "message")) 348s > cons <- new("unitizerCaptCons") 348s > cons <- unitizer:::set_capture(cons) 348s > cat("there hello\n") 348s > # message does not work with testthat 348s > cat("there goodbye\n", file = stderr()) 348s > f1 <- tempfile() 348s > f2 <- tempfile() 348s > c2 <- file(f2, "w") 348s > sink(f1) 348s > sink(c2, type = "message") 348s > cat("12 there hello\n") 348s > # message does not work with testthat 348s > cat("12 there goodbye\n", file = stderr()) 348s > sink() 348s > sink(cons@err.c, type = "message") 348s > capt <- unitizer:::get_capture(cons) 348s > cons <- unitizer:::unsink_cons(cons) 348s > attr(cons@out.c, "waive") # NULL 348s NULL 348s > attr(cons@err.c, "waive") # NULL 348s NULL 348s > capt 348s $output 348s [1] "there hello\n" 348s 348s $message 348s [1] "there goodbye\n" 348s 348s > unitizer:::close_and_clear(cons) 348s > readLines(f1) 348s [1] "12 there hello" 348s > readLines(f2) 348s [1] "12 there goodbye" 348s > close(c2) 348s > unlink(c(f1, f2)) 348s > # Try to mess up sink counter by replacing the real sink with a fake sink 348s > # should lead to a waived connection 348s > cons <- new("unitizerCaptCons") 348s > cons <- unitizer:::set_capture(cons) 348s > f1 <- tempfile() 348s > sink() 348s > sink(f1) 348s > capt <- unitizer:::get_capture(cons) 348s > cons <- unitizer:::unsink_cons(cons) 348s > attr(cons@out.c, "waive") 348s > attr(cons@err.c, "waive") 348s > capt 348s > # Try to fix so that we don't get a full stack release error 348s > sink() 348s > sink(cons@out.c) 348s > unitizer:::close_and_clear(cons) 348s > unlink(f1) 348s > # helper function 348s > f1 <- tempfile() 348s > f2 <- tempfile() 348s > c1 <- file(f1, "w+b") 348s > c2 <- file(f2, "w+b") 348s > sink(c2) 348s > unitizer:::is_stdout_sink(f1) 348s > sink() 348s > sink(c1) 348s > unitizer:::is_stdout_sink(f1) 348s > sink() 348s > close(c1) 348s > close(c2) 348s > unlink(c(f1, f2)) 348s > 348s > # - "connection breaking tests" ------------------------------------------------ 348s > 348s > # # These tests cannot be run as they blow away the entire sink stack which can 348s > # # mess up any testing done under capture 348s > # 348s > # test_that("connection breaking tests", { 348s > # # Test the more pernicious error where we substitute the stdout sink 348s > # 348s > # cons <- new("unitizerCaptCons") 348s > # cons <- unitizer:::set_capture(cons) 348s > # cat("woohoo\n") 348s > # cat("yohooo\n", file=stderr()) 348s > # f1 <- tempfile() 348s > # sink() 348s > # sink(f1) 348s > # capt <- unitizer:::get_capture(cons) 348s > # cons <- unitizer:::unsink_cons(cons) 348s > # sink() 348s > # unlink(f1) 348s > # expect_true(attr(cons@out.c, "waive")) 348s > # expect_null(attr(cons@err.c, "waive")) 348s > # expect_identical( 348s > # capt, list(output = "woohoo\n", message = "yohooo\n") 348s > # ) 348s > # expect_identical( 348s > # unitizer:::close_and_clear(cons), 348s > # structure(c(FALSE, TRUE), .Names = c("output", "message")) 348s > # ) 348s > # }) 348s > 348s > # - "close_and_clear" ---------------------------------------------------------- 348s > 348s > # need some careful handling to make sure we don't mess up the testthat's 348s > # sinking (legacy behavior) 348s > cons <- new("unitizerCaptCons") 348s > err.con <- cons@stderr.con 348s > on.exit(sink(err.con, type = "message")) 348s > # intended to cause an error 348s > cons@stderr.con <- list() 348s > # msg: "Unable to restore original " 348s > cons.txt <- capture.output(status <- unitizer:::close_and_clear(cons), 348s + type = "message") 348s | Unable to restore original message sink, setting back to normal stderr 348s 348s > any(grepl("connection", cons.txt)) 348s [1] TRUE 348s > sink(err.con, type = "message") 348s > status["message"] 348s message 348s FALSE 348s > 348s > # - "eval with capt" ----------------------------------------------------------- 348s > 348s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 348s > all.equal( 348s + (capt <- unitizer:::eval_with_capture(quote(1 + 1), global = glob))[1:8], 348s + rds(100) 348s + ) 348s [1] TRUE 348s > is(capt[[9]], "unitizerCaptCons") 348s [1] TRUE 348s > all.equal( 348s + ( 348s + capt <- unitizer:::eval_with_capture( 348s + cat("wow\n", file = stderr()), global = glob) 348s + )[1:8], 348s + rds(200) 348s + ) 348s [1] TRUE 348s > is(capt[[9]], "unitizerCaptCons") 348s [1] TRUE 348s > 348s PASS 348s Begin testing t-change.R 348s 348s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 348s Copyright (C) 2024 The R Foundation for Statistical Computing 348s Platform: s390x-ibm-linux-gnu (64-bit) 348s 348s R is free software and comes with ABSOLUTELY NO WARRANTY. 348s You are welcome to redistribute it under certain conditions. 348s Type 'license()' or 'licence()' for distribution details. 348s 348s R is a collaborative project with many contributors. 348s Type 'contributors()' for more information and 348s 'citation()' on how to cite R or R packages in publications. 348s 348s Type 'demo()' for some demos, 'help()' for on-line help, or 348s 'help.start()' for an HTML browser interface to help. 348s Type 'q()' to quit R. 348s 348s > source(file.path("_helper", "init.R")) 349s > 349s > # - "Construction works" ------------------------------------------------------- 349s > 349s > # invalid slot 349s > try(new("unitizerChanges", removed = 1:3)) 349s Error in validObject(.Object) : 349s invalid class "unitizerChanges" object: slot `@`removed must be of length 2 349s > # invalid/ got character 349s > try(new("unitizerChanges", failed = letters[1:2])) 349s Error in validObject(.Object) : 349s invalid class "unitizerChanges" object: invalid object for slot "failed" in class "unitizerChanges": got class "character", should be or extend class "integer" 349s > 349s > # - "Output as expected" ------------------------------------------------------- 349s > 349s > my.changes <- new("unitizerChanges", failed = c(1L, 10L), new = c(1L, 349s + 5L), removed = c(2L, 4L), corrupted = c(3L, 8L)) 349s > show(my.changes) 349s - Replacing 1 out of 10 failed tests 349s - Adding 1 out of 5 new tests 349s - Removing 2 out of 4 removed tests 349s - Replacing 3 out of 8 tests with errors 349s > 349s > # - "Length Works" ------------------------------------------------------------- 349s > 349s > length(my.changes) # 7 349s [1] 7 349s > 349s PASS 349s Begin testing t-demo.R 349s 349s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 349s Copyright (C) 2024 The R Foundation for Statistical Computing 349s Platform: s390x-ibm-linux-gnu (64-bit) 349s 349s R is free software and comes with ABSOLUTELY NO WARRANTY. 349s You are welcome to redistribute it under certain conditions. 349s Type 'license()' or 'licence()' for distribution details. 349s 349s R is a collaborative project with many contributors. 349s Type 'contributors()' for more information and 349s 'citation()' on how to cite R or R packages in publications. 349s 349s Type 'demo()' for some demos, 'help()' for on-line help, or 349s 'help.start()' for an HTML browser interface to help. 349s Type 'q()' to quit R. 349s 349s > source(file.path("aammrtf", "mock.R")) 349s > source(file.path("_helper", "init.R")) 349s > source(file.path("_helper", "pkgs.R")) 349s Install Packages 352s Setup Demos 352s > 352s > # Mostly makes sure the demo steps work, but since it is a convenient way of 352s > # generating a unitizer with actual errors and so forth, we use it to test a few 352s > # other things as well in the context of those unitizers 352s > 352s > # - "in_pkg" ------------------------------------------------------------------- 352s > 352s > base.dir <- file.path(FLM, "tests", "extra") 352s > in.pkg.file <- file.path(base.dir, "inpkg.R") 352s > 352s > unitizer:::read_line_set_vals(c("Q")) 352s > txt1 <- unitizer:::capture_output(unitize(in.pkg.file, interactive.mode = TRUE)) 353s > # `sub` needed due to inconsistencies in R 3.4 and 3.3 for top level error 353s > # messages 353s > txt1$message <- sub("^Error.*:", "", txt1$message) 353s > txt1 353s - Output ----------------------------------------------------------------------- 353s 353s 353s +------------------------------------------------------------------------------+ 353s | unitizer for: extra/inpkg.R | 353s +------------------------------------------------------------------------------+ 353s 353s Pass Fail New 353s - - 1 353s ........................... 353s - - 1 353s 353s - New -------------------------------------------------------------------------- 353s 353s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 353s | [R]erun, [Q]uit, [H]elp)? 353s 353s # should fail normally, but return TRUE if run in fastlm 353s 353s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 353s > hidden_fun() 353s 353s unitizer> Q 353s 353s | unitizer unchanged. 353s 353s - Message ---------------------------------------------------------------------- 353s 353s could not find function "hidden_fun" 353s | No changes recorded. 353s > unitizer:::read_line_set_vals(c("Q")) 353s > unitize(in.pkg.file, state = in_pkg(), interactive.mode = TRUE) 353s 353s +------------------------------------------------------------------------------+ 353s | unitizer for: extra/inpkg.R | 353s +------------------------------------------------------------------------------+ 353s 353s Pass Fail New 353s - - 1 353s ........................... 353s - - 1 353s 353s - New -------------------------------------------------------------------------- 353s 353s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 353s | [R]erun, [Q]uit, [H]elp)? 353s 353s # should fail normally, but return TRUE if run in fastlm 353s 353s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 353s > hidden_fun() 353s [1] TRUE 353s 353s unitizer> Q 353s 354s | No changes recorded. 354s | unitizer unchanged. 354s 354s > unitizer:::read_line_set_vals(c("Q")) 354s > try(unitize(in.pkg.file, state = in_pkg("ASDFASDFA"), interactive.mode = TRUE)) 354s 354s Error in loadNamespace(name) : there is no package called 'ASDFASDFA' 354s Error in in_pkg_to_env(x.raw@par.env, test.files) : 354s Unable to load "ASDFASDFA" namespace to use as parent environment; see `? 354s unitizerState` for instructions on how to specify a package namespace as a 354s parent environment for tests. 354s Error in as.state(state, test.files) : 354s Unable to convert `par.env` value to a namespace environment 354s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 354s Argument `state` could not be evaluated. 354s > 354s > # - "copy fastlm dir works" ---------------------------------------------------- 354s > 354s > sort(tolower(list.files("."))) 354s [1] "description" "man" "namespace" "r" 354s [5] "tests" "utzflm.rcheck" 354s > readLines(file.path(".", "DESCRIPTION"))[[5L]] # v0.1.0 354s [1] "Version: 0.1.0" 354s > update_fastlm(".", version = "0.1.1") 354s > readLines(file.path(".", "DESCRIPTION"))[[5L]] 354s [1] "Version: 0.1.1" 354s > update_fastlm(".", version = "0.1.2") 354s > readLines(file.path(".", "DESCRIPTION"))[[5L]] 354s [1] "Version: 0.1.2" 354s > 354s > # - "show_file" ---------------------------------------------------------------- 354s > 354s > f <- tempfile() 354s > cat("this is a\ntest code\nfile\n", file = f) 354s > file.show <- capture.output(show_file(f)) 354s > file.show[[1L]] 354s [1] "+---------------+" 354s > start.file <- grep("+---+-----------+", file.show, fixed = TRUE) 354s > length(start.file) # 2 354s [1] 2 354s > writeLines(file.show[start.file[[1L]]:start.file[[2L]]]) 354s +---+-----------+ 354s | 1 | this is a | 354s | 2 | test code | 354s | 3 | file | 354s +---+-----------+ 354s > unlink(f) 354s > 354s > # Run actual demo bits; note we want to force `interactive.mode=TRUE` so that 354s > # `read_line_vals` values are used as user input; note that until we fix 354s > # / rationalize how sinking behaves within unitizer when the standard streams 354s > # come in sunk, we won't be able to fully test everything, since for example 354s > # the display of the captured stdout just won't happen. 354s > 354s > # - "demo create worked" ------------------------------------------------------- 354s > 354s > # In tests, initial version of package should be 0.1.0; the test store 354s > # does not exist so it doesn't get overwritten with subsequent updates 354s > # Note the initial install happens in the test running script 354s > 354s > unitizer:::update_fastlm(".", version = "0.1.0") 354s > inst_pak(".") 355s > unitizer:::read_line_set_vals(c("Y", "Y", "Y", "Y", "Y")) 355s > untz <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 355s 355s +------------------------------------------------------------------------------+ 355s | unitizer for: unitizer/fastlm1.R | 355s +------------------------------------------------------------------------------+ 355s 355s Pass Fail New 355s - - 4 355s ........................... 355s - - 4 355s 355s - New -------------------------------------------------------------------------- 355s 355s | The 4 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 355s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 355s 355s # Assignments and calls to `library` are not considered tests by 355s # `unitizer` so you will not need to review them 355s 355s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 355s > dat <- data.frame(x = 1:100, y = (1:100)^2) 355s > res <- fastlm(dat$x, dat$y) 355s 355s # The `unitizer>` prompt is like the standard R prompt. You may 355s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 355s # `str(res)`. 355s # 355s # Once you are done reviewing, you need to tell `unitizer` you 355s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 355s 355s > res 355s intercept slope rsq 355s -1717.000 101.000 0.939 355s attr(,"class") 355s [1] "fastlm" 355s 355s unitizer> Y 355s 355s # There are three more tests to review; accept them with 'Y' 355s 355s > get_slope(res) 355s [1] 101 355s 355s unitizer> Y 355s 355s > get_rsq(res) 355s [1] 0.939 355s 355s unitizer> Y 355s 355s # This last test is expected to cause an error; press 'Y' to 355s # accept it so future checks can confirm the same error persists 355s 355s > fastlm(1:100, 1:10) 355s Error in fastlm(1:100, 1:10) : 355s Arguments `x` and `y` must be the same length. 355s 355s unitizer> Y 355s 355s = Finalize Unitizer ============================================================ 355s 355s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 355s | - Adding 4 out of 4 new tests 355s 355s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 355s 355s unitizer> Y 355s 355s | unitizer updated. 355s 355s > is(untz, "unitizer_result") 355s [1] TRUE 355s > print(untz) 355s Test File: tests/unitizer/fastlm1.R 355s Store ID: tests/unitizer/fastlm1.unitizer 355s 355s id call ignored status user reviewed 355s 1 1 library(utzflm, lib.loc = g... * New N FALSE 355s 2 2 dat <- data.frame(x = 1:100... * New N FALSE 355s 3 3 res <- fastlm(dat$x, dat$y) * New N FALSE 355s 4 4 res New Y TRUE 355s 5 5 get_slope(res) New Y TRUE 355s 6 6 get_rsq(res) New Y TRUE 355s 7 7 fastlm(1:100, 1:10) New Y TRUE 355s > # Re-running doesn't change unitizer 355s > untz2 <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 355s 355s | 4/4 tests passed; nothing to review. 355s 355s > print(untz2) 355s Test File: tests/unitizer/fastlm1.R 355s Store ID: tests/unitizer/fastlm1.unitizer 355s 355s id call ignored status user reviewed 355s 1 1 library(utzflm, lib.loc = g... * Passed Y FALSE 355s 2 2 dat <- data.frame(x = 1:100... * Passed Y FALSE 355s 3 3 res <- fastlm(dat$x, dat$y) * Passed Y FALSE 355s 4 4 res Passed Y FALSE 355s 5 5 get_slope(res) Passed Y FALSE 355s 6 6 get_rsq(res) Passed Y FALSE 355s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 355s 355s You chose NOT to save these changes to the unitizer store 355s > # Rejecting failed tests does not change unitizer 355s > update_fastlm(".", version = "0.1.1") 355s > inst_pak(".") 356s > 356s > unitizer:::read_line_set_vals(c("N", "N", "Y")) 356s > unitizer:::capture_output( 356s + untz3 <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 356s + ) 356s > print(untz3) 356s Test File: tests/unitizer/fastlm1.R 356s Store ID: tests/unitizer/fastlm1.unitizer 356s 356s id call ignored status user reviewed 356s 1 1 library(utzflm, lib.loc = g... * Failed N FALSE 356s 2 2 dat <- data.frame(x = 1:100... * Failed N FALSE 356s 3 3 res <- fastlm(dat$x, dat$y) * Failed N FALSE 356s 4 4 res Failed N TRUE 356s 5 5 get_slope(res) Failed N TRUE 356s 6 6 get_rsq(res) Passed Y FALSE 356s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 356s 356s You chose NOT to save these changes to the unitizer store 356s > 356s > # - "demo review" -------------------------------------------------------------- 356s > 356s > # review is always in interactive mode 356s > unitizer:::read_line_set_vals(c("5", "Q")) 356s > review(FLM.TEST.STORE) 356s 356s +------------------------------------------------------------------------------+ 356s | unitizer for: tests/unitizer/fastlm1.unitizer | 356s +------------------------------------------------------------------------------+ 356s 356s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 356s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 356s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 356s 4. res . . . . . . . . . . . . . . . . . . . . Passed:- 356s 5. get_slope(res) . . . . . . . . . . . . . . . . Passed:- 356s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 356s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 356s 356s | What test do you wish to review (input a test number, [U]nreviewed)? 356s 356s unitizer> 5 356s - Passed ----------------------------------------------------------------------- 356s 356s | The 4 tests in this section passed. Keep tests in store ([Y]es, [N]o, [P]rev, 356s | [B]rowse, [Q]uit, [H]elp)? 356s 356s # There are three more tests to review; accept them with 'Y' 356s 356s > get_slope(res) 356s [1] 101 356s 356s unitizer> Q 356s 356s | No changes recorded. 356s | unitizer unchanged. 356s 356s > 356s > # - "use.diff" ----------------------------------------------------------------- 356s > 356s > # Use this opportunity to make sure `use.diff=FALSE` works as intended 356s > unitizer:::read_line_set_vals("Q") 356s > unitize(FLM.TEST.FILE, interactive.mode = TRUE, use.diff = FALSE) 356s 356s +------------------------------------------------------------------------------+ 356s | unitizer for: unitizer/fastlm1.R | 356s +------------------------------------------------------------------------------+ 356s 356s Pass Fail 356s 2 2 356s ...................... 356s 2 2 356s 356s - Failed ----------------------------------------------------------------------- 356s 356s | The 2 tests in this section failed because the new evaluations do not match 356s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 356s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 356s 356s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 356s > dat <- data.frame(x = 1:100, y = (1:100)^2) 356s > res <- fastlm(dat$x, dat$y) 356s 356s # Our fast computations do not produce the same results as our 356s # original tests so they fail. If you need more detail than the 356s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 356s # 356s # You should reject these tests by typing 'N' at the prompt since 356s # they are incorrect. 356s 356s > res 356s intercept slope rsq 356s -3.54e+13 7.01e+11 9.39e-01 356s attr(,"class") 356s [1] "fastlm" 356s 356s | Value mismatch: 357s 357s [1] "Mean relative difference: 1.99e+10" 357s 357s | State mismatch; see `.NEW$state` and `.REF$state`. 357s 357s unitizer> Q 357s 357s | No changes recorded. 357s | unitizer unchanged. 357s 357s > unitizer:::read_line_set_vals(c(".DIFF$state", "Q")) 357s > 357s > unitize(FLM.TEST.FILE, interactive.mode = TRUE, use.diff = FALSE) 357s 357s +------------------------------------------------------------------------------+ 357s | unitizer for: unitizer/fastlm1.R | 357s +------------------------------------------------------------------------------+ 357s 357s Pass Fail 357s 2 2 357s ...................... 357s 2 2 357s 357s - Failed ----------------------------------------------------------------------- 357s 357s | The 2 tests in this section failed because the new evaluations do not match 357s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 357s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 357s 357s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 357s > dat <- data.frame(x = 1:100, y = (1:100)^2) 357s > res <- fastlm(dat$x, dat$y) 357s 357s # Our fast computations do not produce the same results as our 357s # original tests so they fail. If you need more detail than the 357s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 357s # 357s # You should reject these tests by typing 'N' at the prompt since 357s # they are incorrect. 357s 357s > res 357s intercept slope rsq 357s -3.54e+13 7.01e+11 9.39e-01 357s attr(,"class") 357s [1] "fastlm" 357s 357s | Value mismatch: 357s 357s [1] "Mean relative difference: 1.99e+10" 357s 357s | State mismatch; see `.NEW$state` and `.REF$state`. 357s 357s unitizer> .DIFF$state 357s | State mismatch: 357s 357s Attributes: < Component "search.path": 1 string mismatch > 357s 357s unitizer> Q 357s 357s | No changes recorded. 357s | unitizer unchanged. 357s 357s > 357s > # - "failing diff" ------------------------------------------------------------- 357s > 357s > unitizer:::read_line_set_vals("Q") 357s > mock(diffobj::diffObj, quote(stop("A failing diff."))) 357s > unitize(FLM.TEST.FILE, interactive.mode = TRUE) 357s 357s +------------------------------------------------------------------------------+ 357s | unitizer for: unitizer/fastlm1.R | 357s +------------------------------------------------------------------------------+ 357s 357s Pass Fail 357s 2 2 357s ...................... 357s 2 2 357s 357s - Failed ----------------------------------------------------------------------- 357s 357s | The 2 tests in this section failed because the new evaluations do not match 357s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 357s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 357s 357s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 357s > dat <- data.frame(x = 1:100, y = (1:100)^2) 357s > res <- fastlm(dat$x, dat$y) 357s 357s # Our fast computations do not produce the same results as our 357s # original tests so they fail. If you need more detail than the 357s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 357s # 357s # You should reject these tests by typing 'N' at the prompt since 357s # they are incorrect. 357s 357s > res 357s intercept slope rsq 357s -3.54e+13 7.01e+11 9.39e-01 357s attr(,"class") 357s [1] "fastlm" 357s 357s Error in diffObj(curr.err@.ref, curr.err@.new, tar.banner = make_cont(".ref"), : 357s A failing diff. 357s | Value: 357s 357s | State mismatch; see `.DIFF$state` for details. 357s 357s unitizer> Q 357s 357s | No changes recorded. 357s | unitizer unchanged. 357s 357s > unmock(diffobj::diffObj) 357s > 357s > # - "multi-accept" ------------------------------------------------------------- 357s > 357s > # Test what happens if we back out of a multi-accept 357s > 357s > unitizer:::read_line_set_vals(c("YY", "N", "Q")) 357s > unitize(FLM.TEST.FILE, interactive.mode = TRUE) 357s 357s +------------------------------------------------------------------------------+ 357s | unitizer for: unitizer/fastlm1.R | 357s +------------------------------------------------------------------------------+ 357s 357s Pass Fail 357s 2 2 357s ...................... 357s 2 2 357s 357s - Failed ----------------------------------------------------------------------- 357s 357s | The 2 tests in this section failed because the new evaluations do not match 357s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 357s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 357s 357s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 357s > dat <- data.frame(x = 1:100, y = (1:100)^2) 357s > res <- fastlm(dat$x, dat$y) 357s 357s # Our fast computations do not produce the same results as our 357s # original tests so they fail. If you need more detail than the 357s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 357s # 357s # You should reject these tests by typing 'N' at the prompt since 357s # they are incorrect. 357s 357s > res 357s intercept slope rsq 357s -3.54e+13 7.01e+11 9.39e-01 357s attr(,"class") 357s [1] "fastlm" 357s 357s | Value mismatch: 357s 357s < .ref > .new 357s @@ 1,4 @@ @@ 1,4 @@ 357s intercept slope rsq intercept slope rsq 357s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 357s attr(,"class") attr(,"class") 357s [1] "fastlm" [1] "fastlm" 357s 357s | State mismatch; see `.DIFF$state` for details. 357s 357s unitizer> YY 357s 357s 4. res . . . . . Failed:- 357s 5. get_slope(res) . Failed:- 357s 357s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 357s unitizer> N 357s 357s 357s # Our fast computations do not produce the same results as our 357s # original tests so they fail. If you need more detail than the 357s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 357s # 357s # You should reject these tests by typing 'N' at the prompt since 357s # they are incorrect. 357s 357s > res 357s intercept slope rsq 357s -3.54e+13 7.01e+11 9.39e-01 357s attr(,"class") 357s [1] "fastlm" 357s 357s | Value mismatch: 357s 357s < .ref > .new 357s @@ 1,4 @@ @@ 1,4 @@ 357s intercept slope rsq intercept slope rsq 357s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 357s attr(,"class") attr(,"class") 357s [1] "fastlm" [1] "fastlm" 357s 357s | State mismatch; see `.DIFF$state` for details. 357s 357s unitizer> Q 357s 357s | No changes recorded. 357s | unitizer unchanged. 357s 357s > 357s > # - "multi-input" -------------------------------------------------------------- 357s > 357s > # Or if we request to go to unreviewed when there are none 357s > unitizer:::read_line_set_vals(c("YY", "Y", "B", "U", "Q")) 357s > unitize(FLM.TEST.FILE, interactive.mode = TRUE) 357s 357s +------------------------------------------------------------------------------+ 357s | unitizer for: unitizer/fastlm1.R | 357s +------------------------------------------------------------------------------+ 357s 357s Pass Fail 357s 2 2 357s ...................... 357s 2 2 357s 357s - Failed ----------------------------------------------------------------------- 357s 357s | The 2 tests in this section failed because the new evaluations do not match 357s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 357s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 357s 357s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 357s > dat <- data.frame(x = 1:100, y = (1:100)^2) 357s > res <- fastlm(dat$x, dat$y) 357s 357s # Our fast computations do not produce the same results as our 357s # original tests so they fail. If you need more detail than the 357s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 357s # 357s # You should reject these tests by typing 'N' at the prompt since 357s # they are incorrect. 357s 357s > res 357s intercept slope rsq 357s -3.54e+13 7.01e+11 9.39e-01 357s attr(,"class") 357s [1] "fastlm" 357s 357s | Value mismatch: 357s 357s < .ref > .new 357s @@ 1,4 @@ @@ 1,4 @@ 357s intercept slope rsq intercept slope rsq 357s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 357s attr(,"class") attr(,"class") 357s [1] "fastlm" [1] "fastlm" 357s 357s | State mismatch; see `.DIFF$state` for details. 357s 357s unitizer> YY 357s 357s 4. res . . . . . Failed:- 357s 5. get_slope(res) . Failed:- 357s 357s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 357s unitizer> Y 357s 357s = Finalize Unitizer ============================================================ 357s 357s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 357s | - Replacing 2 out of 2 failed tests 357s 357s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 357s 357s unitizer> B 357s 357s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 357s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 357s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 357s 4. res . . . . . . . . . . . . . . . . . . . . Failed:Y 357s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:Y 357s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 357s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 357s 357s | What test do you wish to review (input a test number, [U]nreviewed)? 357s 357s unitizer> U 357s 357s | No unreviewed tests. 357s 357s = Finalize Unitizer ============================================================ 357s 357s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 357s | - Replacing 2 out of 2 failed tests 357s 357s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 357s 357s unitizer> Q 357s 357s | Changes discarded. 357s | unitizer unchanged. 357s 357s > 357s > # - "warn in parse" ------------------------------------------------------------ 357s > 357s > # Make sure parse warnings are issued 357s > unitizer:::read_line_set_vals(c("-2147483648L", "Q")) 357s > txt8 <- unitizer:::capture_output(unitize(FLM.TEST.FILE, 357s + interactive.mode = TRUE)) 358s > 358s > any(grepl("qualified with L", txt8$message)) 358s [1] TRUE 358s > 358s > # - "demo changes" ------------------------------------------------------------- 358s > # 358s > # Now actually accept the changes 358s > unitizer:::read_line_set_vals(c("Y", "Y", "Y")) 358s > untz5 <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 358s 358s +------------------------------------------------------------------------------+ 358s | unitizer for: unitizer/fastlm1.R | 358s +------------------------------------------------------------------------------+ 358s 358s Pass Fail 358s 2 2 358s ...................... 358s 2 2 358s 358s - Failed ----------------------------------------------------------------------- 358s 358s | The 2 tests in this section failed because the new evaluations do not match 358s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 358s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 358s 358s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 358s > dat <- data.frame(x = 1:100, y = (1:100)^2) 358s > res <- fastlm(dat$x, dat$y) 358s 358s # Our fast computations do not produce the same results as our 358s # original tests so they fail. If you need more detail than the 358s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 358s # 358s # You should reject these tests by typing 'N' at the prompt since 358s # they are incorrect. 358s 358s > res 358s intercept slope rsq 358s -3.54e+13 7.01e+11 9.39e-01 358s attr(,"class") 358s [1] "fastlm" 358s 358s | Value mismatch: 358s 358s < .ref > .new 358s @@ 1,4 @@ @@ 1,4 @@ 358s intercept slope rsq intercept slope rsq 358s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 358s attr(,"class") attr(,"class") 358s [1] "fastlm" [1] "fastlm" 358s 358s | State mismatch; see `.DIFF$state` for details. 358s 358s unitizer> Y 358s 358s # This one is also incorrect; reject with 'N' 358s 358s > get_slope(res) 358s [1] 7.01e+11 358s 358s | Value mismatch: 358s 358s < .ref > .new 358s @@ 1 @@ @@ 1 @@ 358s < [1] 101 > [1] 7.01e+11 358s 358s | State mismatch; see `.DIFF$state` for details. 358s 358s unitizer> Y 358s 358s = Finalize Unitizer ============================================================ 358s 358s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 358s | - Replacing 2 out of 2 failed tests 358s 358s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 358s 358s unitizer> Y 358s 358s | unitizer updated. 358s 358s > unitizer:::read_line_set_vals(NULL) 358s > 358s > # - "get_package_dir" ---------------------------------------------------------- 358s > 358s > # These were in t-get but we moved them here to avoid re-loading pkgs.R 358s > 358s > unitizer:::get_package_dir(f) # empty 358s character(0) 358s > test.dir.1 <- file.path(".", "utzflm.Rcheck", "utzflm", "R") 358s > identical( 358s + unitizer:::get_package_dir(test.dir.1), 358s + normalizePath(dirname(test.dir.1), winslash = "/") 358s + ) 358s [1] TRUE 358s > test.dir.2 <- file.path(".", "utzflm.Rcheck") 358s > identical( 358s + unitizer:::get_package_dir(file.path(test.dir.2, "tests", "tests.R")), 358s + normalizePath(file.path(test.dir.2, "utzflm"), winslash = "/") 358s + ) 358s [1] TRUE 358s > 358s PASS 358s Begin testing t-error.R 358s 358s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 358s Copyright (C) 2024 The R Foundation for Statistical Computing 358s Platform: s390x-ibm-linux-gnu (64-bit) 358s 358s R is free software and comes with ABSOLUTELY NO WARRANTY. 358s You are welcome to redistribute it under certain conditions. 358s Type 'license()' or 'licence()' for distribution details. 358s 358s R is a collaborative project with many contributors. 358s Type 'contributors()' for more information and 358s 'citation()' on how to cite R or R packages in publications. 358s 358s Type 'demo()' for some demos, 'help()' for on-line help, or 358s 'help.start()' for an HTML browser interface to help. 358s Type 'q()' to quit R. 358s 358s > source(file.path("_helper", "init.R")) 359s > 359s > # - "Test Error Diffs" --------------------------------------------------------- 359s > 359s > diffs <- new( 359s + "unitizerItemTestsErrorsDiffs", 359s + value = new("unitizerItemTestsErrorsDiff", 359s + txt = "value", err = TRUE, diff = diffobj::diffChr(1, 2)) 359s + ) 359s > diffs$value@diff@target 359s [1] 1 359s > diffs$value@diff@current 359s [1] 2 359s > try(diffs$values) 359s Error in .local(x, i, j, ...) : 359s Argument `i` must be one of c("value", "conditions", "output", "message", "aborted", "state") 359s > try(diffs[[NA]]) 359s Error in .local(x, i, j, ...) : 359s Argument `i` must be character(1L) and not NA 359s > err <- new( 359s + "unitizerItemTestsErrors", 359s + value = new( 359s + "unitizerItemTestError", compare.err = TRUE, value = c("compare", "error") 359s + ) ) 359s > # - "Show Test Error" ---------------------------------------------------------- 359s > 359s > is(unitizer:::as.Diffs(err)@value, "unitizerItemTestsErrorsDiff") 359s [1] TRUE 359s > 359s PASS 359s Begin testing t-exec.R 359s 359s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 359s Copyright (C) 2024 The R Foundation for Statistical Computing 359s Platform: s390x-ibm-linux-gnu (64-bit) 359s 359s R is free software and comes with ABSOLUTELY NO WARRANTY. 359s You are welcome to redistribute it under certain conditions. 359s Type 'license()' or 'licence()' for distribution details. 359s 359s R is a collaborative project with many contributors. 359s Type 'contributors()' for more information and 359s 'citation()' on how to cite R or R packages in publications. 359s 359s Type 'demo()' for some demos, 'help()' for on-line help, or 359s 'help.start()' for an HTML browser interface to help. 359s Type 'q()' to quit R. 359s 359s > source(file.path("_helper", "init.R")) 359s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("exec") 359s > 359s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 359s > 359s > # - "Invisible Expression" ----------------------------------------------------- 359s > 359s > e <- new.env() 359s > exp <- quote(x <- 1:30) 359s > all.equal(1:30, unitizer:::eval_user_exp(exp, e, global = glob)$value) 359s [1] TRUE 359s > 359s > # `eval_user_exp` must be evaluated outside of test_that; also note that by 359s > # design this will output stuff to stderr and stdout 359s > out.err <- capture.output(type = "message", out.std <- capture.output({ 359s + test.obj.s3 <- structure("hello", class = "test_obj") 359s + setClass("testObj", list(a = "character")) 359s + test.obj.s4 <- new("testObj", a = "goodday") 359s + print.test_obj <- function(x, ...) stop("Error in Print") 359s + setMethod("show", "testObj", function(object) stop("Error in Show")) 359s + fun_signal <- function() signalCondition(simpleError("Error in Function", 359s + sys.call())) 359s + fun_error <- function() stop("Error in function 2") 359s + fun_error_cond <- function() stop(simpleError("Error in function 2", 359s + sys.call())) 359s + fun_error_cond_call <- function() fun_error_cond() 359s + fun_s3 <- function() test.obj.s3 359s + fun_s4 <- function() test.obj.s4 359s + fun_msg <- function() message("This is a Message") 359s + fun_warn <- function() warning("This is a warning", immediate. = TRUE) 359s + eval.env <- sys.frame(sys.nframe()) 359s + ex0 <- unitizer:::eval_user_exp(quote(stop()), eval.env, 359s + global = glob) 359s + unitizer:::set_trace(ex0$trace) 359s + trace0 <- unitizer:::unitizer_traceback() 359s + ex1 <- unitizer:::eval_user_exp(quote(fun_signal()), eval.env, 359s + global = glob) 359s + unitizer:::set_trace(ex1$trace) 359s + trace1 <- unitizer:::unitizer_traceback() 359s + ex2 <- unitizer:::eval_user_exp(quote(fun_error()), eval.env, 359s + global = glob) 359s + unitizer:::set_trace(ex2$trace) 359s + trace2 <- unitizer:::unitizer_traceback() 359s + ex2a <- unitizer:::eval_user_exp(expression(fun_error()), 359s + eval.env, global = glob) 359s + unitizer:::set_trace(ex2a$trace) 359s + trace2a <- unitizer:::unitizer_traceback() 359s + ex6 <- unitizer:::eval_user_exp(quote(fun_error_cond()), 359s + eval.env, global = glob) 359s + unitizer:::set_trace(ex6$trace) 359s + trace6 <- unitizer:::unitizer_traceback() 359s + ex7 <- unitizer:::eval_user_exp(quote(fun_error_cond_call()), 359s + eval.env, global = glob) 359s + unitizer:::set_trace(ex7$trace) 359s + trace7 <- unitizer:::unitizer_traceback() 359s + ex3 <- unitizer:::eval_user_exp(quote(fun_s3()), eval.env, 359s + global = glob) 359s + unitizer:::set_trace(ex3$trace) 359s + trace3 <- unitizer:::unitizer_traceback() 359s + ex3a <- unitizer:::eval_user_exp(expression(fun_s3()), eval.env, 359s + global = glob) 359s + unitizer:::set_trace(ex3a$trace) 359s + trace3a <- unitizer:::unitizer_traceback() 359s + ex4 <- unitizer:::eval_user_exp(quote(fun_s4()), eval.env, 359s + global = glob) 359s + ex4a <- unitizer:::eval_user_exp(expression(fun_s4()), eval.env, 359s + global = glob) 359s + unitizer:::set_trace(ex4a$trace) 359s + trace4a <- unitizer:::unitizer_traceback() 359s + ex5 <- unitizer:::eval_user_exp(quote(sum(1:20)), eval.env, 359s + global = glob) 359s + ex9 <- unitizer:::eval_user_exp(quote(fun_warn()), eval.env, 359s + global = glob) 359s + ex10 <- unitizer:::eval_user_exp(quote(fun_msg()), eval.env, 359s + global = glob) 359s + ex11 <- unitizer:::eval_user_exp(quote((function() quote(stop("shouldn't error")))()), 359s + eval.env, global = glob) 359s + })) 359s > # NOTE: deparsed test values generated with unitizer:::deparse_mixed 359s > 359s > # - "User Expression Evaluation" ----------------------------------------------- 359s > 359s > # a condition error, signaled, not stop (hence no aborted, etc.) 359s > identical(ex1, rds(100)) 359s [1] TRUE 359s > # a stop 359s > identical(ex2, rds(200)) 359s [1] TRUE 359s > # ex3 and ex3a are a total PITA because the calls need to be manually copied 359s > # b/c they don't deparse properly even with control="all", the trace and 359s > # call component loose the `structure` part in the quoted portions... 359s > # a stop in print; 359s > identical(ex3, rds(300)) 359s [1] TRUE 359s > identical(ex3a, rds(400)) 359s [1] TRUE 359s > # S4 objects; these originally caused problems since they don't deparse 359s > identical(ex4, rds(500)) 359s [1] TRUE 359s > identical(ex4a, rds(600)) 359s [1] TRUE 359s > # a normal expression 359s > identical(ex5, rds(700)) 359s [1] TRUE 359s > identical(ex9, rds(800)) 359s [1] TRUE 359s > all.equal(ex10, rds(900)) # not sure why identical doesn't work here 359s [1] TRUE 359s > # expect_false(ex11$aborted) 359s > ex11$aborted # FALSE 359s [1] FALSE 359s > 359s > # - "Trace Setting" ------------------------------------------------------------ 359s > 359s > identical(trace0, trace1) 359s [1] TRUE 359s > # expect_identical(trace2, list("stop(\"Error in function 2\")", 359s > # "fun_error()")) 359s > trace2 359s [[1]] 359s [1] "stop(\"Error in function 2\")" 359s 359s [[2]] 359s [1] "fun_error()" 359s 359s > trace6 359s [[1]] 359s [1] "stop(simpleError(\"Error in function 2\", sys.call()))" 359s 359s [[2]] 359s [1] "fun_error_cond()" 359s 359s > trace7 359s [[1]] 359s [1] "stop(simpleError(\"Error in function 2\", sys.call()))" 359s 359s [[2]] 359s [1] "fun_error_cond()" 359s 359s [[3]] 359s [1] "fun_error_cond_call()" 359s 359s > trace3a 359s [[1]] 359s [1] "stop(\"Error in Print\")" 359s 359s [[2]] 359s [1] "print.test_obj(\"hello\")" 359s 359s [[3]] 359s [1] "print(\"hello\")" 359s 359s > 359s > # needed to tweak this one so it would pass in R-devel 3.4.1 359s > # expect_true(all(mapply(function(x, y) grepl(y, x), trace4a, list("stop\\(\"Error in Show\"\\)", 359s > # "show\\(.*\"testObj\".*\\)", "show\\(.*\"testObj\".*\\)")))) 359s > all( 359s + mapply( 359s + function(x, y) grepl(y, x), 359s + trace4a, 359s + list( 359s + "stop\\(\"Error in Show\"\\)", 359s + "show\\(.*\"testObj\".*\\)", "show\\(.*\"testObj\".*\\)") 359s + ) ) 359s [1] TRUE 359s > # - "Clean Top Level Message" -------------------------------------------------- 359s > 359s > old.width <- options(width = 80L) 359s > a <- unitizer:::eval_with_capture( 359s + expression(stop("short stop message")), global = glob 359s + ) 359s > b <- unitizer:::eval_with_capture( 359s + expression(stop("short stop .* with regex message")), global = glob 359s + ) 359s > c <- unitizer:::eval_with_capture( 359s + expression(stop("this is a long error message that is supposed to cause R to add a new line after the error: part")), 359s + global = glob 359s + ) 359s > d <- unitizer:::eval_with_capture( 359s + expression(warning("short warning message")), global = glob 359s + ) 359s > e <- unitizer:::eval_with_capture( 359s + expression(warning("short warning message .* with regex")), global = glob 359s + ) 359s > f <- unitizer:::eval_with_capture( 359s + expression( 359s + warning("this is a long error message that is supposed to cause R to add a new line after the error: part") 359s + ), 359s + global = glob 359s + ) 359s > g <- unitizer:::eval_with_capture( 359s + quote(stop("short stop message")), global = glob 359s + ) 359s > h <- unitizer:::eval_with_capture( 359s + quote(stop("short stop .* with regex message")), global = glob 359s + ) 359s > i <- unitizer:::eval_with_capture( 359s + quote(stop("this is a long error message that is supposed to cause R to add a new line after the error: part")), 359s + global = glob 359s + ) 359s > j <- unitizer:::eval_with_capture( 359s + quote(warning("short warning message")), global = glob 359s + ) 359s > k <- unitizer:::eval_with_capture( 359s + quote(warning("short warning message .* with regex")), global = glob 359s + ) 359s > l <- unitizer:::eval_with_capture( 359s + quote(warning("this is a long error message that is supposed to cause R to add a new line after the error: part")), 359s + global = glob 359s + ) 359s > m <- unitizer:::eval_with_capture(expression("a"/3), global = glob) 359s > exp.q <- quote({ 359s + fun <- function() warning("error in fun") 359s + message("boo hay \n there \n") 359s + warning("this is a fairly long warning wladsfasdfasd that might wrap if we keep typing humpty dumpty sat on a wall and had a big fall") 359s + warning("ashorter warning blah") 359s + message("boo hay \n there \n") 359s + warning() 359s + fun() 359s + suppressWarnings(warning("quiet warn")) 359s + message("boo hay \n there \n") 359s + error(3) 359s + }) 359s > x <- unitizer:::eval_with_capture(exp.q, global = glob) 359s > exp.exp <- expression({ 359s + fun <- function() warning("error in fun") 359s + message("boo hay \n there \n") 359s + warning("this is a fairly long warning wladsfasdfasd that might wrap if we keep typing humpty dumpty sat on a wall and had a big fall") 359s + warning("ashorter warning blah") 359s + message("boo hay \n there \n") 359s + warning() 359s + fun() 359s + suppressWarnings(warning("quiet warn")) 359s + message("boo hay \n there \n") 359s + error(3) 359s + }) 359s > y <- unitizer:::eval_with_capture(exp.exp, global = glob) 359s > options(old.width) 359s > 359s > a$message 359s [1] "Error: short stop message\n" 359s > b$message 359s [1] "Error: short stop .* with regex message\n" 359s > c$message 359s [1] "Error: \n this is a long error message that is supposed to cause R to add a new line after the error: part\n" 359s > d$message 359s [1] "Warning: short warning message\n" 359s > e$message 359s [1] "Warning: short warning message .* with regex\n" 359s > f$message 359s [1] "Warning:\n this is a long error message that is supposed to cause R to add a new line after the error: part\n" 359s > g$message 359s [1] "Error: short stop message\n" 359s > h$message 359s [1] "Error: short stop .* with regex message\n" 359s > i$message 359s [1] "Error: \n this is a long error message that is supposed to cause R to add a new line after the error: part\n" 359s > j$message 359s [1] "Warning: short warning message\n" 359s > k$message 359s [1] "Warning: short warning message .* with regex\n" 359s > l$message 359s [1] "Warning:\n this is a long error message that is supposed to cause R to add a new line after the error: part\n" 359s > m$message 359s [1] "Error in \"a\"/3 : non-numeric argument to binary operator\n" 359s > 359s > # `sub` needed due to inconsistencies in R 3.4 and 3.3 for top level error 359s > # messages 359s > writeLines(sub("\\bError.*: ", "", x$message)) 359s boo hay 359s there 359s 359s Warning: 359s this is a fairly long warning wladsfasdfasd that might wrap if we keep typing humpty dumpty sat on a wall and had a big fall 359s Warning: ashorter warning blah 359s boo hay 359s there 359s 359s Warning: 359s Warning in fun() : error in fun 359s boo hay 359s there 359s 359s could not find function "error" 359s 359s > writeLines(sub("\\bError.*: ", "", y$message)) 359s boo hay 359s there 359s 359s Warning: 359s this is a fairly long warning wladsfasdfasd that might wrap if we keep typing humpty dumpty sat on a wall and had a big fall 359s Warning: ashorter warning blah 359s boo hay 359s there 359s 359s Warning: 359s Warning in fun() : error in fun 359s boo hay 359s there 359s 359s could not find function "error" 359s 359s > 359s > 359s PASS 359s Begin testing t-get.R 359s 359s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 359s Copyright (C) 2024 The R Foundation for Statistical Computing 359s Platform: s390x-ibm-linux-gnu (64-bit) 359s 359s R is free software and comes with ABSOLUTELY NO WARRANTY. 359s You are welcome to redistribute it under certain conditions. 359s Type 'license()' or 'licence()' for distribution details. 359s 359s R is a collaborative project with many contributors. 359s Type 'contributors()' for more information and 359s 'citation()' on how to cite R or R packages in publications. 359s 359s Type 'demo()' for some demos, 'help()' for on-line help, or 359s 'help.start()' for an HTML browser interface to help. 359s Type 'q()' to quit R. 359s 360s > source(file.path("_helper", "init.R")) 360s > source(file.path("aammrtf", "mock.R")) 360s > 360s > toy.path <- file.path("_helper", "unitizers", "misc.unitizer") 360s > toy.stor <- readRDS(file.path(toy.path, "data.rds")) 360s > 360s > # - "Error Cases" -------------------------------------------------------------- 360s > 360s > try(get_unitizer(1)) 360s Error in get_unitizer.default(1) : 360s No method defined for object of class "numeric"; make sure that the specified `store.id` is a reference to a valid unitizer store and had defined `get_unitizer` and `set_unitizer` methods. 360s > try(get_unitizer(letters)) 360s Error in get_unitizer.character(letters) : 360s Argument `store.id` must be a 1 length character vector 360s > try(get_unitizer("_helper")) 360s Error in get_unitizer.character("_helper") : 360s Argument `store.id` does not appear to refer to a unitizer directory 360s > try(get_unitizer("t-get.R")) 360s Error in get_unitizer.character("t-get.R") : 360s Argument `store.id` does not appear to refer to a unitizer directory 360s > try(set_unitizer(1)) 360s Error in set_unitizer.default(1) : 360s No method defined for object of class "numeric"; make sure that the specified `store.id` is a reference to a valid unitizer store and had defined `get_unitizer` and `set_unitizer` methods. 360s > try(set_unitizer(letters)) 360s Error in set_unitizer.character(letters) : 360s Argument `store.id` must be a 1 length character vector 360s > # 4.3 changed reporting of missing argument errors 360s > tryCatch(set_unitizer("a"), error=function(e) conditionMessage(e)) 360s [1] "argument \"unitizer\" is missing, with no default" 360s > try(set_unitizer("a", "blergh")) 360s Error in set_unitizer.character("a", "blergh") : 360s Argument `unitizer` must be a unitizer 360s > !file.exists("a") # TRUE 360s [1] TRUE 360s > try(suppressWarnings(set_unitizer("tests/# ;!./# \\/", toy.stor))) 360s Error in set_unitizer.character("tests/# ;!./# \\/", toy.stor) : 360s Could not create `store.id`; make sure it is a valid file name; see warning for details 360s > 360s > # - "Get works as expected" ---------------------------------------------------- 360s > 360s > tmp.dir <- tempfile() 360s > dir.create(tmp.dir) 360s > tmp.sub.dir <- paste0(tmp.dir, "/get.test.dir") 360s > tmp.fake.utz <- paste0(tmp.dir, "/fake.unitizer") 360s > 360s > # expect_false(get_unitizer("asldkfjskfa")) 360s > get_unitizer("asldkfjskfa") # FALSE 360s [1] FALSE 360s > all.equal(get_unitizer(toy.path), toy.stor) 360s [1] TRUE 360s > is(toy.stor, "unitizer") 360s [1] TRUE 360s > dir.create(tmp.fake.utz) 360s > fake.utz <- file.path(tmp.fake.utz, "data.rds") 360s > cat("# this is not an RDS\n", file = fake.utz) 360s > # expect_error(capture.output(get_unitizer(tmp.fake.utz), type = "message"), 360s > # "Failed loading unitizer") 360s > try(capture.output(get_unitizer(tmp.fake.utz), type = "message")) 360s Error in get_unitizer.character(tmp.fake.utz) : 360s Failed loading unitizer; see prior error messages for details 360s > 360s > tmp.sub.dir <- paste0(tmp.dir, "/get.test.dir") 360s > tmp.sub.dir2 <- paste0(tmp.dir, "/get.test.dir2") 360s > tmp.sub.dir3 <- paste0(tmp.dir, "/load.dirs") 360s > 360s > # - "Set works as expected" ---------------------------------------------------- 360s > 360s > dir.create(tmp.sub.dir) 360s > set_unitizer(tmp.sub.dir, toy.stor) 360s [1] TRUE 360s > all.equal(readRDS(paste0(tmp.sub.dir, "/data.rds")), toy.stor) 360s [1] TRUE 360s > just.a.file <- tempfile() 360s > on.exit(unlink(just.a.file)) 360s > cat("just a file\n", file = just.a.file) 360s > err <- capture.output(try(set_unitizer(just.a.file, toy.stor)), type='message') 360s > any(grepl('not a directory', err)) 360s [1] TRUE 360s > 360s > # - "load/store_unitizer" ------------------------------------------------------ 360s > 360s > # Several different stores in different states (i.e. requiring upgrade, 360s > # not unitizers, etc.) 360s > dir.create(tmp.sub.dir3) 360s > make.path <- lapply(file.path(tmp.sub.dir3, dir("_helper/ref-objs/load/")), 360s + dir.create) 360s > if (!all(unlist(make.path))) stop("Failed making paths") 360s > file.copy(list.files("_helper/ref-objs/load", full.names = TRUE), tmp.sub.dir3, 360s + recursive = TRUE) 360s [1] TRUE TRUE TRUE TRUE TRUE TRUE 360s > par.frame <- new.env() 360s > store.ids <- as.list(list.files(tmp.sub.dir3, full.names = TRUE)) 360s > 360s > # must be upgraded, but cannot 360s > load.try <- unitizer:::capture_output( 360s + try( 360s + unitizer:::load_unitizers(store.ids, rep(NA_character_, 360s + length(store.ids)), par.frame = par.frame, interactive.mode = FALSE, 360s + mode = "unitize", force.upgrade = FALSE, show.progress=0L, transcript=FALSE 360s + ) ) ) 360s > any(grepl('could not be loaded', load.try$message)) 360s [1] TRUE 360s > any(grepl('could not be upgraded', load.try$message)) 360s [1] TRUE 360s > any(grepl('Cannot proceed', load.try$message)) 360s [1] TRUE 360s > 360s > # handle failure in store_unitizer, we just try this on one of the store ids 360s > 360s > out <- unitizer:::capture_output( 360s + unitizer:::load_unitizers( 360s + store.ids[4], rep(NA_character_, length(store.ids))[4], 360s + par.frame = par.frame, interactive.mode = FALSE, mode = "unitize", 360s + force.upgrade = TRUE, show.progress=0L, transcript=FALSE 360s + ) 360s + ) 360s > any(grepl('Upgraded test file does not match original', out$message)) 360s [1] TRUE 360s > 360s > # try weird store ids 360s > out <- unitizer:::capture_output( 360s + invalid.store <- try( 360s + unitizer:::load_unitizers( 360s + list(structure("hello", class = "unitizer_error_store")), 360s + NA_character_, par.frame = par.frame, 360s + interactive.mode = FALSE, mode = "unitize", force.upgrade = FALSE, 360s + show.progress=0L, transcript=FALSE 360s + ) ) 360s + ) 360s > inherits(invalid.store, "try-error") 360s [1] TRUE 360s > any(grepl("returned something other than", out$message)) 360s [1] TRUE 360s > 360s > # Load mix of loadable and not loadable objects 360s > glob <- suppressWarnings(unitizer:::unitizerGlobal$new()) 360s > # with warning: "does not exist|test file does not") 360s > out <- unitizer:::capture_output( 360s + untzs <- try( 360s + unitizer:::load_unitizers( 360s + store.ids, rep(NA_character_, length(store.ids)), par.frame = par.frame, 360s + interactive.mode = FALSE, mode = "unitize", force.upgrade = TRUE, 360s + global = glob, show.progress=0L, transcript=FALSE 360s + ) ) ) 361s > inherits(untzs, "try-error") 361s [1] TRUE 361s > any(grepl('could not be loaded', out$message)) 361s [1] TRUE 361s > any(grepl('could not be upgraded', out$message)) 361s [1] TRUE 361s > any(grepl('Cannot proceed', out$message)) 361s [1] TRUE 361s > 361s > # Test failure of storage of a loaded and upgraded unitizers 361s > 361s > untzs <- unitizer:::load_unitizers( 361s + store.ids[4], NA_character_, par.frame = par.frame, 361s + interactive.mode = FALSE, mode = "unitize", force.upgrade = TRUE, 361s + global = glob, show.progress=0L, transcript=FALSE 361s + ) 361s Warning in addSlot(object, "cons", NULL) : 361s Slot `cons` does not exist in current version of `unitizer` so not added to object. 361s Warning in addSlot(object, "jump.to.test", 0L) : 361s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 361s Warning in unitizer:::load_unitizers(store.ids[4], NA_character_, par.frame = par.frame, : 361s Upgraded test file does not match original test file ('internals.R' vs 'NA'). 361s > mock(unitizer:::set_unitizer, quote(stop("set fail"))) 361s > try(unitizer:::store_unitizer(untzs[[1]])) 361s Error in set_unitizer(unitizer@id, unitizer) : set fail 361s Error in unitizer:::store_unitizer(untzs[[1]]) : 361s Error attempting to save unitizer, see previous messages. 361s > unmock(unitizer:::set_unitizer) 361s > 361s > # Try reloading already loaded unitisers 361s > reload <- unitizer:::as.list(untzs) 361s > # this creates a global object, hence warning 361s > untzs1a <- unitizer:::load_unitizers( 361s + reload, rep(NA_character_, length(reload)), par.frame = par.frame, 361s + interactive.mode = FALSE, mode = "unitize", force.upgrade = FALSE, 361s + show.progress=0L, transcript=FALSE 361s + ) 361s Warning in .Object$initialize(...) : 361s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 361s > all(vapply(unitizer:::as.list(untzs1a), is, logical(1L), "unitizer")) 361s [1] TRUE 361s > 361s > # misc tests 361s > # warning Instantiated global object without 361s > 361s > untzs2 <- unitizer:::load_unitizers( 361s + list(tmp.sub.dir2), NA_character_, par.frame, interactive.mode = FALSE, 361s + mode = "unitize", force.upgrade = FALSE, show.progress=0L, transcript=FALSE 361s + ) 361s Warning in .Object$initialize(...) : 361s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 361s > is(untzs2[[1L]], "unitizer") 361s [1] TRUE 361s > identical(parent.env(untzs2[[1L]]@zero.env), par.frame) 361s [1] TRUE 361s > 361s > # something that won't get reset on load so we can check our re-load 361s > untzs2[[1L]]@eval.time <- 33 361s > unitizer:::store_unitizer(untzs2[[1L]]) 361s | unitizer updated. 361s 361s > 361s > # warning Instantiated global object without 361s > untzs2.1 <- unitizer:::load_unitizers( 361s + list(tmp.sub.dir2), NA_character_, par.frame, interactive.mode = FALSE, 361s + mode = "unitize", force.upgrade = FALSE, show.progress=0L, transcript=FALSE 361s + ) 361s Warning in .Object$initialize(...) : 361s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 361s > untzs2.1[[1L]]@eval.time # 33 361s [1] 33 361s > unlink(c(tmp.sub.dir2, tmp.sub.dir3, tmp.sub.dir), recursive = TRUE) 361s > 361s > # - "is_package" --------------------------------------------------------------- 361s > 361s > unitizer:::is_package_dir(system.file(package = "stats")) 361s [1] TRUE 361s > unitizer:::is_package_dir(system.file(package = "methods")) 361s [1] TRUE 361s > 361s > ## Seems like some change now tests no longer installed by default with 361s > ## packages, at least in the unix distros, so can't easily test with 361s > ## has.tests==TRUE 361s > 361s > unitizer:::pretty_path(file.path(system.file(package = "stats"), 361s + "DESCRIPTION")) 361s [1] "package:stats/DESCRIPTION" 361s > old.wd <- getwd() 361s > setwd(system.file(package = "stats")) 361s > unitizer:::pretty_path(file.path(system.file(package = "stats"), "DESCRIPTION")) 361s [1] "DESCRIPTION" 361s > unitizer:::pretty_path(file.path(system.file(package = "stats"))) 361s [1] "." 361s > setwd(old.wd) 361s > 361s > # just picked some folder we know will not work (No Desc) 361s > unitizer:::is_package_dir(file.path(system.file(package = "stats"), "R")) 361s [1] "No DESCRIPTION file" 361s > unitizer:::is_package_dir("ASDFASDF") 361s [1] "not an existing directory" 361s > unitizer:::is_package_dir(file.path(system.file(package = "unitizer"), 361s + "expkg", "baddescription1")) 361s [1] "DESCRIPTION file did not have a package name entry" 361s > # *get_*package_dir 361s > pkg.f <- file.path(system.file(package = "unitizer"), "tests", 361s + "interactive", "run.R") 361s > length(unitizer:::get_package_dir(pkg.f)) == 1L 361s [1] TRUE 361s > length(unitizer:::get_package_dir(dirname(pkg.f))) == 1L 361s [1] TRUE 361s > f <- tempfile() 361s > cat("helloworld", file = f) 361s > length(unitizer:::get_package_dir(f)) == 0L 361s [1] TRUE 361s > unlink(f) 361s > 361s > # some more tests moved to t-demo.R to avoid reloading pkgs 361s > 361s > # - "is_unitizer_dir" ---------------------------------------------------------- 361s > 361s > base.dir <- file.path(system.file(package = "unitizer"), "expkg", "infer") 361s > unitizer:::is_unitizer_dir(base.dir) # FALSE 361s [1] FALSE 361s > unitizer:::is_unitizer_dir( 361s + file.path(base.dir, "tests", "unitizer", "infer.unitizer") 361s + ) 361s [1] TRUE 361s > # - "infer_unitizer_location" -------------------------------------------------- 361s > 361s > infer <- function(...) infer_unitizer_location(..., interactive.mode = FALSE) 361s > base.dir <- file.path(system.file(package = "unitizer"), "expkg", "infer") 361s > 361s > # Verify package is still in state we built tests on; need to sort b/c 361s > # different platforms have different lexical sorts 361s > identical( 361s + sort(c("aaa.R", "aaa.unitizer", "abc.R", "abc.unitizer", "inf.R", 361s + "inf.unitizer", "infer.R", "infer.unitizer", "zzz.R", "zzz.unitizer")), 361s + list.files(file.path(base.dir, "tests", "unitizer")) 361s + ) 361s [1] TRUE 361s > # Package dir 361s > unitizer:::capture_output(inf <- infer(base.dir)) 361s > basename(inf) 361s [1] "infer.R" 361s > unitizer:::capture_output(inf <- infer(base.dir, type = "d")) 361s > basename(inf) 361s [1] "unitizer" 361s > unitizer:::capture_output(inf <- infer(base.dir, type = "u")) 361s > basename(inf) 361s [1] "infer.unitizer" 361s > 361s > inf.dir <- infer(file.path(base.dir, "*")) # warn 361s Warning in infer_unitizer_location.character(..., interactive.mode = FALSE) : 361s 5 possible targets; too many to unambiguously infer desired file 361s > identical(file.path(base.dir, "*"), inf.dir) 361s [1] TRUE 361s > 361s > unitizer:::capture_output(inf <- infer(file.path(base.dir, "z"))) 361s > basename(inf) 361s [1] "zzz.R" 361s > unitizer:::capture_output(inf <- infer(file.path(base.dir, "z"), type = "u")) 361s > basename(inf) 361s [1] "zzz.unitizer" 361s > 361s > # Normal dir 361s > base.dir2 <- file.path(base.dir, "tests", "unitizer") 361s > # note don't need * to generate warning 361s > out <- unitizer:::capture_output(inf.dir2 <- infer(base.dir2)) # warn 361s > any(grepl("5 possible targets", out$message)) 361s [1] TRUE 361s > identical(base.dir2, inf.dir2) 361s [1] TRUE 361s > out <- unitizer:::capture_output(infer(file.path(base.dir2, "a"))) 361s > any(grepl("2 possible targets", out$message)) 361s [1] TRUE 361s > out <- unitizer:::capture_output(infer(file.path(base.dir2, "a"), type = "u")) 361s > any(grepl("2 possible targets", out$message)) 361s [1] TRUE 361s > out <- 361s + unitizer:::capture_output(fname <- basename(infer(file.path(base.dir2, "z")))) 361s > fname 361s [1] "zzz.R" 361s > any(grepl('Inferred test file location:', out)) 361s [1] TRUE 361s > out <- unitizer:::capture_output( 361s + fname <- basename(infer(file.path(base.dir2, "z"), type="u")) 361s + ) 361s > fname 361s [1] "zzz.unitizer" 361s > any(grepl('Inferred unitizer location:', out)) 361s [1] TRUE 361s > 361s > # Random file without setting working dir first, in order for this to work 361s > # non-interactivel we need it to work with the R CMD check dir structure, 361s > # and possibly with the covr dir structure 361s > if (interactive()) infer("tests2") 361s > 361s > # Interactive mode 361s > unitizer:::read_line_set_vals(c("26", "Q")) 361s > # warn/output 361s > select <- unitizer:::infer_unitizer_location( 361s + file.path(base.dir, "*"), type = "f", interactive.mode = TRUE 361s + ) 361s Possible matching files from "tests/unitizer": 361s 1: aaa.R 361s 2: abc.R 361s 3: inf.R 361s 4: infer.R 361s 5: zzz.R 361s unitizer> 26 361s | Type a number in `1:5` at the prompt 361s [1] 26 361s unitizer> Q 361s 361s No file selected 361s Warning in infer_unitizer_location.character(file.path(base.dir, "*"), type = "f", : 361s Invalid user selection 361s > identical(select, file.path(base.dir, "*")) 361s [1] TRUE 361s > 361s > unitizer:::read_line_set_vals(c("5")) 361s > # output 361s > sel.loc <- unitizer:::infer_unitizer_location(file.path(base.dir, 361s + "*"), type = "f", interactive.mode = TRUE) 361s Possible matching files from "tests/unitizer": 361s 1: aaa.R 361s 2: abc.R 361s 3: inf.R 361s 4: infer.R 361s 5: zzz.R 361s unitizer> 5 361s Selected file: zzz.R 361s > basename(sel.loc) 361s [1] "zzz.R" 361s > unitizer:::read_line_set_vals(NULL) 361s > 361s > # Non standard inferences 361s > # warn 361s > out <- unitizer:::capture_output( 361s + unitizer:::infer_unitizer_location(NULL, interactive = FALSE) 361s + ) 361s > any(grepl("too many to unambiguously", out$message)) 361s [1] TRUE 361s > 361s > fake.class <- structure(list(), class = "thisclassdoesn'texist") 361s > identical(infer(fake.class), fake.class) 361s [1] TRUE 361s > 361s > # no match since file can't exist (warn) 361s > f <- tempfile() 361s > out <- capture.output( 361s + invisible(unitizer:::infer_unitizer_location(f)), type='message' 361s + ) 361s > any(grepl("No possible matching files", out)) 361s [1] TRUE 361s > 361s > 361s > unlink(tmp.dir, recursive = TRUE) 361s > 361s > 361s PASS 361s Begin testing t-global.R 361s 361s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 361s Copyright (C) 2024 The R Foundation for Statistical Computing 361s Platform: s390x-ibm-linux-gnu (64-bit) 361s 361s R is free software and comes with ABSOLUTELY NO WARRANTY. 361s You are welcome to redistribute it under certain conditions. 361s Type 'license()' or 'licence()' for distribution details. 361s 361s R is a collaborative project with many contributors. 361s Type 'contributors()' for more information and 361s 'citation()' on how to cite R or R packages in publications. 361s 361s Type 'demo()' for some demos, 'help()' for on-line help, or 361s 'help.start()' for an HTML browser interface to help. 361s Type 'q()' to quit R. 361s 361s > source(file.path("_helper", "init.R")) 361s > 361s > # Most tests involving global are scattered all over the place, just putting a 361s > # few extra ones that are very specifically about global here 361s > # 361s > # - "Singleton Implementation Working" ----------------------------------------- 361s > 361s > invisible(unitizer:::unitizerGlobal$new()) # warn 361s Warning in .Object$initialize(...) : 361s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 361s > glob.first <- unitizer:::unitizerGlobal$new(set.global = TRUE) 361s > try(unitizer:::unitizerGlobal$new(set.global = TRUE)) 361s Error in .Object$initialize(...) : 361s Internal Error: global tracking object already exists; this should never happen; contact maintainer 361s > try(unitizer:::unitizerGlobal$new()) 361s Error in .Object$initialize(...) : 361s Internal Error: global tracking object already exists; this should never happen; contact maintainer 361s > glob.first$release() 361s > 361s > # - "Dummy Display" ------------------------------------------------------------ 361s > 361s > show(new("unitizerDummy")) # not recorded 361s 361s > 361s > # - "Disable / Enable" --------------------------------------------------------- 361s > 361s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 361s > glob$disable() 361s An object of class "unitizerGlobalStatus" 361s Slot "search.path": 361s [1] 0 361s 361s Slot "options": 361s [1] 0 361s 361s Slot "working.directory": 361s [1] 0 361s 361s Slot "random.seed": 361s [1] 0 361s 361s Slot "namespaces": 361s [1] 0 361s 361s > glob$enable(c(search.path = 2L)) # warn state setting 361s Warning in glob$enable(c(search.path = 2L)) : 361s State setting for `search.path` has already been disabled and cannot be re-enabled 361s An object of class "unitizerGlobalStatus" 361s Slot "search.path": 361s [1] 0 361s 361s Slot "options": 361s [1] 0 361s 361s Slot "working.directory": 361s [1] 0 361s 361s Slot "random.seed": 361s [1] 0 361s 361s Slot "namespaces": 361s [1] 0 361s 361s > 361s > 361s PASS 361s Begin testing t-handledruns.R 362s 362s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 362s Copyright (C) 2024 The R Foundation for Statistical Computing 362s Platform: s390x-ibm-linux-gnu (64-bit) 362s 362s R is free software and comes with ABSOLUTELY NO WARRANTY. 362s You are welcome to redistribute it under certain conditions. 362s Type 'license()' or 'licence()' for distribution details. 362s 362s R is a collaborative project with many contributors. 362s Type 'contributors()' for more information and 362s 'citation()' on how to cite R or R packages in publications. 362s 362s Type 'demo()' for some demos, 'help()' for on-line help, or 362s 'help.start()' for an HTML browser interface to help. 362s Type 'q()' to quit R. 362s 362s > source(file.path("_helper", "init.R")) 362s > 362s > # - "Ensure we get warning if we try to run in handlers" ----------------------- 362s > 362s > try(unitize("_helper/unitizers/trivial.R")) 362s 362s Warning in check_call_stack() : 362s It appears you are running unitizer inside an error handling function such as 362s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 362s couraged as it may cause unpredictable behavior from unitizer in the event tests 362s produce conditions / errors. We strongly recommend you re-run your tests 362s outside of such handling functions. 362s Warning in history_capt(history, interactive.mode) : 362s Unable to capture history in non-interactive mode. 362s | 4/4 tests passed; nothing to review. 362s 362s > tryCatch(unitize("_helper/unitizers/trivial.R")) 362s 362s Warning in check_call_stack() : 362s It appears you are running unitizer inside an error handling function such as 362s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 362s couraged as it may cause unpredictable behavior from unitizer in the event tests 362s produce conditions / errors. We strongly recommend you re-run your tests 362s outside of such handling functions. 363s Warning in history_capt(history, interactive.mode) : 363s Unable to capture history in non-interactive mode. 363s | 4/4 tests passed; nothing to review. 363s 363s > withRestarts(unitize("_helper/unitizers/trivial.R")) 363s 363s Warning in check_call_stack() : 363s It appears you are running unitizer inside an error handling function such as 363s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 363s couraged as it may cause unpredictable behavior from unitizer in the event tests 363s produce conditions / errors. We strongly recommend you re-run your tests 363s outside of such handling functions. 363s Warning in history_capt(history, interactive.mode) : 363s Unable to capture history in non-interactive mode. 363s | 4/4 tests passed; nothing to review. 363s 363s > 363s > # need to figure out why running this without `try` in covr causes cover to 363s > # fail with 363s > # Error in aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...) : 363s > # no rows to aggregate 363s > 363s > # - "Ensure we get error if we try to do something stupid..." ------------------ 363s > 363s > try( 363s + withRestarts( 363s + unitize("_helper/unitizers/trivial.R"), 363s + unitizerInteractiveFail = function() NULL 363s + ) 363s + ) 363s 363s Warning in check_call_stack() : 363s It appears you are running unitizer inside an error handling function such as 363s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 363s couraged as it may cause unpredictable behavior from unitizer in the event tests 363s produce conditions / errors. We strongly recommend you re-run your tests 363s outside of such handling functions. 363s Error in check_call_stack() : 363s "unitizerInteractiveFail" restart is already defined; unitizer relies on this 363s restart to manage evaluation so unitizer will not run if it is defined outside 363s of `unitize`. If you did not define this restart contact maintainer. 363s > 363s > 363s PASS 363s Begin testing t-ischecks.R 363s 363s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 363s Copyright (C) 2024 The R Foundation for Statistical Computing 363s Platform: s390x-ibm-linux-gnu (64-bit) 363s 363s R is free software and comes with ABSOLUTELY NO WARRANTY. 363s You are welcome to redistribute it under certain conditions. 363s Type 'license()' or 'licence()' for distribution details. 363s 363s R is a collaborative project with many contributors. 363s Type 'contributors()' for more information and 363s 'citation()' on how to cite R or R packages in publications. 363s 363s Type 'demo()' for some demos, 'help()' for on-line help, or 363s 'help.start()' for an HTML browser interface to help. 363s Type 'q()' to quit R. 363s 363s > source(file.path("_helper", "init.R")) 363s > # - "int.pos" ------------------------------------------------------------------ 363s > 363s > unitizer:::is.int.pos.1L(c(1, 2, 3)) # FALSE 363s [1] FALSE 363s > unitizer:::is.int.pos.1L(1) 363s [1] TRUE 363s > unitizer:::is.int.pos.1L(1) 363s [1] TRUE 363s > unitizer:::is.int.pos.1L(-1) # FALSE 363s [1] FALSE 363s > unitizer:::is.int.pos.1L(NA_integer_) # FALSE 363s [1] FALSE 363s > unitizer:::is.int.pos.2L(1:2) 363s [1] TRUE 363s > unitizer:::is.int.pos.2L(c(1, 2)) 363s [1] TRUE 363s > 363s > # - "is.valid_two_arg" --------------------------------------------------------- 363s > 363s > f1 <- function(x, y) NULL 363s > f2 <- function(...) NULL 363s > f3 <- function(x, ...) NULL 363s > f4 <- function(x, y, z) NULL 363s > f5 <- function(x, y, z = 3) NULL 363s > f6 <- function(x) NULL 363s > unitizer:::is.two_arg_fun(f1) 363s [1] TRUE 363s > unitizer:::is.two_arg_fun(f2) 363s [1] TRUE 363s > unitizer:::is.two_arg_fun(f3) 363s [1] TRUE 363s > unitizer:::is.two_arg_fun(f4) 363s [1] "cannot have any non-optional arguments other than first two" 363s > unitizer:::is.two_arg_fun(f5) 363s [1] TRUE 363s > unitizer:::is.two_arg_fun(f6) 363s [1] "does not have at least two arguments" 363s > unitizer:::is.two_arg_fun(1) 363s [1] "is not a function" 363s > 363s > # - "is.valid_capt_setting" ---------------------------------------------------- 363s > 363s > capt.test <- unitizer:::is.valid_capt_setting(c(T, T)) 363s | value must be logical(2L) containing TRUE 363s | / FALSE and with names `c("output", "message") 363s 363s > capt.test 363s [1] FALSE 363s > 363s PASS 363s Begin testing t-item.R 363s 363s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 363s Copyright (C) 2024 The R Foundation for Statistical Computing 363s Platform: s390x-ibm-linux-gnu (64-bit) 363s 363s R is free software and comes with ABSOLUTELY NO WARRANTY. 363s You are welcome to redistribute it under certain conditions. 363s Type 'license()' or 'licence()' for distribution details. 363s 363s R is a collaborative project with many contributors. 363s Type 'contributors()' for more information and 363s 'citation()' on how to cite R or R packages in publications. 363s 363s Type 'demo()' for some demos, 'help()' for on-line help, or 363s 'help.start()' for an HTML browser interface to help. 363s Type 'q()' to quit R. 363s 363s > source(file.path("_helper", "init.R")) 364s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("item") 364s > 364s > options(unitizer.color = FALSE) 364s > 364s > # These tests are intended to cover all the functions/classes/methods in: 364s > # - item.R 364s > # - item.sub.R 364s > # - test_eval.R # indirectly 364s > # - heal.R 364s > # - unitizer.R 364s > # Basically everything that can be tested non-interactively 364s > # Helper funs 364s > 364s > callDep <- function(x) paste0(deparse(x@call, width.cutoff = 500), 364s + collapse = "") 364s > lsObjs <- function(x) paste0(x@ls$names, x@ls$status, collapse = ", ") 364s > lsStat <- function(x) x@ls$status 364s > lsInv <- function(x) isTRUE(attr(x@ls, "invalid")) 364s > # Get started 364s > 364s > new.exps <- expression( 364s + 1 + 1, 364s + a <- 54, # keep 364s + b <- 38, # keep 364s + a + b, 364s + e <- 5 * a, # keep 364s + a ^ 2, # Keep 364s + f <- e * a, 364s + matrix(rep(f, 20)) # keep 364s + ) 364s > ref.exps <- expression( 364s + 1 + 1, 364s + a <- 54, 364s + b <- 38, 364s + a + b, 364s + e <- 5 * a, 364s + e ^ 3 364s + ) 364s > 364s > Sys.sleep(0.2) 364s > my.unitizer <- new("unitizer", id = 1, zero.env = new.env()) 364s > # add ref.exps as new items 364s > coi(my.unitizer <- my.unitizer + ref.exps) 364s > my.unitizer2 <- new("unitizer", id = 2, zero.env = new.env()) 364s > # now convert them to reference items 364s > coi(my.unitizer2 <- my.unitizer2 + my.unitizer@items.new) 364s > # now test against new.exps 364s > coi(my.unitizer2 <- my.unitizer2 + new.exps) 364s > 364s > # - "item funs" ---------------------------------------------------------------- 364s > 364s > item <- my.unitizer@items.new[[1L]] 364s > unitizer:::itemType(item) 364s [1] "new" 364s > try(unitizer:::itemType(item) <- "asdfasd") 364s Error in unitizer:::`itemType<-`(`*tmp*`, value = "asdfasd") : 364s Argument `value` must be in c("new", "reference") 364s > unitizer:::itemType(item) <- "reference" 364s > unitizer:::itemType(item) 364s [1] "reference" 364s > try(unitizer:::itemsType(my.unitizer@items.new) <- as.character(1:1000)) 364s Error in unitizer:::`itemsType<-`(`*tmp*`, value = c("1", "2", "3", "4", : 364s Argument `value` must be length 1L or have same length as argument `x` 364s > try(item$booboo) 364s Error in .local(x, i, j, ...) : 364s Argument `name` must be in c("call", "state", "value", "conditions", "output", "message", "aborted") 364s > 364s > # - "unitizer creation worked as expected" ------------------------------------- 364s > 364s > validObject(my.unitizer, complete = TRUE) 364s [1] TRUE 364s > all.equal(capture.output(show(my.unitizer@items.new[[1L]])), rds(100)) 364s [1] TRUE 364s > identical(length(my.unitizer2), length(new.exps)) 364s [1] TRUE 364s > identical(length(my.unitizer2@items.new), length(new.exps)) 364s [1] TRUE 364s > identical(length(my.unitizer2@items.ref), length(ref.exps)) 364s [1] TRUE 364s > all.equal( 364s + as.expression( 364s + lapply(unitizer:::as.list(my.unitizer2@items.new), slot, "call") 364s + ), 364s + new.exps 364s + ) 364s [1] TRUE 364s > all.equal( 364s + as.expression( 364s + lapply(unitizer:::as.list(my.unitizer2@items.ref), slot, "call") 364s + ), 364s + ref.exps 364s + ) 364s [1] TRUE 364s > vals <- lapply( 364s + unitizer:::as.list(my.unitizer2@items.new), function(x) x@data@value[[1L]] 364s + ) 364s > vals.ign <- unitizer:::ignored(my.unitizer2@items.new) 364s > all.equal(vals[!vals.ign], lapply(new.exps, eval)[!vals.ign]) 364s [1] TRUE 364s > all(vapply(vals[vals.ign], is, logical(1L), "unitizerDummy")) 364s [1] TRUE 364s > 364s > vals <- lapply( 364s + unitizer:::as.list(my.unitizer2@items.ref), function(x) x@data@value[[1L]] 364s + ) 364s > vals.ign <- unitizer:::ignored(my.unitizer2@items.ref) 364s > all.equal(vals[!vals.ign], lapply(ref.exps, eval)[!vals.ign]) 364s [1] TRUE 364s > all(vapply(vals[vals.ign], is, logical(1L), "unitizerDummy")) 364s [1] TRUE 364s > my.unitizer2@items.new.map 364s [1] 1 2 3 4 5 NA NA NA 364s > my.unitizer2@items.ref.map 364s [1] 1 2 3 4 5 NA 364s > my.unitizer2@tests.fail 364s [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 364s > my.unitizer2@tests.status 364s [1] Pass Pass Pass Pass Pass New New New 364s Levels: Pass Fail New Deleted Error 364s > my.unitizer2@section.map 364s [1] 1 1 1 1 1 1 1 1 364s > unitizer:::ignored(my.unitizer2@items.new) 364s [1] FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE 364s > unitizer:::ignored(my.unitizer2@items.ref) 364s [1] FALSE TRUE TRUE FALSE TRUE FALSE 364s > 364s > # - "Size Measurement works" --------------------------------------------------- 364s > 364s > # Used to produce warnings because the same base.env was used for every 364s > # unitizer because it was created on package load as part of the S4 class 364s > # definition instead of in "initialize", so any time we instantiated more 364s > # than one object they all shared the same environment, causing issues with 364s > # saveRDS 364s > x <- unitizer:::sizeUntz(my.unitizer2) 364s > is.matrix(x) && is.numeric(x) 364s [1] TRUE 364s > colnames(x) 364s [1] "size" "rds" 364s > 364s > # - "Environment healing works" ------------------------------------------------ 364s > 364s > items.mixed <- my.unitizer2@items.new[4:5] + my.unitizer2@items.ref[[1]] + 364s + my.unitizer2@items.new[c(2, 6, 8)] 364s > items.sorted <- unitizer:::healEnvs(items.mixed, my.unitizer2) 364s > env.anc <- lapply(unitizer:::as.list(items.sorted), function(x) rev(unitizer:::env_ancestry(x@env, 364s + my.unitizer2@base.env))) 364s > max.len <- max(vapply(env.anc, length, 1L)) 364s > env.anc.2 <- lapply(env.anc, function(x) { 364s + length(x) <- max.len 364s + x 364s + }) 364s > env.anc.df <- as.data.frame(env.anc.2, stringsAsFactors = FALSE) 364s > # Here only the first item is reference, all others 364s > length(unique(unlist(env.anc.df[2, ]))) 364s [1] 1 364s > all( 364s + apply( 364s + env.anc.df[-(1:2), -1], 1, 364s + function(x) length(unique(Filter(Negate(is.na), x))) 364s + ) == 1L 364s + ) 364s [1] TRUE 364s > # First item is reference, all others are new 364s > unitizer:::itemsType(items.sorted) 364s [1] "reference" "new" "new" "new" "new" "new" 364s [7] "new" "new" 364s > # Expected order of ids 364s > vapply(unitizer:::as.list(items.sorted), function(x) x@id, integer(1L)) 364s [1] 1 2 3 4 5 6 7 8 364s > lapply(unitizer:::as.list(items.sorted), function(x) x@ls$names) 364s [[1]] 364s character(0) 364s 364s [[2]] 364s character(0) 364s 364s [[3]] 364s character(0) 364s 364s [[4]] 364s [1] "a" "b" 364s 364s [[5]] 364s character(0) 364s 364s [[6]] 364s [1] "a" "b" "e" 364s 364s [[7]] 364s character(0) 364s 364s [[8]] 364s [1] "a" "b" "e" "f" 364s 364s > unique(unlist(lapply(unitizer:::as.list(items.sorted), function(x) x@ls$status))) 364s [1] "" 364s > # Tests with conditions 364s > 364s > # - "Items with conditions" ---------------------------------------------------- 364s > 364s > my_fun <- function() { 364s + warning("hello") 364s + 25 364s + } 364s > ref.exps1a <- expression(stop("boom"), my_fun()) 364s > my.unitizer1a <- new("unitizer", id = 100, zero.env = new.env()) 364s > # add ref.exps as new items 364s > coi(my.unitizer1a <- my.unitizer1a + ref.exps1a) 364s > 364s > all.equal(capture.output(show(my.unitizer1a@items.new[[1L]])), rds(200)) 364s [1] TRUE 364s > all.equal(capture.output(show(my.unitizer1a@items.new[[2L]])), rds(300)) 364s [1] TRUE 364s > all.equal( 364s + capture.output(show(my.unitizer1a@items.new[[1L]]@data@conditions)), rds(400) 364s + ) 364s [1] TRUE 364s > # - "Environment healing works 2" ---------------------------------------------- 364s > 364s > # Stars highlight items we are selecting, but keep in mind that unitizer only 364s > # cares about non ignored tests, and that the selection status of ignored test 364s > # has nothing to do with what we end up with wrt to ignored tests 364s > 364s > new.exps2 <- expression( 364s + 1 + 1, # 1 * 364s + a <- 54, # 2 364s + b <- runif(5), # 3 364s + howdy <- "yowser", # 4 * 364s + a + b, # 5 * 364s + e <- 5 * a, # 6 364s + a ^ 2, # 7 364s + f <- e * a, # 8 364s + matrix(rep(f, 20)) # 9 * 364s + ) 364s > ref.exps2 <- expression( 364s + 1 + 1, # 1 364s + a <- 54, # 2 364s + b <- runif(5), # 3 * 364s + 25 + 3, # 4 364s + q <- b ^ 2 / a, # 5 * 364s + a + b, # 6 364s + z <- w <- list(1, 2, 3), # 7 364s + Reduce(`+`, z), # 8 * Doesn't exist, should connect back to `a + b` 364s + e <- 5 * a, # 9 364s + e ^ 3, # 10 * 364s + e * a # 11 * 364s + ) 364s > 364s > # Note that healEnvs modifies objects that contain environments, and as such 364s > # you won't get the same result if you run this function twice, so don't be 364s > # surprised if tests fail in those circumstances 364s > my.unitizer3 <- new("unitizer", id = 1, zero.env = new.env()) 364s > # add ref.exps as new items 364s > coi(my.unitizer3 <- my.unitizer3 + ref.exps2) 364s > my.unitizer4 <- new("unitizer", id = 2, zero.env = new.env()) 364s > # now convert them to reference items 364s > coi(my.unitizer4 <- my.unitizer4 + my.unitizer3@items.new) 364s > # now test against new.exps 364s > coi(my.unitizer4 <- my.unitizer4 + new.exps2) 364s > coi( 364s + items.mixed2 <- my.unitizer4@items.ref[c(8, 10, 3, 5, 11)] + 364s + my.unitizer4@items.new[c(1, 4, 5, 9)] 364s + ) 364s > items.sorted2 <- unitizer:::healEnvs(items.mixed2, my.unitizer4) 364s > 364s > env.anc <- lapply(unitizer:::as.list(items.sorted2), function(x) rev(unitizer:::env_ancestry(x@env, 364s + my.unitizer4@base.env))) 364s > max.len <- max(vapply(env.anc, length, 1L)) 364s > env.anc.2 <- lapply(env.anc, function(x) { 364s + length(x) <- max.len 364s + x 364s + }) 364s > # oldest ancestor the same 364s > env.anc.df <- as.data.frame(env.anc.2, stringsAsFactors = FALSE) 364s > length(unique(unname(unlist(env.anc.df[1, ])))) # 1 364s [1] 1 364s > # "base.env should be unitizer env") 364s > identical( 364s + env.anc.df[1, 1], unitizer:::env_name(my.unitizer4@base.env) 364s + ) 364s [1] TRUE 364s > # "all tests should also have another sub base.env") 364s > length(unique(unlist(env.anc.df[2, ]))) == 1L 364s [1] TRUE 364s > # "and it should be the items.ref here") 364s > identical( 364s + env.anc.df[2, 1], unitizer:::env_name(my.unitizer4@items.ref@base.env) 364s + ) 364s [1] TRUE 364s > items <- items.sorted2 364s > items.lst <- unitizer:::as.list(items) 364s > # "new items should all have normal status", 364s > heal.info <- cbind( 364s + type = unitizer:::itemsType(items), ignored = unitizer:::ignored(items), 364s + id = vapply(items.lst, slot, 1L, "id"), 364s + call = vapply(items.lst, callDep, ""), 364s + ls = vapply(items.lst, lsObjs, ""), 364s + ls.invalid = vapply(items.lst, lsInv, TRUE) 364s + ) 364s > # "" 364s > unique(unlist(lapply(items.lst[unitizer:::itemsType(items) == "new"], lsStat))) 364s [1] "" 364s > # "Reference tests should have no ls data", 364s > unique(vapply(items.lst[unitizer:::ignored(items)], lsObjs, "")) 364s [1] "" 364s > all(vapply(items.lst[unitizer:::ignored(items)], lsInv, logical(1L))) 364s [1] TRUE 364s > 364s > # - "ls works" ----------------------------------------------------------------- 364s > 364s > my.unitizer5 <- new("unitizer", id = 2, zero.env = new.env()) 364s > # now add back our composite elements as references 364s > coi(my.unitizer5 <- my.unitizer5 + items.sorted2) 364s > # and new items 364s > coi(my.unitizer5 <- my.unitizer5 + new.exps2) 365s > 365s > # This is an ignored test, so there will be some problems 365s > env.val <- new.env(parent = my.unitizer5@items.new[[3]]@env) 365s > env.eval <- new.env(parent = env.val) 365s > assign(".NEW", my.unitizer5@items.new[[3]], env.val) 365s > assign(".new", my.unitizer5@items.new[[3]]@data@value[[1L]], 365s + env.val) 365s > assign(".REF", my.unitizer5@items.ref[[my.unitizer5@items.new.map[[3]]]], 365s + env.val) 365s > assign(".ref", my.unitizer5@items.ref[[my.unitizer5@items.new.map[[3]]]]@data@value[[1L]], 365s + env.val) 365s > ls.res <- evalq(unitizer:::unitizer_ls(), env.eval) # warn 365s Warning in unitizer:::unitizer_ls() : 365s The ls output for `.ref` is invalid. This may be because you had corrupted environment chains that had to be repaired. Re-generating the `unitizer` with `unitize(..., force.update=TRUE)` should fix the problem. If it persists, please contact maintainer. 365s > # Reference tests won't show up since they were nuked by `healEnvs` 365s > all.equal(ls.res, rds(500)) 365s [1] TRUE 365s > # These are normal tests so should work 365s > env.val <- new.env(parent = my.unitizer5@items.new[[9]]@env) 365s > env.eval <- new.env(parent = env.val) 365s > assign(".NEW", my.unitizer5@items.new[[9]], env.val) 365s > assign(".new", my.unitizer5@items.new[[9]]@data@value[[1L]], 365s + env.val) 365s > assign(".REF", my.unitizer5@items.ref[[my.unitizer5@items.new.map[[9]]]], 365s + env.val) 365s > assign(".ref", my.unitizer5@items.ref[[my.unitizer5@items.new.map[[9]]]]@data@value[[1L]], 365s + env.val) 365s > all.equal(evalq(unitizer:::unitizer_ls(), env.eval), 365s + rds(600)) 365s [1] TRUE 365s > all.equal(capture.output(print(evalq(unitizer:::unitizer_ls(), 365s + env.eval))), rds(700)) 365s [1] TRUE 365s > 365s > # - "Environment Healing Works #3" --------------------------------------------- 365s > # 365s > # Main difference to previous versions is that we're testing that moving the 365s > # order of tests around between ref and new still works 365s > # 365s > # Test that reference tests moving around doesn't cause major issues 365s > 365s > new.exps6 <- expression( 365s + 1 + 1, # 1 * 365s + a <- 54, # 2 365s + b <- runif(5), # 3 365s + howdy <- "yowser", # 4 365s + a + b, # 5 365s + e <- 5 * a, # 6 365s + a ^ 2, # 7 * 365s + f <- 25, # 8 * 365s + matrix(rep(f, 20)) # 9 365s + ) 365s > ref.exps6 <- expression( 365s + 1 + 1, # 1 365s + a <- 54, # 2 365s + f <- 25, # 3 365s + matrix(rep(f, 20)), # 4 * 365s + b <- runif(5), # 5 365s + boomboom <- "boo", # 6 365s + a + b, # 7 * 365s + a + b + f, # 8 365s + e <- 5 * a, # 9 365s + a ^ 2 # 10 365s + ) 365s > my.unitizer10 <- new("unitizer", id = 1, zero.env = new.env()) 365s > # add ref.exps as new items 365s > coi(my.unitizer10 <- my.unitizer10 + ref.exps6) 365s > my.unitizer11 <- new("unitizer", id = 2, zero.env = new.env()) 365s > # now convert them to reference items 365s > coi(my.unitizer11 <- my.unitizer11 + my.unitizer10@items.new) 365s > # now test against new.exps 365s > coi(my.unitizer11 <- my.unitizer11 + new.exps6) 365s > items.mixed3 <- my.unitizer11@items.ref[c(4, 7)] + 365s + my.unitizer11@items.new[c(1, 7, 8)] 365s > items.sorted3 <- unitizer:::healEnvs(items.mixed3, my.unitizer11) 365s > 365s > # Both reference tests get appended to item #1, which means among other things 365s > # that for the second refernce test, the `a` object is absent (but `b` is 365s > # present because it gets sucked in by virtue of being an ignored test just 365s > # ahead of it) 365s > items <- items.sorted3 365s > items.lst <- unitizer:::as.list(items) 365s > cbind( 365s + type = unitizer:::itemsType(items), ignored = unitizer:::ignored(items), 365s + id = vapply(items.lst, slot, 1L, "id"), 365s + call = vapply(items.lst, callDep, ""), 365s + ls = vapply(items.lst, lsObjs, ""), 365s + ls.invalid = vapply(items.lst, lsInv, TRUE) 365s + ) 365s type ignored id call ls 365s [1,] "new" "FALSE" "1" "1 + 1" "" 365s [2,] "reference" "TRUE" "2" "a <- 54" "" 365s [3,] "reference" "TRUE" "3" "f <- 25" "" 365s [4,] "reference" "FALSE" "4" "matrix(rep(f, 20))" "a, f" 365s [5,] "reference" "TRUE" "5" "b <- runif(5)" "" 365s [6,] "reference" "TRUE" "6" "boomboom <- \"boo\"" "" 365s [7,] "reference" "FALSE" "7" "a + b" "a*, b, boomboom, f*" 365s [8,] "new" "TRUE" "6" "e <- 5 * a" "" 365s [9,] "new" "FALSE" "7" "a^2" "a, b, e, howdy" 365s ls.invalid 365s [1,] "FALSE" 365s [2,] "TRUE" 365s [3,] "TRUE" 365s [4,] "FALSE" 365s [5,] "TRUE" 365s [6,] "TRUE" 365s [7,] "FALSE" 365s [8,] "TRUE" 365s [9,] "FALSE" 365s > # - "No circular environment references" --------------------------------------- 365s > 365s > # This is to test for issue #2, which resulted in a self referential environment 365s > # in the stored items. The following code used to fail: 365s > new.exps3 <- expression(1 + 1, a <- 54, b <- 5, 2 + 2, runif(1)) 365s > ref.exps3 <- expression(1 + 1, a <- 54, 2 + 2, runif(1)) 365s > my.unitizer6 <- new("unitizer", id = 1, zero.env = new.env()) 365s > # add ref.exps as new items 365s > coi(my.unitizer6 <- my.unitizer6 + ref.exps3) 365s > my.unitizer7 <- new("unitizer", id = 2, zero.env = new.env()) 365s > # now convert them to reference items 365s > coi(my.unitizer7 <- my.unitizer7 + my.unitizer6@items.new) 365s > # now test against new.exps 365s > coi(my.unitizer7 <- my.unitizer7 + new.exps3) 365s > # Note this doesn't test that there are no circular references, only that what 365s > # used to fail no longer fails. 365s > 365s > cbind(my.unitizer7@tests.new, my.unitizer7@tests.result) 365s value conditions output message aborted 365s [1,] FALSE TRUE TRUE TRUE TRUE TRUE 365s [2,] FALSE TRUE TRUE TRUE TRUE TRUE 365s [3,] TRUE FALSE FALSE FALSE FALSE FALSE 365s [4,] FALSE TRUE TRUE TRUE TRUE TRUE 365s [5,] FALSE FALSE TRUE TRUE TRUE TRUE 365s > 365s > # - "testFuns" ----------------------------------------------------------------- 365s > 365s > # Error objects 365s > 365s > # these two should just work fine 365s > is(new("testFuns", output = all.equal, value = function(x, y) TRUE), "testFuns") 365s [1] TRUE 365s > is(new("testFuns"), "testFuns") 365s [1] TRUE 365s > try(new("testFuns", output = all.equal, value = function(x, y, z) TRUE)) 365s Error in validObject(.Object) : 365s invalid class "unitizerItemTestFun" object: Slot `@fun` must be a function with the first two parameters non-optional and all others optional (cannot have any non-optional arguments other than first two). 365s > # this should work too now, since technically has two args 365s > is( 365s + new("testFuns", output = all.equal, value = function(x, y = 1, z = 1) TRUE), 365s + "testFuns" 365s + ) 365s [1] TRUE 365s > try(new("testFuns", cabbage = all.equal)) 365s Error in initialize(value, ...) : 365s Can't initialize invalid slots "cabbage" 365s > 365s > # - "Misc" --------------------------------------------------------------------- 365s > 365s > new.exps4 <- expression(a <- function() b(), b <- function() TRUE, a()) 365s > my.unitizer8 <- new("unitizer", id = 3, zero.env = new.env()) 365s > new.exps5 <- expression(a <- function() b(), NULL, b <- function() TRUE, a()) 365s > my.unitizer9 <- new("unitizer", id = 4, zero.env = new.env()) 365s > coi(x <- my.unitizer9 + new.exps5) 365s > 365s > local({ 365s + fun <- function() quote(stop("This error should not be thrown")) 365s + is( 365s + new( 365s + "unitizerItem", value = fun(), call = quote(fun()), 365s + env = sys.frame(sys.parent() + 1L) 365s + ), 365s + "unitizerItem" 365s + ) 365s + }) 365s [1] TRUE 365s > # Nested environment hand waving can break down under certain circumstances 365s > # this first one should work because there are no tests until after all 365s > # the pieces necessary to run `a()` are defined: 365s > coi(res <- my.unitizer8 + new.exps4) 365s > is(res, "unitizer") 365s [1] TRUE 365s > # this should break because the NULL forces `b` to be stored in a different 365s > # environment to `a`; note: funky error message matching because in 365s > # at least some versions of rdevel reported fun name seems to change 365s > # (possibly related to level 3 bytecode) 365s > # could not find fun 365s > x@items.new[[4]]@data@message[[1]] 365s [1] "Error in b() : could not find function \"b\"\n" 365s > 365s > # - "Comparison Function Errors" ----------------------------------------------- 365s > 365s > exps <- expression(fun <- function(x, y) warning("not gonna work"), 365s + unitizer_sect(compare = fun, expr = { 365s + 1 + 1 365s + })) 365s > my.unitizer <- new("unitizer", id = 25, zero.env = new.env()) 365s > # add ref.exps as new items 365s > coi(my.unitizer <- my.unitizer + exps) 365s > coi(my.unitizer2 <- new("unitizer", id = 26, zero.env = new.env()) + 365s + my.unitizer@items.new) 365s > # warn: not gonna work 365s > coi(my.unitizer2 <- my.unitizer2 + exps) 365s Warning in close_and_clear(e1@global$cons) : 365s Test comparison functions appear to have produced output, which should not happen (see `?unitizer_sect` for more details). If you did not provide custom testing functions, contact maintainer. First 50 lines follow: 365s Warning in fun(2, 2) : not gonna work 365s 365s > as.character(my.unitizer2@tests.status) 365s [1] "Pass" "Error" 365s > my.unitizer2@tests.errorDetails[[2]]@value@value 365s [1] "comparison function `fun` signaled a condition of class `c(\"simpleWarning\", \"warning\", \"condition\")`, with message \"not gonna work\" and call `fun(2, 2)`." 365s > 365s > # - "Language Objects Tested Properly" ----------------------------------------- 365s > 365s > exps <- expression(quote(x), quote(x + y), quote(identity(x)), 365s + expression(1 + y), quote(expression(1 + y))) 365s > my.unitizer <- new("unitizer", id = 27, zero.env = new.env()) 365s > # add ref.exps as new items 365s > coi(my.unitizer <- my.unitizer + exps) 365s > coi(my.unitizer2 <- new("unitizer", id = 28, zero.env = new.env()) + 365s + my.unitizer@items.new) 365s > coi(my.unitizer2 <- my.unitizer2 + exps) 365s > # This used to error b/c expressions returning unevaluated calls/symbols were 365s > # not compared as such (they were evaluated) 365s > as.character(my.unitizer2@tests.status) 365s [1] "Pass" "Pass" "Pass" "Pass" "Pass" 365s > 365s > # - "Test Fun Captured Properly" ----------------------------------------------- 365s > 365s > new("unitizerItemTestFun", fun = identical)@fun.name 365s [1] "identical" 365s > 365s > 365s PASS 365s Begin testing t-list.R 365s 365s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 365s Copyright (C) 2024 The R Foundation for Statistical Computing 365s Platform: s390x-ibm-linux-gnu (64-bit) 365s 365s R is free software and comes with ABSOLUTELY NO WARRANTY. 365s You are welcome to redistribute it under certain conditions. 365s Type 'license()' or 'licence()' for distribution details. 365s 365s R is a collaborative project with many contributors. 365s Type 'contributors()' for more information and 365s 'citation()' on how to cite R or R packages in publications. 365s 365s Type 'demo()' for some demos, 'help()' for on-line help, or 365s 'help.start()' for an HTML browser interface to help. 365s Type 'q()' to quit R. 365s 365s > source(file.path("_helper", "init.R")) 365s > 365s > lst <- new("unitizerList") 365s > 365s > # - "unitizerList basic tests" ------------------------------------------------- 365s > 365s > length(lst) == 0L 365s [1] TRUE 365s > is(lst <- unitizer:::append(lst, 5), "unitizerList") 365s [1] TRUE 365s > length(lst) == 1L 365s [1] TRUE 365s > is( 365s + lst <- unitizer:::append( 365s + lst, list("booyah", list(1:3), matrix(1:9, nrow = 3)) 365s + ), "unitizerList" 365s + ) 365s [1] TRUE 365s > length(lst) == 4L 365s [1] TRUE 365s > is(lst[3L], "unitizerList") 365s [1] TRUE 365s > is(lst[[3L]], "list") 365s [1] TRUE 365s > lst <- unitizer:::append(lst, list(data.frame(a = letters[1:3])), 2L) 365s > is(lst[[3L]], "data.frame") 365s [1] TRUE 365s > length(lst[1:4]) == 4L 365s [1] TRUE 365s > lst[[4L]] <- "boo" 365s > is(lst[[4L]], "character") 365s [1] TRUE 365s > lst[4L:5L] <- letters[1:2] 365s > 365s > c(lst[[4L]], lst[[5L]]) 365s [1] "a" "b" 365s > lst[[4L]] 365s [1] "a" 365s > 365s > is(unitizer:::as.list(lst), "list") 365s [1] TRUE 365s > length(unitizer:::as.list(lst)) == 5L 365s [1] TRUE 365s > is(unitizer:::as.expression(lst), "expression") 365s [1] TRUE 365s > 365s > try(unitizer:::getItem(lst)) # error 365s Error in .local(x, ...) : 365s Internal pointer for `x` not initialized; initialize with `nextItem` 365s > lst <- unitizer:::nextItem(lst) 365s > unitizer:::getItem(lst) 365s [1] 5 365s > lst <- unitizer:::nextItem(lst) 365s > unitizer:::getItem(lst) 365s [1] "booyah" 365s > lst <- unitizer:::prevItem(lst) 365s > unitizer:::getItem(lst) 365s [1] 5 365s > lst <<- lst # leftover from testthat testing? 365s > 365s > # - "unitizerList pointer seeking" --------------------------------------------- 365s > 365s > for (i in 1:10) lst <- unitizer:::nextItem(lst) 365s > try(unitizer:::getItem(lst)) 365s Error in .local(x, ...) : Internal pointer for `x` is corrupted 365s > unitizer:::done(lst) 365s [1] TRUE 365s > is(lst <- unitizer:::reset(lst, "back"), "unitizerList") 365s [1] TRUE 365s > try(unitizer:::reset(lst, letters)) 365s Error in .local(x, ...) : 365s Argument `position` must be `NULL`, or "front" or "back" 365s > try(unitizer:::reset(lst, NA_character_)) 365s Error in .local(x, ...) : 365s Argument `position` must be `NULL`, or "front" or "back" 365s > try(unitizer:::getItem(lst)) 365s Error in .local(x, ...) : 365s Internal pointer for `x` not initialized; initialize with `prevItem` 365s > lst <- unitizer:::prevItem(lst) 365s > unitizer:::getItem(lst) == "b" 365s [1] TRUE 365s > while (!unitizer:::done(lst)) { 365s + item <- unitizer:::getItem(lst) 365s + lst <- unitizer:::prevItem(lst) 365s + } 365s > item == 5L 365s [1] TRUE 365s > try(unitizer:::getItem(lst)) 365s Error in .local(x, ...) : 365s Internal pointer for `x` outside of range for `x`; test for this condition with `done`, or reset with `reset` 365s > withCallingHandlers( 365s + lst[[4]] <- "new value", 365s + warning = function() stop("A Warning!") 365s + ) 365s > 365s > for (i in 1:5) lst <- unitizer:::nextItem(lst) 365s > lst@.pointer 365s [1] 5 365s > 365s > # - "unitizerList value replacement and pointer adjustments" ------------------- 365s > 365s > lst[[4]] <- NULL 365s > lst@.pointer 365s [1] 4 365s > unitizer:::reset(lst, "back") 365s An object of class "unitizerList" 365s Slot ".items": 365s [[1]] 365s [1] 5 365s 365s [[2]] 365s [1] "booyah" 365s 365s [[3]] 365s a 365s 1 a 365s 2 b 365s 3 c 365s 365s [[4]] 365s [1] "b" 365s 365s 365s Slot ".pointer": 365s [1] 5 365s 365s Slot ".seek.fwd": 365s [1] FALSE 365s 365s > lst.len <- length(lst) 365s > identical(lst@.pointer, lst.len) 365s [1] TRUE 365s > lst[2:3] <- letters[1:2] 365s > identical(lst@.pointer, lst.len) 365s [1] TRUE 365s > lst[2:3] <- list(NULL, NULL) 365s > identical(lst@.pointer, lst.len) 365s [1] TRUE 365s > lst[2:3] <- NULL 365s > identical(lst@.pointer, lst.len - 2L) 365s [1] TRUE 365s > 365s > lst <- unitizer:::reset(lst, "front") 365s > for (i in 1:2) lst <- unitizer:::nextItem(lst) 365s > curr.point <- lst@.pointer 365s > lst[[3]] <- NULL 365s > identical(curr.point, lst@.pointer) 365s [1] TRUE 365s > lst <- unitizer:::append(lst, list(5, 6, "blaskdjf"), 1L) 365s > identical(curr.point + 3L, lst@.pointer) 365s [1] TRUE 365s > lst <- unitizer:::append(lst, list(matrix(1:9, nrow = 3)), 5L) 365s > identical(curr.point + 3L, lst@.pointer) 365s [1] TRUE 365s > 365s > # - "Append Factors Works" ----------------------------------------------------- 365s > 365s > vec <- factor(letters[1:3], levels = letters) 365s > vec2 <- factor(letters[10:15], levels = letters) 365s > 365s > all.equal(structure(c(1L, 2L, 3L, 10L, 11L, 12L, 13L, 14L, 365s + 15L), .Label = c("a", "b", "c", "d", "e", "f", "g", "h", 365s + "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", 365s + "u", "v", "w", "x", "y", "z"), class = "factor"), append(vec, 365s + vec2)) 365s [1] TRUE 365s > all.equal(structure(c(1L, 2L, 10L, 11L, 12L, 13L, 14L, 15L, 365s + 3L), .Label = c("a", "b", "c", "d", "e", "f", "g", "h", "i", 365s + "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", 365s + "v", "w", "x", "y", "z"), class = "factor"), append(vec, 365s + vec2, 2)) 365s [1] TRUE 365s > 365s > all.equal(structure(c(10L, 11L, 12L, 13L, 1L, 2L, 3L, 14L, 365s + 15L), .Label = c("a", "b", "c", "d", "e", "f", "g", "h", 365s + "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", 365s + "u", "v", "w", "x", "y", "z"), class = "factor"), append(vec2, 365s + vec, 4)) 365s [1] TRUE 365s > try(append(vec2, vec, 20)) 365s Error in append(vec2, vec, 20) : 365s Argument after must be integer like between 0 and length(x) 365s > try(append(vec2, vec, -5)) 365s Error in append(vec2, vec, -5) : 365s Argument after must be integer like between 0 and length(x) 365s > 365s > # - "List coersion works even inside apply functions" -------------------------- 365s > 365s > ulist <- new("unitizerList", .items = list("a", 1, 2, "b")) 365s > identical(lapply(ulist, identity), ulist@.items) 365s [1] TRUE 365s > 365s > # - "Errors" ------------------------------------------------------------------- 365s > 365s > setClass("uhtsdfoqiuerhzb", slots = c(a = "integer")) 365s > dummy <- new("uhtsdfoqiuerhzb", a = 1L) 365s > lst2 <- new("unitizerList", .items = list(1, 2, 3)) 365s > try(append(lst2, 5, after = -1)) 365s Error in append(lst2, 5, after = -1) : 365s Argument `after` must be a length 1 numeric greater than zero 365s > try(append(lst2, dummy)) 365s Error in as.list.default(values) : 365s no method for coercing this S4 class to a vector 365s Error in append(lst2, dummy) : 365s Unable to coerce argument `values` to appropriate type; see previous errors for details. 365s > 365s > lst3 <- new("unitizerList", .items = expression(1, 2, 3)) 365s > try(append(lst3, dummy)) 365s Error in as.expression.default(values) : 365s no method for coercing this S4 class to a vector 365s Error in append(lst3, dummy) : 365s Unable to coerce argument `values` to appropriate type; see previous errors for details. 365s > 365s > # - "Set Names" ---------------------------------------------------------------- 365s > 365s > nlst <- new("unitizerList", .items = list(a = "a", b = "b")) 365s > names(nlst) <- toupper(names(nlst)) 365s > as.list(nlst) 365s $A 365s [1] "a" 365s 365s $B 365s [1] "b" 365s 365s > 365s > 366s PASS 366s Begin testing t-misc.R 366s 366s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 366s Copyright (C) 2024 The R Foundation for Statistical Computing 366s Platform: s390x-ibm-linux-gnu (64-bit) 366s 366s R is free software and comes with ABSOLUTELY NO WARRANTY. 366s You are welcome to redistribute it under certain conditions. 366s Type 'license()' or 'licence()' for distribution details. 366s 366s R is a collaborative project with many contributors. 366s Type 'contributors()' for more information and 366s 'citation()' on how to cite R or R packages in publications. 366s 366s Type 'demo()' for some demos, 'help()' for on-line help, or 366s 'help.start()' for an HTML browser interface to help. 366s Type 'q()' to quit R. 366s 366s > source(file.path("_helper", "init.R")) 366s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 366s > 366s > # - "Text wrapping" ------------------------------------------------------------ 366s > 366s > var <- "humpty dumpty sat on a truck and had a big dump" 366s > # expect_true(all(nchar(unlist(unitizer:::text_wrap(var, 10))) <= 366s > writeLines(unlist(unitizer:::text_wrap(var, 10))) 366s humpty dum 366s pty sat on 366s a truck a 366s nd had a b 366s ig dump 366s > all(nchar(unlist(unitizer:::text_wrap(var, 10))) <= 10) 366s [1] TRUE 366s > 366s > var2 <- rep(var, 4) 366s > # expect_true(all(nchar(wrp <- unlist(unitizer:::text_wrap(var2, 366s > # c(20, 15)))) <= 20) && length(wrp) == 14) 366s > writeLines(unlist(unitizer:::text_wrap(var2, c(20, 15)))) 366s humpty dumpty sat on 366s a truck and had a b 366s ig dump 366s humpty dumpty s 366s at on a truck a 366s nd had a big du 366s mp 366s humpty dumpty sat on 366s a truck and had a b 366s ig dump 366s humpty dumpty s 366s at on a truck a 366s nd had a big du 366s mp 366s > all(nchar(wrp <- unlist(unitizer:::text_wrap(var2, c(20, 15)))) <= 366s + 20) && length(wrp) == 14 366s [1] TRUE 366s > 366s > # - "Headers" ------------------------------------------------------------------ 366s > 366s > # these basically require visual inspection 366s > 366s > unitizer:::H1("hello world") 366s +------------------------------------------------------------------------------+ 366s | hello world | 366s +------------------------------------------------------------------------------+ 366s 366s > unitizer:::H2("hello world") 366s = hello world ================================================================== 366s 366s > unitizer:::H3("hello world") 366s - hello world ------------------------------------------------------------------ 366s 366s > 366s > # cause an error 366s > try(print(unitizer:::H1(rep_len("hello world", 10)))) 366s Error in header(x, 1L) : 366s Argument `x` must be a one length character vector 366s > 366s > h.w.long <- paste0(rep_len("hello world", 10), collapse = " ") 366s > unitizer:::H1(h.w.long) 366s +------------------------------------------------------------------------------+ 366s | hello world hello world hello world hello world hello world hello world | 366s | hello world hello world hello world hello world | 366s +------------------------------------------------------------------------------+ 366s 366s > unitizer:::H2(h.w.long) 366s = hello world hello world hello world hello world hello world hello world h... = 366s 366s > print(unitizer:::H2("No margin"), margin = "none") # no extra line below 366s = No margin ==================================================================== 366s > 366s > # - "Valid Names convert names to valid" --------------------------------------- 366s > 366s > # expect_equal(unitizer:::valid_names("hello"), "hello") 366s > unitizer:::valid_names("hello") 366s [1] "hello" 366s > # expect_equal(unitizer:::valid_names(".hello"), ".hello") 366s > unitizer:::valid_names(".hello") 366s [1] ".hello" 366s > # expect_equal(unitizer:::valid_names("1hello"), "`1hello`") 366s > unitizer:::valid_names("1hello") 366s [1] "`1hello`" 366s > # expect_equal(unitizer:::valid_names("hello kitty"), "`hello kitty`") 366s > unitizer:::valid_names("hello kitty") 366s [1] "`hello kitty`" 366s > # expect_equal(unitizer:::valid_names("h3llo"), "`h3llo`") 366s > unitizer:::valid_names("h3llo") 366s [1] "`h3llo`" 366s > # expect_equal(unitizer:::valid_names("h_llo"), "h_llo") 366s > unitizer:::valid_names("h_llo") 366s [1] "h_llo" 366s > # expect_equal(unitizer:::valid_names("$hot"), "`$hot`") 366s > unitizer:::valid_names("$hot") 366s [1] "`$hot`" 366s > # expect_equal(unitizer:::valid_names("HELLO"), "HELLO") 366s > unitizer:::valid_names("HELLO") 366s [1] "HELLO" 366s > 366s > # - "strtrunc" ----------------------------------------------------------------- 366s > 366s > # expect_equal(unitizer:::strtrunc("hollywood is for starlets", 366s > # 5), "ho...") 366s > unitizer:::strtrunc("hollywood is for starlets", 5) 366s [1] "ho..." 366s > # expect_error(unitizer:::strtrunc(5, "hollywood is for starlets")) 366s > try(unitizer:::strtrunc(5, "hollywood is for starlets")) 366s Error in unitizer:::strtrunc(5, "hollywood is for starlets") : 366s Argument `x` must be character 366s > 366s > # - "environment name tools" --------------------------------------------------- 366s > 366s > env1 <- new.env(parent = globalenv()) 366s > env2 <- new.env(parent = env1) 366s > env3 <- new.env(parent = env2) 366s > env4 <- new.env(parent = env3) 366s > # expect_true(is.character(ename <- unitizer:::env_name(env3)) && 366s > # identical(length(ename), 1L)) 366s > is.character(ename <- unitizer:::env_name(env3)) && identical(length(ename), 1L) 366s [1] TRUE 366s > # expect_true(is.character(envanc <- unitizer:::env_ancestry(env4)) && 366s > # identical(length(envanc), 5L) && identical(envanc[[5L]], 366s > # "R_GlobalEnv")) 366s > is.character(envanc <- unitizer:::env_ancestry(env4)) && 366s + identical(length(envanc), 5L) && identical(envanc[[5L]], "R_GlobalEnv") 366s [1] TRUE 366s > 366s > # - "deparse peek" ------------------------------------------------------------- 366s > 366s > expr1 <- quote(1 + 1 + 3) 366s > expr2 <- quote(for (i in 1:100) { 366s + loop.val <- sample(1:1000, 200, replace = TRUE) 366s + loop.val <- loop.val * 200/3000 * mean(runif(20000)) 366s + }) 366s > # expect_equal("1 + 1 + 3", unitizer:::deparse_peek(expr1, 20L)) 366s > unitizer:::deparse_peek(expr1, 20L) 366s [1] "1 + 1 + 3" 366s > 366s > # expect_error(unitizer:::deparse_peek(expr1, 3L)) 366s > try(unitizer:::deparse_peek(expr1, 3L)) 366s Error in unitizer:::deparse_peek(expr1, 3L) : 366s Argument `len` must be an integer greater than four 366s > # expect_equal("1 ...", unitizer:::deparse_peek(expr1, 5L)) 366s > unitizer:::deparse_peek(expr1, 5L) 366s [1] "1 ..." 366s > 366s > # expect_equal("for (i in 1:100) { loop.val <- sam...", unitizer:::deparse_peek(expr2, 366s > # 40L)) 366s > unitizer:::deparse_peek(expr2, 40L) 366s [1] "for (i in 1:100) { loop.val <- sam..." 366s > 366s > # - "deparse fun" -------------------------------------------------------------- 366s > 366s > # expect_identical(unitizer:::deparse_fun(quote(fun)), "fun") 366s > unitizer:::deparse_fun(quote(fun)) 366s [1] "fun" 366s > # expect_identical(unitizer:::deparse_fun(quote(function(x) NULL)), 366s > # NA_character_) 366s > unitizer:::deparse_fun(quote(function(x) NULL)) 366s [1] NA 366s > # expect_identical(unitizer:::deparse_fun("hello"), character(0L)) 366s > unitizer:::deparse_fun("hello") 366s character(0) 366s > 366s > # - "deparse_prompt" ----------------------------------------------------------- 366s > 366s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 366s > item <- unitizer:::exec(quote(if (TRUE) { 366s + 25 366s + } else { 366s + 42 366s + }), new.env(), glob) 366s > unitizer:::deparse_prompt(item) 366s [1] "> if (TRUE) {" "+ 25" "+ } else {" "+ 42" 366s [5] "+ }" 366s > 366s > # - "deparse_mixed" ------------------------------------------------------------ 366s > 366s > b <- setNames(1:3, letters[1:3]) 366s > x <- quote(1 + b) 366s > x[[3]] <- b 366s > # expect_equal(unitizer:::deparse_mixed(x), "quote(1 + 1:3)") 366s > unitizer:::deparse_mixed(x) 366s [1] "quote(1 + 1:3)" 366s > y <- quote(1 + 3 + b) 366s > y[[3]] <- b 366s > # expect_equal(unitizer:::deparse_mixed(y), "quote(1 + 3 + 1:3)") 366s > unitizer:::deparse_mixed(y) 366s [1] "quote(1 + 3 + 1:3)" 366s > 366s > # - "(Un)ordered Lists" -------------------------------------------------------- 366s > 366s > vec <- c("hello htere how are you blah blah blah blah blah", 366s + "this is helpful you know", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", 366s + letters[1:10]) 366s > 366s > # expect_equal(as.character(unitizer:::OL(vec), width = 100L), 366s > # c(" 1. hello htere how are you blah blah blah blah blah", 366s > # " 2. this is helpful you know", " 3. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut ", 366s > # " labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco ", 366s > # " laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in ", 366s > # " voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat ", 366s > # " non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", 366s > # " 4. a", " 5. b", " 6. c", " 7. d", " 8. e", " 9. f", 366s > # "10. g", "11. h", "12. i", "13. j")) 366s > writeLines(as.character(unitizer:::OL(vec), width = 100L)) 366s 1. hello htere how are you blah blah blah blah blah 366s 2. this is helpful you know 366s 3. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut 366s labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 366s laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in 366s voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat 366s non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 366s 4. a 366s 5. b 366s 6. c 366s 7. d 366s 8. e 366s 9. f 366s 10. g 366s 11. h 366s 12. i 366s 13. j 366s > 366s > # expect_equal(as.character(unitizer:::UL(vec), width = 20L), c("- hello htere how ", 366s > # " are you blah blah ", " blah blah blah", "- this is helpful ", 366s > # " you know", "- Lorem ipsum dolor ", " sit amet, consec-", 366s > # " tetur adipisicing ", " elit, sed do ", " eiusmod tempor ", 366s > # " incididunt ut ", " labore et dolore ", " magna aliqua. Ut ", 366s > # " enim ad minim ", " veniam, quis ", " nostrud exer-", 366s > # " citation ullamco ", " laboris nisi ut ", " aliquip ex ea ", 366s > # " commodo consequat.", " Duis aute irure ", " dolor in reprehen-", 366s > # " derit in voluptate", " velit esse cillum ", " dolore eu fugiat ", 366s > # " nulla pariatur. ", " Excepteur sint ", " occaecat cupidatat", 366s > # " non proident, sunt", " in culpa qui ", " officia deserunt ", 366s > # " mollit anim id est", " laborum.", "- a", "- b", "- c", 366s > # "- d", "- e", "- f", "- g", "- h", "- i", "- j")) 366s > 366s > writeLines(as.character(unitizer:::UL(vec), width = 20L)) 366s - hello htere how 366s are you blah blah 366s blah blah blah 366s - this is helpful 366s you know 366s - Lorem ipsum dolor 366s sit amet, consec- 366s tetur adipisicing 366s elit, sed do 366s eiusmod tempor 366s incididunt ut 366s labore et dolore 366s magna aliqua. Ut 366s enim ad minim 366s veniam, quis 366s nostrud exer- 366s citation ullamco 366s laboris nisi ut 366s aliquip ex ea 366s commodo consequat. 366s Duis aute irure 366s dolor in reprehen- 366s derit in voluptate 366s velit esse cillum 366s dolore eu fugiat 366s nulla pariatur. 366s Excepteur sint 366s occaecat cupidatat 366s non proident, sunt 366s in culpa qui 366s officia deserunt 366s mollit anim id est 366s laborum. 366s - a 366s - b 366s - c 366s - d 366s - e 366s - f 366s - g 366s - h 366s - i 366s - j 366s > 366s > # test_that("Messing with traceback", { 366s > # warning("Missing traceback tests") 366s > # # Main problem with this is that there may not be a good way to cause a trace 366s > # # back to register while not also stopping execution of this file, so not 366s > # # sure if this can be tested 366s > # } ) 366s > 366s > # - "Compare Conditions" ------------------------------------------------------- 366s > 366s > lst1 <- new("conditionList", .items = list(simpleWarning("warning", 366s + quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 366s + simpleWarning("warning3", quote(yo3 + yo)), simpleError("error1", 366s + quote(make_an_error())))) 366s > lst2 <- new("conditionList", .items = list(simpleWarning("warning", 366s + quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 366s + simpleError("error1", quote(make_an_error())))) 366s > 366s > all.equal(lst1, lst1) 366s [1] TRUE 366s > # expect_equal("Condition count mismatch; expected 4 (got 3)", 366s > # all.equal(lst1, lst2)) 366s > all.equal(lst1, lst2)# 366s [1] "Condition count mismatch; expected 4 (got 3)" 366s > # expect_equal("There is one condition mismatch at index [[3]]", 366s > # all.equal(lst2, lst1[1L:3L])) 366s > all.equal(lst2, lst1[1L:3L]) 366s [1] "There is one condition mismatch at index [[3]]" 366s > # expect_equal("There are 2 condition mismatches, first one at index [[1]]", 366s > # all.equal(lst2, lst1[2L:4L])) 366s > all.equal(lst2, lst1[2L:4L]) 366s [1] "There are 2 condition mismatches, first one at index [[1]]" 366s > attr(lst1[[3L]], "unitizer.printed") <- TRUE 366s > # expect_equal("There is one condition mismatch at index [[3]]", 366s > # all.equal(lst2, lst1[1L:3L])) 366s > all.equal(lst2, lst1[1L:3L]) 366s [1] "There is one condition mismatch at index [[3]]" 366s > # expect_equal(c("Condition type mismatch, `target` is 'Error', but `current` is 'Warning'", 366s > # "Condition mismatch may involve print/show methods; carefully review conditions with `.NEW$conditions` and `.REF$conditions` as just typing `.ref` or `.new` at the prompt will invoke print/show methods, which themselves may be the cause of the mismatch"), 366s > # all.equal(lst2[[3]], lst1[[3]])) 366s > all.equal(lst2[[3]], lst1[[3]]) 366s [1] "Condition type mismatch, `target` is 'Error', but `current` is 'Warning'" 366s [2] "Condition mismatch may involve print/show methods; carefully review conditions with `.NEW$conditions` and `.REF$conditions` as just typing `.ref` or `.new` at the prompt will invoke print/show methods, which themselves may be the cause of the mismatch" 366s > 366s > attr(lst1[[3L]], "unitizer.printed") <- NULL 366s > lst1[[2L]] <- simpleWarning("warning2", quote(yo2 + yoyo)) 366s > # This used to produce "one condition mismatch at index [[2]]", but with the 366s > # relation of condition call comparison, no longer fails. Arguably this one 366s > # should still fail as none of the parameters are named. 366s > all.equal(lst2, lst1[c(1L:2L, 4L)]) 366s [1] TRUE 366s > 366s > # single condition display with a more complex condition 366s > large.cond <- simpleWarning(paste0(collapse = "\n", c("This is a complicated warning:", 366s + as.character(unitizer:::UL(c("one warning", "two warning", 366s + "three warning"))))), quote(make_a_warning())) 366s > lst3 <- new("conditionList", .items = list(large.cond)) 366s > show1 <- capture.output(show(lst3)) 366s > all.equal(show1, rds("misc_cndlistshow1")) 366s [1] TRUE 366s > 366s > attr(lst3[[1L]], "unitizer.printed") <- TRUE 366s > lst3[[2L]] <- simpleWarning("warning2", quote(yo2 + yoyo)) 366s > lst3 366s Condition list with 2 conditions: 366s 1. [print] Warning in make_a_warning() : This is a complicated warning: 366s - one warning 366s - two warning 366s - three warning 366s 2. Warning in yo2 + yoyo : warning2 366s 366s [print] means condition was issued by a print or show method for an auto-printed 366s result. 366s > 366s > # empty condition 366s > lst3[0] 366s Empty condition list 366s > 366s > # Conditions with mismatched calls (due to instability in call generation for C 366s > # errors issue285) 366s > lst4a <- new("conditionList", 366s + .items = list( 366s + simpleWarning("A", quote(fun(a=b, c=d))), 366s + simpleWarning("B", quote(fun(a=b, c=d))), 366s + simpleWarning("C", quote(fun(a=b, c=d))), 366s + simpleWarning("D", quote(fun(a, c=d))), 366s + simpleWarning("E", quote(fun())), 366s + simpleWarning("F"), 366s + simpleWarning("G", quote(fun(a=b, c=d))), 366s + simpleWarning("H", quote(fun(a=b, c=d))), 366s + simpleWarning("I", quote(foo(a=b, c=d))) 366s + )) 366s > lst4b <- new("conditionList", 366s + .items = list( 366s + simpleWarning("A", quote(fun(a=b, c=d))), 366s + simpleWarning("B", quote(fun(a=B, c=d))), 366s + simpleWarning("C", quote(fun(b, c=d))), 366s + simpleWarning("D", quote(fun(a=b, c=d))), 366s + simpleWarning("E", quote(fun(a=b, c=d))), 366s + simpleWarning("F", quote(fun(a=b, c=d))), 366s + simpleWarning("G"), 366s + simpleWarning("H", quote(fun())), 366s + simpleWarning("I", quote(bar(a=b, c=d))) 366s + )) 366s > all.equal(lst4a, lst4b) 366s [1] "There are 2 condition mismatches, first one at index [[2]]" 366s > all.equal(lst4a[c(2, 9)], lst4b[c(2, 9)]) 366s [1] "There are 2 condition mismatches, first one at index [[1]]" 366s > 366s > # - "Compare Functions With Traces" -------------------------------------------- 366s > 366s > fun.a <- base::library 366s > identical(fun.a, base::library) 366s [1] TRUE 366s > trace(library, where = .BaseNamespaceEnv) 366s Tracing function "library" in package "namespace:base" 366s [1] "library" 366s > identical(fun.a, base::library) # FALSE 366s [1] FALSE 366s > unitizer:::identical_fun(fun.a, base::library) 366s [1] TRUE 366s > unitizer:::identical_fun(base::library, fun.a) # FALSE 366s [1] FALSE 366s > untrace(library, where = .BaseNamespaceEnv) 366s Untracing function "library" in package "namespace:base" 366s > # expect_error(unitizer:::identical_fun(1, base::library)) 366s > try(unitizer:::identical_fun(1, base::library)) 366s Error in unitizer:::identical_fun(1, base::library) : 366s Arguments `x` and `y` must both be functions. 366s > # expect_error(unitizer:::identical_fun(base::library, 1)) 366s > try(unitizer:::identical_fun(base::library, 1)) 366s Error in unitizer:::identical_fun(base::library, 1) : 366s Arguments `x` and `y` must both be functions. 366s > unitizer:::identical_fun(base::print, base::print) 366s [1] TRUE 366s > # make sure all.equal dispatches properly out of namespace 366s > 366s > # expect_equal(evalq(all.equal(new("conditionList", .items = list(simpleWarning("warning", 366s > # quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 366s > # simpleWarning("warning3", quote(yo3 + yo)), simpleError("error1", 366s > # quote(make_an_error())))), new("conditionList", .items = list(simpleWarning("warning", 366s > # quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 366s > # simpleError("error1", quote(make_an_error()))))), envir = getNamespace("stats")), 366s > # "Condition count mismatch; expected 4 (got 3)") 366s > evalq(all.equal(new("conditionList", .items = list(simpleWarning("warning", 366s + quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 366s + simpleWarning("warning3", quote(yo3 + yo)), simpleError("error1", 366s + quote(make_an_error())))), new("conditionList", .items = list(simpleWarning("warning", 366s + quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 366s + simpleError("error1", quote(make_an_error()))))), envir = getNamespace("stats")) 366s [1] "Condition count mismatch; expected 4 (got 3)" 366s > 366s > # - "word_cat" ----------------------------------------------------------------- 366s > 366s > str <- "Humpty dumpty sat on a wall and took a big fall. All the kings horses and men couldn't put humpty dumpty together again" 366s > # expect_equal(capture.output(unitizer:::word_cat(str, width = 20L)), 366s > # c("Humpty dumpty sat on", "a wall and took a ", "big fall. All the ", 366s > # "kings horses and men", "couldn't put humpty ", "dumpty together ", 366s > # "again")) 366s > unitizer:::word_cat(str, width = 20L) 366s Humpty dumpty sat on 366s a wall and took a 366s big fall. All the 366s kings horses and men 366s couldn't put humpty 366s dumpty together 366s again 366s > # expect_error(unitizer:::word_cat(stop("boom"), width = 20L, sep = " "), 366s > # "boom") 366s > try(unitizer:::word_cat(stop("boom"), width = 20L, sep = " ")) 366s Error in word_wrap_split(..., width = width, tolerance = tolerance, sep = sep) : 366s boom 366s > str2 <- rep("goodbye goodbye") 366s > str1 <- rep("hello hello hello", 2) 366s > # expect_equal(c("hello hello ", "hello hello ", "hello hello ", 366s > # "goodbye ", "goodbye"), capture.output()) 366s > unitizer:::word_cat(str1, str2, width = 14L) 366s hello hello 366s hello hello 366s hello hello 366s goodbye 366s goodbye 366s > 366s > # Make sure default works 366s > old.width <- options(width = 20L) 366s > # expect_equal(capture.output(unitizer:::word_cat(str)), c("Humpty dumpty sat on", 366s > # "a wall and took a ", "big fall. All the ", "kings horses and men", 366s > # "couldn't put humpty ", "dumpty together ", "again")) 366s > unitizer:::word_cat(str) 366s Humpty dumpty sat on 366s a wall and took a 366s big fall. All the 366s kings horses and men 366s couldn't put humpty 366s dumpty together 366s again 366s > options(old.width) 366s > 366s > # - "relativize_path" ---------------------------------------------------------- 366s > 366s > base <- file.path(system.file(package = "unitizer"), "expkg") 366s > wd <- file.path(base, "infer") 366s > p1 <- file.path(wd, "R") 366s > p2 <- file.path(base, "unitizerdummypkg1") 366s > # expect_equal(unitizer:::relativize_path(p1, wd), "R") 366s > unitizer:::relativize_path(p1, wd) 366s [1] "R" 366s > # expect_equal(unitizer:::relativize_path(p2, wd), "../unitizerdummypkg1") 366s > unitizer:::relativize_path(p2, wd) 366s [1] "../unitizerdummypkg1" 366s > # expect_equal(unitizer:::relativize_path(c(p1, p2), wd), c("R", 366s > # "../unitizerdummypkg1")) 366s > unitizer:::relativize_path(c(p1, p2), wd) 366s [1] "R" "../unitizerdummypkg1" 366s > # expect_equal(unitizer:::relativize_path(c(p1, p2), wd), c("R", 366s > # "../unitizerdummypkg1")) 366s > unitizer:::relativize_path(c(p1, p2), wd) 366s [1] "R" "../unitizerdummypkg1" 366s > # expect_equal(unitizer:::relativize_path(c(p1, p2, file.path("notarealpath", 366s > # "foo")), wd), c("R", "../unitizerdummypkg1", file.path("notarealpath", 366s > # "foo"))) 366s > unitizer:::relativize_path( 366s + c(p1, p2, file.path("notarealpath", "foo")), wd 366s + ) 366s [1] "R" "../unitizerdummypkg1" "notarealpath/foo" 366s > # expect_equal(unitizer:::relativize_path("/a/b/c/d/e/x.txt"), 366s > # "/a/b/c/d/e/x.txt") 366s > unitizer:::relativize_path("/a/b/c/d/e/x.txt", exists = TRUE) 366s [1] "/a/b/c/d/e/x.txt" 366s > # ## This was too difficult to get to behave consistently across windows and 366s > # ## other platforms (see docs) 366s > # wd <- sub("^[a-zA-Z]:", "", getwd()) 366s > # all.equal( 366s > # unitizer:::relativize_path( 366s > # "/a/b/c/d/e/x.txt", only.if.shorter = FALSE, exists = TRUE 366s > # ), 366s > # do.call( 366s > # file.path, 366s > # c( 366s > # as.list( 366s > # rep( 366s > # "..", 366s > # length(unlist(strsplit(wd, .Platform$file.sep, fixed = TRUE))) - 366s > # 1L 366s > # ) ), 366s > # list("a/b/c/d/e/x.txt") 366s > # ) ) ) 366s > 366s > # - "path_clean" --------------------------------------------------------------- 366s > 366s > try(unitizer:::path_clean(list())) 366s Error in unitizer:::path_clean(list()) : 366s Argument `path` must be character 366s > unitizer:::path_clean(file.path("a", "", "b", "c")) 366s [1] "a/b/c" 366s > 366s > # - "unitizer:::merge_lists" --------------------------------------------------- 366s > 366s > unitizer:::merge_lists(list(a = 1, b = 2), list(c = 3)) 366s $a 366s [1] 1 366s 366s $b 366s [1] 2 366s 366s $c 366s [1] 3 366s 366s > unitizer:::merge_lists(list(a = 1, b = 2, c = 3), list(d = 5, c = 5)) 366s $a 366s [1] 1 366s 366s $b 366s [1] 2 366s 366s $c 366s [1] 5 366s 366s $d 366s [1] 5 366s 366s > unitizer:::merge_lists(list(a = 1, b = 2, c = 3), list(a = NULL, d = 5, c = 5)) 366s $a 366s NULL 366s 366s $b 366s [1] 2 366s 366s $c 366s [1] 5 366s 366s $d 366s [1] 5 366s 366s > 366s > # - "filename to storeid" ------------------------------------------------------ 366s > 366s > filename_to_storeid("tests.R") 366s [1] "tests.unitizer" 366s > filename_to_storeid("tests.rock") 366s Warning in filename_to_storeid("tests.rock") : 366s Unable to translate file name 'tests.rock' to `store.id` because it does not match regex '\.[rR]$', please provide explicit `store.id` or rename to end in '.R'. Returning in NULL for `store.id`. 366s NULL 366s > 366s > # - "pretty_path" -------------------------------------------------------------- 366s > # not supposed to exist 366s > res <- unitizer:::pretty_path("xadfasdfxcfasdfasd") # warn 366s > 366s > if(FALSE) { 366s + # "fails CRAN" 366s + # expect_identical(res, "xadfasdfxcfasdfasd") 366s + res 366s + unitizer:::pretty_path(normalizePath(".")) 366s + unitizer:::pretty_path(file.path(system.file(package = "stats"), 366s + "DESCRIPTION")) 366s + } 366s > # - "quit" --------------------------------------------------------------------- 366s > 366s > # for some reason cover tests run via travis can't handle the with_mock, 366s > # so we just use truly-quit=FALSE; UPDATE (mabye du to compiler?) 366s > # with_mock( 366s > # quit=function(...) stop("quit!\n"), { 366s > # unitizer:::read_line_set_vals("y") 366s > # expect_error(capture.output(unitizer:::unitizer_quit()), "quit!") 366s > # unitizer:::read_line_set_vals("n") 366s > # capture.output(uq2 <- unitizer:::unitizer_quit()) 366s > # expect_equal(uq2, NULL) 366s > # unitizer:::read_line_set_vals(c("q", "q", "q", "q", "q", "q")) 366s > # expect_error(capture.output(unitizer:::unitizer_quit()), "quit!") 366s > # } 366s > # ) 366s > unitizer:::read_line_set_vals("y") 366s > capture.output(q.res.1 <- unitizer:::unitizer_quit(truly.quit = FALSE)) 366s | You are attempting to quit R from within `unitizer`. If you do so 366s | you will lose any unsaved `unitizers`. Use `Q` to quit `unitizer` 366s | gracefully. Are you sure you want to exit R? 366s 366s [1] "Quit R? [y/n]: y" 366s > q.res.1 366s [1] TRUE 366s > unitizer:::read_line_set_vals("n") 366s > capture.output(q.res.2 <- unitizer:::unitizer_quit(truly.quit = FALSE)) 366s | You are attempting to quit R from within `unitizer`. If you do so 366s | you will lose any unsaved `unitizers`. Use `Q` to quit `unitizer` 366s | gracefully. Are you sure you want to exit R? 366s 366s [1] "Quit R? [y/n]: n" 366s > q.res.2 # FALSE 366s [1] FALSE 366s > unitizer:::read_line_set_vals(c("q", "q", "q", "q", "q", "q")) 366s > capture.output(q.res.3 <- unitizer:::unitizer_quit(truly.quit = FALSE)) 366s | You are attempting to quit R from within `unitizer`. If you do so 366s | you will lose any unsaved `unitizers`. Use `Q` to quit `unitizer` 366s | gracefully. Are you sure you want to exit R? 366s 366s | Sorry, could not understand you, quitting then. 366s 366s [1] "Quit R? [y/n]: q" "Quit R? [y/n]: q" "Quit R? [y/n]: q" "Quit R? [y/n]: q" 366s [5] "Quit R? [y/n]: q" "Quit R? [y/n]: q" 366s > q.res.3 366s [1] TRUE 366s > unitizer:::read_line_set_vals(NULL) 366s > 366s > # - "mock_item" ---------------------------------------------------------------- 366s > 366s > is(mock_item(), "unitizerItem") 366s [1] TRUE 366s > 366s > # - "diff conditionList" ------------------------------------------------------- 366s > 366s > cond1 <- new("conditionList", .items = list(simpleWarning("hello", 366s + call = quote(fun())), simpleWarning("goodbye", call = quote(fun())))) 366s > is(diffobj::diffObj(cond1, cond1), "Diff") 366s [1] TRUE 366s > 366s > # - "Condition object structure" ----------------------------------------------- 366s > 366s > # We're assuming a particular structure for the condition object in 366s > # `faux_prompt` and `unitizer_prompt` so we put in a test here to make sure it 366s > # doesn't change 366s > cond <- simpleError("hello") 366s > is.list(cond) 366s [1] TRUE 366s > identical(names(cond), c("message", "call")) 366s [1] TRUE 366s > identical(class(cond), c("simpleError", "error", "condition")) 366s [1] TRUE 366s > 366s > # - "options" ------------------------------------------------------------------ 366s > 366s > # not great tests... 366s > 366s > old.opts <- options() 366s > new.opts <- unitizer:::options_zero() 366s > 366s > all(names(new.opts) %in% names(old.opts)) 366s [1] TRUE 366s > length(new.opts) <= length(old.opts) 366s [1] TRUE 366s > options(old.opts) 366s > 366s > 366s PASS 366s Begin testing t-nav.R 366s 366s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 366s Copyright (C) 2024 The R Foundation for Statistical Computing 366s Platform: s390x-ibm-linux-gnu (64-bit) 366s 366s R is free software and comes with ABSOLUTELY NO WARRANTY. 366s You are welcome to redistribute it under certain conditions. 366s Type 'license()' or 'licence()' for distribution details. 366s 366s R is a collaborative project with many contributors. 366s Type 'contributors()' for more information and 366s 'citation()' on how to cite R or R packages in publications. 366s 366s Type 'demo()' for some demos, 'help()' for on-line help, or 366s 'help.start()' for an HTML browser interface to help. 366s Type 'q()' to quit R. 366s 366s > source(file.path("_helper", "init.R")) 367s > nav <- file.path("_helper", "unitizers", "nav.R") 367s > 367s > # Simple navigation tests that don't require complex unitizers 367s > 367s > # - "Re-run bookmark" -----=---------------------------------------------------- 367s > 367s > # Relates to #278. Tests both Review and Browse 367s > 367s > unitizer:::read_line_set_vals( 367s + c("R", "Y", "B", "7", "R", "Y", "B", "9", "R", "Y", "Q") 367s + ) 367s > unitize(nav, interactive.mode=TRUE) 367s 367s +------------------------------------------------------------------------------+ 367s | unitizer for: nav.R | 367s +------------------------------------------------------------------------------+ 367s 367s Pass Fail New 367s A - - 2 367s B - - 2 367s .................. 367s - - 4 367s 367s = A ============================================================================ 367s 367s - New -------------------------------------------------------------------------- 367s 367s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 367s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 367s 367s > a <- 42 367s > a + 1 367s [1] 43 367s 367s unitizer> R 367s 367s | Toggling re-run mode ON for this unitizer 367s 368s = Finalize Unitizer ============================================================ 368s 368s | You have 4 unreviewed tests; press `B` to browse tests, `U` to go to first 368s | unreviewed test. 368s 368s | You made no changes to the unitizer so there is no need to update it. While 368s | unnecessary, you can force an update by typing O at the prompt. 368s 368s | Re-run unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 368s 368s unitizer> Y 368s 368s | unitizer unchanged. 368s 368s +------------------------------------------------------------------------------+ 368s | unitizer for: nav.R | 368s +------------------------------------------------------------------------------+ 368s 368s Pass Fail New 368s A - - 2 368s B - - 2 368s .................. 368s - - 4 368s 368s = A ============================================================================ 368s 368s - New -------------------------------------------------------------------------- 368s 368s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 368s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 368s 368s | Jumping to test #3 because that was the test under review when test re-run was 368s | requested. 368s 368s > a <- 42 368s > a + 1 368s [1] 43 368s 368s unitizer> B 368s 368s = ============== 368s *1. z <- 24 . . -:- 368s = A ======================= 368s *2. a <- 42 . . -:- 368s 3. a + 1 . . . New:- 368s 4. a + 2 . . . New:- 368s = B ======================= 368s *5. b <- 25 . . -:- 368s *6. bb <- 26 . . -:- 368s 7. b + 1 . . . New:- 368s *8. bbb <- 27 . . -:- 368s 9. b + 2 . . . New:- 368s 368s | What test do you wish to review (input a test number, [U]nreviewed)? 368s 368s unitizer> 7 368s = B ============================================================================ 368s 368s - New -------------------------------------------------------------------------- 368s 368s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 368s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 368s 368s > b <- 25 368s > bb <- 26 368s > b + 1 368s [1] 26 368s 368s unitizer> R 368s 368s | Toggling re-run mode ON for this unitizer 368s 368s = Finalize Unitizer ============================================================ 368s 368s | You have 4 unreviewed tests; press `B` to browse tests, `U` to go to first 368s | unreviewed test. 368s 368s | You made no changes to the unitizer so there is no need to update it. While 368s | unnecessary, you can force an update by typing O at the prompt. 368s 368s | Re-run unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 368s 368s unitizer> Y 368s 368s | unitizer unchanged. 368s 368s +------------------------------------------------------------------------------+ 368s | unitizer for: nav.R | 368s +------------------------------------------------------------------------------+ 368s 368s Pass Fail New 368s A - - 2 368s B - - 2 368s .................. 368s - - 4 368s 368s = B ============================================================================ 368s 368s - New -------------------------------------------------------------------------- 368s 368s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 368s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 368s 368s | Jumping to test #7 because that was the test under review when test re-run was 368s | requested. 368s 368s > b <- 25 368s > bb <- 26 368s > b + 1 368s [1] 26 368s 368s unitizer> B 368s 368s = ============== 368s *1. z <- 24 . . -:- 368s = A ======================= 368s *2. a <- 42 . . -:- 368s 3. a + 1 . . . New:- 368s 4. a + 2 . . . New:- 368s = B ======================= 368s *5. b <- 25 . . -:- 368s *6. bb <- 26 . . -:- 368s 7. b + 1 . . . New:- 368s *8. bbb <- 27 . . -:- 368s 9. b + 2 . . . New:- 368s 368s | What test do you wish to review (input a test number, [U]nreviewed)? 368s 368s unitizer> 9 368s = B ============================================================================ 368s 368s - New -------------------------------------------------------------------------- 368s 368s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 368s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 368s 368s > bbb <- 27 368s > b + 2 368s [1] 27 368s 368s unitizer> R 368s 368s | Toggling re-run mode ON for this unitizer 368s 369s = Finalize Unitizer ============================================================ 369s 369s | You have 4 unreviewed tests; press `B` to browse tests, `U` to go to first 369s | unreviewed test. 369s 369s | You made no changes to the unitizer so there is no need to update it. While 369s | unnecessary, you can force an update by typing O at the prompt. 369s 369s | Re-run unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 369s 369s unitizer> Y 369s 369s | unitizer unchanged. 369s 369s +------------------------------------------------------------------------------+ 369s | unitizer for: nav.R | 369s +------------------------------------------------------------------------------+ 369s 369s Pass Fail New 369s A - - 2 369s B - - 2 369s .................. 369s - - 4 369s 369s = B ============================================================================ 369s 369s - New -------------------------------------------------------------------------- 369s 369s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 369s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 369s 369s | Jumping to test #9 because that was the test under review when test re-run was 369s | requested. 369s 369s > bbb <- 27 369s > b + 2 369s [1] 27 369s 369s unitizer> Q 369s 369s | No changes recorded. 369s | unitizer unchanged. 369s 369s > 369s > 369s PASS 369s Begin testing t-parse.R 369s 369s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 369s Copyright (C) 2024 The R Foundation for Statistical Computing 369s Platform: s390x-ibm-linux-gnu (64-bit) 369s 369s R is free software and comes with ABSOLUTELY NO WARRANTY. 369s You are welcome to redistribute it under certain conditions. 369s Type 'license()' or 'licence()' for distribution details. 369s 369s R is a collaborative project with many contributors. 369s Type 'contributors()' for more information and 369s 'citation()' on how to cite R or R packages in publications. 369s 369s Type 'demo()' for some demos, 'help()' for on-line help, or 369s 'help.start()' for an HTML browser interface to help. 369s Type 'q()' to quit R. 369s 369s > source(file.path("_helper", "init.R")) 369s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 369s > 369s > txt <- "# This is an early comment\n\n hello <- 25\n\n # multi\n # line\n # comment\n\n matrix(1:9, 3) # and another!\n\n unitizer_sect(\"here is a section\", {\n # test that were not crazy\n\n 1 + 1 == 2 # TRUE hopefully\n\n # Still not crazy\n\n 2 * 2 == 2 ^ 2\n # Tada\n } )\n sample(1:10)\n\n # and this comment belongs to whom?\n\n runif(20)\n print(\"woo\") # and I?\n " 369s > all <- unitizer:::parse_dat_get(text = txt) 369s > prs <- all$expr 369s > dat <- all$dat 369s > dat$parent <- pmax(0L, dat$parent) 369s > # With R4.0 some of the ids started changing 370s > normalize_id <- function(dat) { 370s + idu <- sort(unique(dat[["id"]])) 370s + id <- with(dat, match(id, idu)) 370s + parent <- with(dat, ifelse(parent == 0L, 0L, match(parent, 370s + idu))) 370s + dat[["id"]] <- id 370s + dat[["parent"]] <- parent 370s + dat 370s + } 370s > dat <- normalize_id(dat) 370s > dat.split <- dat.split.2 <- par.ids.3 <- NULL 370s > if.text <- "if # IFFY\n(x > 3 # ifcond\n){ hello\n #whome to attach?\n} else #final\ngoodbye" 370s > 370s > # - "Top Level Parents Identified Correctly" ----------------------------------- 370s > 370s > # "Identified top level parents?" 370s > par.ids <- with(dat, unitizer:::top_level_parse_parents(id, parent)) 370s > par.ids 370s [1] 0 0 7 7 7 7 7 0 0 0 0 24 24 24 24 24 24 24 24 24 24 24 24 24 0 370s [26] 0 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 370s [51] 64 64 64 64 64 64 64 64 64 64 64 64 64 64 0 75 75 75 75 75 75 75 75 75 75 370s [76] 0 0 83 83 83 83 83 83 0 90 90 90 90 90 90 0 370s > dat.split <- split(dat, par.ids) 370s > 370s > # "Identified sub-level top level parents correctly" 370s > par.ids.2 <- with(dat.split$`64`, unitizer:::top_level_parse_parents(id, 370s + parent, 64L)) 370s > par.ids.2 370s [1] 28 64 64 31 64 64 64 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 62 370s [26] 62 62 62 62 62 62 62 62 62 62 62 62 64 370s > dat.split.2 <- split(dat.split$`64`, par.ids.2) 370s > 370s > # "Parent relationships in `unitizer_sect` piece." 370s > 370s > par.ids.3 <- with(dat.split.2$`62`, unitizer:::top_level_parse_parents(id, 370s + parent, 62L)) 370s > par.ids.3 370s [1] 62 62 62 44 44 44 44 44 44 44 44 44 62 62 62 59 59 59 59 59 59 59 59 59 59 370s [26] 59 59 59 62 62 370s > 370s > # - "Comments Are Assigned" ---------------------------------------------------- 370s > 370s > # "Did we assign comments correctly to topmost level?" 370s > lapply(unitizer:::comments_assign(prs, dat.split$`0`), attr, "comment") 370s [[1]] 370s [1] "# This is an early comment" 370s 370s [[2]] 370s [1] "# multi" "# line" "# comment" "# and another!" 370s 370s [[3]] 370s NULL 370s 370s [[4]] 370s NULL 370s 370s [[5]] 370s [1] "# and this comment belongs to whom?" 370s 370s [[6]] 370s [1] "# and I?" 370s 370s > 370s > # "No comments here so no changes should occur" 370s > all.equal(unitizer:::comments_assign(prs[[3]], dat.split.2$`64`), prs[[3]]) 370s [1] TRUE 370s > 370s > # "Comments in `unitizer_sect` body assigned correctly" 370s > lapply(unitizer:::comments_assign(prs[[3]][[3]], split(dat.split.2$`62`, 370s + par.ids.3)$`62`), attr, "comment") 370s [[1]] 370s NULL 370s 370s [[2]] 370s [1] "# test that were not crazy" "# TRUE hopefully" 370s 370s [[3]] 370s [1] "# Still not crazy" 370s 370s > 370s > # - "Ancestry Descend" --------------------------------------------------------- 370s > 370s > x <- unitizer:::parse_dat_get(text = "1 + 1; fun(x, fun(y + z))")$dat 370s > x <- normalize_id(x) 370s > 370s > unitizer:::ancestry_descend(x$id, x$parent, 0) 370s children level 370s [1,] 7 0 370s [2,] 6 0 370s [3,] 26 0 370s [4,] 2 1 370s [5,] 3 1 370s [6,] 5 1 370s [7,] 10 1 370s [8,] 9 1 370s [9,] 13 1 370s [10,] 12 1 370s [11,] 24 1 370s [12,] 25 1 370s [13,] 1 2 370s [14,] 4 2 370s [15,] 8 2 370s [16,] 11 2 370s [17,] 16 2 370s [18,] 15 2 370s [19,] 23 2 370s [20,] 21 2 370s [21,] 14 3 370s [22,] 19 3 370s [23,] 18 3 370s [24,] 22 3 370s [25,] 17 4 370s [26,] 20 4 370s > 370s > # - "Clean up Parse Data" ------------------------------------------------------ 370s > 370s > dat <- unitizer:::parse_dat_get(text = "{function(x) NULL;; #comment\n}")$dat 370s > # set negative ids to be top level parents 370s > dat <- transform(dat, parent = ifelse(parent < 0, 0L, parent)) 370s > dat <- normalize_id(dat) 370s > 370s > # "Ancestry Descend" 370s > dat.anc <- unitizer:::ancestry_descend(dat$id, dat$parent, 0L) 370s > dat.anc 370s children level 370s [1,] 15 0 370s [2,] 1 1 370s [3,] 13 1 370s [4,] 12 1 370s [5,] 14 1 370s [6,] 11 2 370s [7,] 10 2 370s [8,] 9 3 370s [9,] 8 3 370s [10,] 2 4 370s [11,] 3 4 370s [12,] 4 4 370s [13,] 5 4 370s [14,] 7 4 370s [15,] 6 5 370s > 370s > # "Excise `exprlist`" 370s > unitizer:::prsdat_fix_exprlist(dat, dat.anc)$token 370s [1] "expr" "'{'" "expr" "FUNCTION" 370s [5] "'('" "SYMBOL_FORMALS" "')'" "NULL_CONST" 370s [9] "expr" "COMMENT" "'}'" 370s > 370s > dat.1 <- unitizer:::parse_dat_get(text = "{1 ; ; ;2;}")$dat 370s > # set negative ids to be top level parents 370s > dat.1 <- transform(dat.1, parent = ifelse(parent < 0, 0L, parent)) 370s > dat.1 <- normalize_id(dat.1) 370s > 370s > # "Another `exprlist` test" 370s > unname( 370s + as.list( 370s + unitizer:::prsdat_fix_exprlist( 370s + dat.1, 370s + unitizer:::ancestry_descend(dat.1$id, dat.1$parent, 0L) 370s + )[c("parent", "token")] 370s + ) ) 370s [[1]] 370s [1] 0 14 3 14 10 14 14 370s 370s [[2]] 370s [1] "expr" "'{'" "NUM_CONST" "expr" "NUM_CONST" "expr" 370s [7] "'}'" 370s 370s > dat.2 <- unitizer:::parse_dat_get(text = "{NULL; yowza; #comment\nhello\n}")$dat 370s > # set negative ids to be top level parents 370s > dat.2 <- transform(dat.2, parent = ifelse(parent < 0, 0L, parent)) 370s > dat.2 <- normalize_id(dat.2) 370s > 370s > # "Yet another `exprlist`" 370s > unname( 370s + as.list( 370s + unitizer:::prsdat_fix_exprlist( 370s + dat.2, unitizer:::ancestry_descend(dat.2$id, dat.2$parent, 0L) 370s + )[c("parent", "token")] 370s + ) ) 370s [[1]] 370s [1] 0 13 3 13 7 13 13 11 13 13 370s 370s [[2]] 370s [1] "expr" "'{'" "NULL_CONST" "expr" "SYMBOL" 370s [6] "expr" "COMMENT" "SYMBOL" "expr" "'}'" 370s 370s > 370s > dat.2a <- normalize_id( 370s + unitizer:::parse_dat_get(text = "for(i in x) {if(x) break else next}")$dat 370s + ) 370s > # "`for` cleanup" 370s > 370s > as.list(unitizer:::prsdat_fix_for(dat.2a[-1L, ])) 370s $line1 370s [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 370s 370s $col1 370s [1] 1 5 10 10 13 13 14 14 16 17 17 18 20 20 26 31 31 35 370s 370s $line2 370s [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 370s 370s $col2 370s [1] 3 5 10 10 35 13 34 15 16 17 17 18 24 24 29 34 34 35 370s 370s $id 370s [1] 1 3 5 7 22 9 21 10 11 12 14 13 15 16 17 18 19 20 370s 370s $parent 370s [1] 23 23 7 23 23 22 22 21 21 14 21 21 16 21 21 19 21 22 370s 370s $token 370s [1] "FOR" "SYMBOL" "SYMBOL" "expr" "expr" "'{'" "expr" "IF" 370s [9] "'('" "SYMBOL" "expr" "')'" "BREAK" "expr" "ELSE" "NEXT" 370s [17] "expr" "'}'" 370s 370s $terminal 370s [1] TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE 370s [13] TRUE FALSE TRUE TRUE FALSE TRUE 370s 370s $text 370s [1] "for" "i" "x" "" "" "{" "" "if" "(" 370s [10] "x" "" ")" "break" "" "else" "next" "" "}" 370s 370s > 370s > dat.3 <- normalize_id(unitizer:::parse_dat_get(text = if.text)$dat) 370s > 370s > # "`if` cleanup" 370s > 370s > unname(as.list(unitizer:::prsdat_fix_if(dat.3[-1, ])[c("id", "token")])) 370s [[1]] 370s [1] 1 2 11 4 6 5 7 8 9 17 12 13 14 15 16 19 20 21 370s 370s [[2]] 370s [1] "IF" "COMMENT" "expr" "SYMBOL" "expr" "GT" 370s [7] "NUM_CONST" "expr" "COMMENT" "expr" "'{'" "SYMBOL" 370s [13] "expr" "COMMENT" "'}'" "COMMENT" "SYMBOL" "expr" 370s 370s > 370s > # - "Full Parse Works Properly" ------------------------------------------------ 370s > 370s > # "Full Comment Parse" 370s > unitizer:::comm_extract(unitizer:::parse_with_comments(text = txt)) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s [1] "# This is an early comment" 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[4]] 370s [[2]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[3]] 370s [[3]][[1]] 370s [1] "# multi" "# line" "# comment" "# and another!" 370s 370s [[3]][[2]] 370s [[3]][[2]][[1]] 370s NULL 370s 370s 370s [[3]][[3]] 370s [[3]][[3]][[1]] 370s NULL 370s 370s [[3]][[3]][[2]] 370s [[3]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[3]][[3]][[3]] 370s [[3]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[3]][[3]][[4]] 370s [[3]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[3]][[4]] 370s [[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[4]] 370s [[4]][[1]] 370s NULL 370s 370s [[4]][[2]] 370s [[4]][[2]][[1]] 370s NULL 370s 370s 370s [[4]][[3]] 370s [[4]][[3]][[1]] 370s NULL 370s 370s 370s [[4]][[4]] 370s [[4]][[4]][[1]] 370s NULL 370s 370s [[4]][[4]][[2]] 370s [[4]][[4]][[2]][[1]] 370s NULL 370s 370s 370s [[4]][[4]][[3]] 370s [[4]][[4]][[3]][[1]] 370s [1] "# test that were not crazy" "# TRUE hopefully" 370s 370s [[4]][[4]][[3]][[2]] 370s [[4]][[4]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[4]][[4]][[3]][[3]] 370s [[4]][[4]][[3]][[3]][[1]] 370s NULL 370s 370s [[4]][[4]][[3]][[3]][[2]] 370s [[4]][[4]][[3]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[4]][[4]][[3]][[3]][[3]] 370s [[4]][[4]][[3]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[4]][[4]][[3]][[3]][[4]] 370s [[4]][[4]][[3]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[4]][[4]][[3]][[4]] 370s [[4]][[4]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[4]][[4]][[4]] 370s [[4]][[4]][[4]][[1]] 370s [1] "# Still not crazy" 370s 370s [[4]][[4]][[4]][[2]] 370s [[4]][[4]][[4]][[2]][[1]] 370s NULL 370s 370s 370s [[4]][[4]][[4]][[3]] 370s [[4]][[4]][[4]][[3]][[1]] 370s NULL 370s 370s [[4]][[4]][[4]][[3]][[2]] 370s [[4]][[4]][[4]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[4]][[4]][[4]][[3]][[3]] 370s [[4]][[4]][[4]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[4]][[4]][[4]][[3]][[4]] 370s [[4]][[4]][[4]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[4]][[4]][[4]][[4]] 370s [[4]][[4]][[4]][[4]][[1]] 370s NULL 370s 370s [[4]][[4]][[4]][[4]][[2]] 370s [[4]][[4]][[4]][[4]][[2]][[1]] 370s NULL 370s 370s 370s [[4]][[4]][[4]][[4]][[3]] 370s [[4]][[4]][[4]][[4]][[3]][[1]] 370s NULL 370s 370s 370s [[4]][[4]][[4]][[4]][[4]] 370s [[4]][[4]][[4]][[4]][[4]][[1]] 370s NULL 370s 370s 370s 370s 370s 370s 370s [[5]] 370s [[5]][[1]] 370s NULL 370s 370s [[5]][[2]] 370s [[5]][[2]][[1]] 370s NULL 370s 370s 370s [[5]][[3]] 370s [[5]][[3]][[1]] 370s NULL 370s 370s [[5]][[3]][[2]] 370s [[5]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[5]][[3]][[3]] 370s [[5]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[5]][[3]][[4]] 370s [[5]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s 370s [[6]] 370s [[6]][[1]] 370s [1] "# and this comment belongs to whom?" 370s 370s [[6]][[2]] 370s [[6]][[2]][[1]] 370s NULL 370s 370s 370s [[6]][[3]] 370s [[6]][[3]][[1]] 370s NULL 370s 370s 370s 370s [[7]] 370s [[7]][[1]] 370s [1] "# and I?" 370s 370s [[7]][[2]] 370s [[7]][[2]][[1]] 370s NULL 370s 370s 370s [[7]][[3]] 370s [[7]][[3]][[1]] 370s NULL 370s 370s 370s 370s > 370s > # "EQ_SUB and SYMBOL_SUB test" 370s > unitizer:::comm_extract( 370s + unitizer:::parse_with_comments( 370s + text = "structure(1:3, # the data\nclass # the label\n=#the equal sign\n'hello' # the class\n)" 370s + ) ) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s NULL 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s [1] "# the data" 370s 370s [[2]][[3]][[2]] 370s [[2]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]][[3]] 370s [[2]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[3]][[4]] 370s [[2]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[2]]$class 370s [[2]]$class[[1]] 370s [1] "# the label" "#the equal sign" "# the class" 370s 370s 370s 370s > 370s > # "Function with `exprlist`" 370s > 370s > unitizer:::comm_extract( 370s + unitizer:::parse_with_comments( 370s + text = "function(x #first arg\n, y=25 #second arg with default\n) {x + y; # first comment\n; yo #second comment\n x / y; #lastcomment \n;}" 370s + ) ) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s NULL 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s [1] "#first arg" 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s NULL 370s 370s [[2]][[3]]$x 370s [[2]][[3]]$x[[1]] 370s NULL 370s 370s 370s [[2]][[3]]$y 370s [[2]][[3]]$y[[1]] 370s NULL 370s 370s 370s 370s [[2]][[4]] 370s [[2]][[4]][[1]] 370s [1] "#second arg with default" 370s 370s [[2]][[4]][[2]] 370s [[2]][[4]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[3]] 370s [[2]][[4]][[3]][[1]] 370s [1] "# first comment" 370s 370s [[2]][[4]][[3]][[2]] 370s [[2]][[4]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[3]][[3]] 370s [[2]][[4]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[3]][[4]] 370s [[2]][[4]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[2]][[4]][[4]] 370s [[2]][[4]][[4]][[1]] 370s [1] "#second comment" 370s 370s 370s [[2]][[4]][[5]] 370s [[2]][[4]][[5]][[1]] 370s [1] "#lastcomment " 370s 370s [[2]][[4]][[5]][[2]] 370s [[2]][[4]][[5]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[5]][[3]] 370s [[2]][[4]][[5]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[5]][[4]] 370s [[2]][[4]][[5]][[4]][[1]] 370s NULL 370s 370s 370s 370s 370s [[2]][[5]] 370s [[2]][[5]][[1]] 370s NULL 370s 370s [[2]][[5]][[2]] 370s [[2]][[5]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[3]] 370s [[2]][[5]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[4]] 370s [[2]][[5]][[4]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[5]] 370s [[2]][[5]][[5]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[6]] 370s [[2]][[5]][[6]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[7]] 370s [[2]][[5]][[7]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[8]] 370s [[2]][[5]][[8]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[9]] 370s [[2]][[5]][[9]][[1]] 370s NULL 370s 370s 370s 370s 370s > 370s > # "`for` loop" 370s > unitizer:::comm_extract( 370s + unitizer:::parse_with_comments( 370s + text = "for(i #in counter\nin 1:10#incounter again\n) {x + y; # first comment\n; next; yo #second comment\n x / y; break; #lastcomment \n;}" 370s + ) ) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s NULL 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s [1] "#in counter" 370s 370s 370s [[2]][[4]] 370s [[2]][[4]][[1]] 370s [1] "#incounter again" 370s 370s [[2]][[4]][[2]] 370s [[2]][[4]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[3]] 370s [[2]][[4]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[4]] 370s [[2]][[4]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[2]][[5]] 370s [[2]][[5]][[1]] 370s NULL 370s 370s [[2]][[5]][[2]] 370s [[2]][[5]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[3]] 370s [[2]][[5]][[3]][[1]] 370s [1] "# first comment" 370s 370s [[2]][[5]][[3]][[2]] 370s [[2]][[5]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[3]][[3]] 370s [[2]][[5]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[3]][[4]] 370s [[2]][[5]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[2]][[5]][[4]] 370s [[2]][[5]][[4]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[5]] 370s [[2]][[5]][[5]][[1]] 370s [1] "#second comment" 370s 370s 370s [[2]][[5]][[6]] 370s [[2]][[5]][[6]][[1]] 370s NULL 370s 370s [[2]][[5]][[6]][[2]] 370s [[2]][[5]][[6]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[6]][[3]] 370s [[2]][[5]][[6]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[5]][[6]][[4]] 370s [[2]][[5]][[6]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[2]][[5]][[7]] 370s [[2]][[5]][[7]][[1]] 370s [1] "#lastcomment " 370s 370s 370s 370s 370s > 370s > # "`if` statement" 370s > unitizer:::comm_extract(unitizer:::parse_with_comments(text = if.text)) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s NULL 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s [1] "# IFFY" 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s [1] "# ifcond" 370s 370s [[2]][[3]][[2]] 370s [[2]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]][[3]] 370s [[2]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[3]][[4]] 370s [[2]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[2]][[4]] 370s [[2]][[4]][[1]] 370s NULL 370s 370s [[2]][[4]][[2]] 370s [[2]][[4]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[3]] 370s [[2]][[4]][[3]][[1]] 370s NULL 370s 370s 370s 370s [[2]][[5]] 370s [[2]][[5]][[1]] 370s [1] "#final" 370s 370s 370s 370s > 370s > # "formula" 370s > unitizer:::comm_extract( 370s + unitizer:::parse_with_comments( 370s + text = ". + x # hello\n#yowza\n~#bust a move\ny" 370s + ) ) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s [1] "# hello" 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[4]] 370s [[2]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[3]] 370s [[3]][[1]] 370s [1] "#yowza" 370s 370s [[3]][[2]] 370s [[3]][[2]][[1]] 370s [1] "#bust a move" 370s 370s 370s [[3]][[3]] 370s [[3]][[3]][[1]] 370s NULL 370s 370s 370s 370s > 370s > # "`repeat`" 370s > unitizer:::comm_extract( 370s + unitizer:::parse_with_comments( 370s + text = "repeat #first\n{runif(10); #comm\nbreak;}" 370s + ) ) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s NULL 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s [1] "#first" 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s NULL 370s 370s [[2]][[3]][[2]] 370s [[2]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]][[3]] 370s [[2]][[3]][[3]][[1]] 370s [1] "#comm" 370s 370s [[2]][[3]][[3]][[2]] 370s [[2]][[3]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]][[3]][[3]] 370s [[2]][[3]][[3]][[3]][[1]] 370s NULL 370s 370s 370s 370s [[2]][[3]][[4]] 370s [[2]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s 370s > 370s > # "S4 slot" 370s > unitizer:::comm_extract( 370s + unitizer:::parse_with_comments(text = "test@#comment\nhello <- 3") 370s + ) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s NULL 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s NULL 370s 370s [[2]][[3]][[2]] 370s [[2]][[3]][[2]][[1]] 370s [1] "#comment" 370s 370s 370s [[2]][[3]][[3]] 370s [[2]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[3]][[4]] 370s [[2]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[2]][[4]] 370s [[2]][[4]][[1]] 370s NULL 370s 370s 370s 370s > 370s > # "`while`" 370s > unitizer:::comm_extract( 370s + unitizer:::parse_with_comments( 370s + text = "while(x > 5 # a comment\n) { hello; goodbye } #yay" 370s + ) ) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s NULL 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s [1] "# a comment" 370s 370s [[2]][[3]][[2]] 370s [[2]][[3]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]][[3]] 370s [[2]][[3]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[3]][[4]] 370s [[2]][[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[2]][[4]] 370s [[2]][[4]][[1]] 370s NULL 370s 370s [[2]][[4]][[2]] 370s [[2]][[4]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[3]] 370s [[2]][[4]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[4]][[4]] 370s [[2]][[4]][[4]][[1]] 370s NULL 370s 370s 370s 370s 370s > 370s > txt2 <- "library(functools)\n fun <- function(a=1, bravo, card=25, ..., xar=list(\"aurochs\", 1), z) {}\n\n # Need to add tests:\n # - with complex objects? (did I mean in the definition? Or the call??)\n (NULL)\n # These should be identical to match.call()\n\n body(fun) <- parse(text=\"{print(match_call()); print(match.call())}\")\n\n calls <- c(\n 'fun(54, \"hello\", \"wowo\", \"blergh\", 8, 9)',\n 'fun(54, \"hello\", \"wowo\", \"blergh\", a=8, z=9)',\n 'fun(54, \"hello\", z=\"wowo\", \"blergh\", 8, 9)',\n 'fun(54, \"hello\", z=\"wowo\", x=\"blergh\", 8, 9)',\n 'fun(54, c=\"hello\", z=\"wowo\", xar=3, 8, 9)'\n )\n invisible(lapply(calls, function(x){cat(\"-- New Call --\", x, sep=\"\n\"); eval(parse(text=x))}))\n " 370s > test.comp <- unitizer:::comm_extract(unitizer:::parse_with_comments(text = txt2)) 370s > 370s > # "A more complex test" 370s > lapply(test.comp[4:5], `[[`, 1) 370s [[1]] 370s [1] "# Need to add tests:" 370s [2] "# - with complex objects? (did I mean in the definition? Or the call??)" 370s 370s [[2]] 370s [1] "# These should be identical to match.call()" 370s 370s > 370s > # "Added SYMBOL_PACKAGE token" 370s > unitizer:::comm_extract( 370s + unitizer:::parse_with_comments( 370s + text = "# a comment before\nunitizer:::browse() #a comment after" 370s + ) ) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s [1] "# a comment before" "#a comment after" 370s 370s 370s > # "Added SYMBOL_PACKAGE token v2" 370s > unitizer:::comm_extract( 370s + unitizer:::parse_with_comments( 370s + text = "# a comment before\nunitizer::browse() #a comment after" 370s + ) ) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s [1] "# a comment before" "#a comment after" 370s 370s 370s > # LBB used to break stuff 370s > txt3 <- "# This is an early comment\n hello <- 25\n # multi\n hello[[1]] # and another!" 370s > # "LBB test" 370s > unitizer:::comm_extract(unitizer:::parse_with_comments(text = txt3)) 370s [[1]] 370s NULL 370s 370s [[2]] 370s [[2]][[1]] 370s [1] "# This is an early comment" 370s 370s [[2]][[2]] 370s [[2]][[2]][[1]] 370s NULL 370s 370s 370s [[2]][[3]] 370s [[2]][[3]][[1]] 370s NULL 370s 370s 370s [[2]][[4]] 370s [[2]][[4]][[1]] 370s NULL 370s 370s 370s 370s [[3]] 370s [[3]][[1]] 370s [1] "# multi" "# and another!" 370s 370s [[3]][[2]] 370s [[3]][[2]][[1]] 370s NULL 370s 370s 370s [[3]][[3]] 370s [[3]][[3]][[1]] 370s NULL 370s 370s 370s [[3]][[4]] 370s [[3]][[4]][[1]] 370s NULL 370s 370s 370s 370s > 370s > # - "Weird missing comment on `res` works" ------------------------------------- 370s > 370s > txt3 <- "# Calls to `library` and assignments are not normally considered tests, so\n# you will not be prompted to review them\n\nlibrary(utzflm)\nx <- 1:100\ny <- x ^ 2\nres <- fastlm(x, y)\n\nres # first reviewable expression\nget_slope(res)\nget_rsq(res)\n\nfastlm(x, head(y)) # This should cause an error; press Y to add to store" 370s > expr <- unitizer:::parse_with_comments(text = txt3) 370s > my.unitizer <- new("unitizer", id = 1, zero.env = new.env()) 370s > capture.output(my.unitizer <- my.unitizer + expr) 370s character(0) 370s > 370s > lapply(unitizer:::as.list(my.unitizer@items.new), slot, "comment") 370s [[1]] 370s [1] "# Calls to `library` and assignments are not normally considered tests, so" 370s [2] "# you will not be prompted to review them" 370s 370s [[2]] 370s character(0) 370s 370s [[3]] 370s character(0) 370s 370s [[4]] 370s character(0) 370s 370s [[5]] 370s [1] "# first reviewable expression" 370s 370s [[6]] 370s character(0) 370s 370s [[7]] 370s character(0) 370s 370s [[8]] 370s [1] "# This should cause an error; press Y to add to store" 370s 370s > 370s > # - "exprlist excission with negative par ids" --------------------------------- 370s > 370s > txt <- "# For random tests\n\nunitizer_sect(\"blah\", {\n identity(1);\n})\n" 370s > prs.dat <- unitizer:::parse_dat_get(text = txt)$dat 370s > # set negative ids to be top level parents 370s > prs.dat <- transform(prs.dat, parent = ifelse(parent < 0, 0L, 370s + parent)) 370s > prs.dat <- normalize_id(prs.dat) 370s > ancestry <- with(prs.dat, unitizer:::ancestry_descend(id, parent, 370s + 0L)) 370s > x <- unitizer:::prsdat_fix_exprlist(prs.dat, ancestry) 370s > unname(as.matrix(x[, 5:6])) 370s [,1] [,2] 370s [1,] 1 0 370s [2,] 21 0 370s [3,] 2 4 370s [4,] 4 21 370s [5,] 3 21 370s [6,] 5 7 370s [7,] 7 21 370s [8,] 6 21 370s [9,] 19 21 370s [10,] 8 19 370s [11,] 15 19 370s [12,] 9 11 370s [13,] 11 15 370s [14,] 10 15 370s [15,] 12 13 370s [16,] 13 15 370s [17,] 14 15 370s [18,] 18 19 370s [19,] 20 21 370s > 370s > # - "empty symbols handled okay" ----------------------------------------------- 370s > 370s > # the empty second argument to `[` caused problems before 370s > txt <- "mtcars[1:10,]\n" 370s > # shouldn't cause error 370s > unitizer:::parse_with_comments(text = txt) 370s expression(mtcars[1:10,]) 370s > 370s > # - "uncommenting works" ------------------------------------------------------- 370s > 370s > unitizer:::uncomment(expr[[1]]) 370s library(utzflm) 370s > 370s > # "don't blow away function arg names" 370s > unitizer:::uncomment(quote(function(a, b) NULL)) 370s function(a, b) NULL 370s > # 370s > # Recover comments and uncomment 370s > txt <- ".alike( # FALSE, match.call disabled\n quote(fun(b=fun2(x, y), 1, 3)), # first sub.call\n quote(fun(NULL, fun2(a, b), 1)), # second sub.call\n alike_settings(lang.mode=1))" 370s > exp <- unitizer:::parse_with_comments(text = txt) 370s > candc <- unitizer:::comm_and_call_extract(exp) 370s > 370s > candc$call[[1L]] 370s .alike(quote(fun(b = fun2(x, y), 1, 3)), quote(fun(NULL, fun2(a, 370s b), 1)), alike_settings(lang.mode = 1)) 370s > 370s > candc$comments 370s [1] "# FALSE, match.call disabled" "# first sub.call" 370s [3] "# second sub.call" 370s > 370s > # - "failing parses produce proper errors" ------------------------------------- 370s > 370s > txt <- "this is a + syntax error that cannot be parsed" 370s > try(capture.output(unitizer:::parse_tests(text = txt), type = "message")) 370s Error in value[[3L]](cond) : 370s Unable to parse test file; see previous messages 370s > f <- tempfile() 370s > on.exit(unlink(f)) 370s > cat(txt, "\n", sep = "", file = f) 370s > try(capture.output(unitizer:::parse_tests(f), type = "message")) 370s Error in value[[3L]](cond) : 370s Unable to parse test file; see previous messages 370s > # try in normal mode (just fall back to normal parse) 370s > try(unitizer:::parse_tests(text = txt, comments = FALSE)) 370s Error in parse(text = text, keep.source = FALSE) : 370s :1:6: unexpected symbol 370s 1: this is 370s ^ 370s > 370s > any( 370s + grepl( 370s + "unexpected symbol", 370s + capture.output(try(unitizer:::parse_tests(f, comments = FALSE)), type='message'), 370s + ) ) 370s [1] TRUE 370s > 370s > # - "NULL, constants, and new tokens" ------------------------------------------ 370s > 370s > # These were added with 3.6.3? Previously, it seems that the equal assign did 370s > # not generate a master expression to wrap all the pieces, which means these 370s > # tests just don't work because all the eq_assign at the top level end up with 370s > # the same parent and the parser gets confused. 370s > 370s > txt <- c("a = 2", "# ho how", "b = 3", "", "b + a # oh here", 370s + "", "b + # oh there", "a # bear", "", "NULL") 370s > if(getRversion() >= "3.6.3") { 370s + identical( 370s + unitizer:::comm_extract(unitizer:::parse_with_comments(text = txt)), 370s + rds('parse-eq') 370s + ) 370s + } else TRUE 370s [1] TRUE 370s > 370s > with.const <- unitizer:::parse_with_comments(text = "3 # comment on const") 370s > unitizer:::symb_mark_rem(with.const[[1]]) 370s [1] 3 370s > 370s > 370s PASS 370s Begin testing t-prompt.R 370s 370s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 370s Copyright (C) 2024 The R Foundation for Statistical Computing 370s Platform: s390x-ibm-linux-gnu (64-bit) 370s 370s R is free software and comes with ABSOLUTELY NO WARRANTY. 370s You are welcome to redistribute it under certain conditions. 370s Type 'license()' or 'licence()' for distribution details. 370s 370s R is a collaborative project with many contributors. 370s Type 'contributors()' for more information and 370s 'citation()' on how to cite R or R packages in publications. 370s 370s Type 'demo()' for some demos, 'help()' for on-line help, or 370s 'help.start()' for an HTML browser interface to help. 370s Type 'q()' to quit R. 370s 370s > source(file.path("_helper", "init.R")) 370s > 370s > # - "read_line works" ---------------------------------------------------------- 370s > 370s > # read through prompt vals 370s > 370s > unitizer:::read_line_set_vals(letters[1:3]) 370s > u.ns <- asNamespace("unitizer") 370s > unitizer:::read_line() 370s a 370s [1] "a" 370s > identical(u.ns$.global$prompt.vals, letters[2:3]) 370s [1] TRUE 370s > unitizer:::read_line() 370s b 370s [1] "b" 370s > u.ns$.global$prompt.vals 370s [1] "c" 370s > unitizer:::read_line() 370s c 370s [1] "c" 370s > u.ns$.global$prompt.vals 370s character(0) 370s > 370s > try(unitizer:::read_line()) 370s Error : Internal Error: ran out of predefined readline input; contact maintainer. 370s > 370s > # - "simple prompts" ----------------------------------------------------------- 370s > 370s > unitizer:::read_line_set_vals(c("y", "Y", "n", "N")) 370s > try(unitizer:::simple_prompt(1:5)) 370s Error in unitizer:::simple_prompt(1:5) : 370s Argument `message` must be character 370s > try(unitizer:::simple_prompt("hello", attempts = 1:5)) 370s Error in unitizer:::simple_prompt("hello", attempts = 1:5) : 370s Argument `attempts` must be numeric(1L), not NA, and one or greater 370s > try(unitizer:::simple_prompt("hello", values = NA_character_)) 370s Error in unitizer:::simple_prompt("hello", values = NA_character_) : 370s Argument `values` must be character with no NAs 370s > try(unitizer:::simple_prompt("hello", case.sensitive = 1)) 370s Error in unitizer:::simple_prompt("hello", case.sensitive = 1) : 370s Argument `case.sensitive` must be TRUE or FALSE 370s > 370s > unitizer:::simple_prompt("hello") 370s | hello 370s 370s unitizer> y 370s [1] "Y" 370s > unitizer:::simple_prompt("hello")# 370s | hello 370s 370s unitizer> Y 370s [1] "Y" 370s > unitizer:::simple_prompt("hello") 370s | hello 370s 370s unitizer> n 370s [1] "N" 370s > unitizer:::read_line_set_vals(c("y", "y", "n")) 370s > try(unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE)) 370s | hello 370s 370s unitizer> y 370s | Invalid input, please select one of: Y, N 370s 370s Error in unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE) : 370s Gave up trying to collect user input after 1 attempts. 370s > try(unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE), 370s + silent = TRUE) 370s | hello 370s 370s unitizer> y 370s | Invalid input, please select one of: Y, N 370s 370s > try(unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE)) 370s | hello 370s 370s unitizer> n 370s | Invalid input, please select one of: Y, N 370s 370s Error in unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE) : 370s Gave up trying to collect user input after 1 attempts. 370s > 370s > # - "faux prompt" -------------------------------------------------------------- 370s > 370s > unitizer:::read_line_set_vals(c("1 +", "1")) 370s > unitizer:::faux_prompt(prompt = "> ", continue = "+ ")[[1L]] 370s > 1 + 370s + 1 370s 1 + 1 370s > unitizer:::read_line_set_vals(c("(})")) 370s > try(unitizer:::faux_prompt(prompt = "> ", continue = "+ ")) 370s > (}) 370s Error in "(})" : :1:2: unexpected '}' 370s 1: (} 370s ^ 370s > 370s > ## Test the new readLines based read_line 370s > ## This test will not work in interactive mode, requiring input 370s > unitizer:::read_line_set_vals(c("1 +", "1")) 370s > unitizer:::faux_prompt() 370s > 1 + 370s + 1 370s expression(1 + 1) 370s > 370s > ## This one embeds a CTRL+C to test interrupt, but we can't test this without 370s > ## read_line_setvals 370s > unitizer:::read_line_set_vals(c("1 +", "\x03", "2 + ", "1")) 370s > unitizer:::faux_prompt() 370s > 1 + 370s +  370s 370s > 2 + 370s + 1 370s expression(2 + 1) 370s > 370s > unitizer:::read_line_set_vals(c("\x03", "2 + ", "1")) 370s > unitizer:::faux_prompt() 370s >  370s 370s 370s | Type "Q" at the prompt to quit unitizer. 370s 370s > 2 + 370s + 1 370s expression(2 + 1) 370s > 370s > ## Test that changing language doesn't affect partial parsing 370s > lang <- Sys.getenv("LANGUAGE", unset=NA) 370s > Sys.setenv("LANGUAGE"="fr") 370s > unitizer:::read_line_set_vals(c("1 +", "1")) 370s > unitizer:::faux_prompt(prompt = "> ", continue = "+ ") 370s > 1 + 370s + 1 370s expression(1 + 1) 370s > if(is.na(lang)) Sys.unsetenv("LANGUAGE") else Sys.setenv("LANGUAGE"=lang) 370s > 370s > # - "unitizer prompt" ---------------------------------------------------------- 370s > 370s > # Some of this needs to be done outside of testthat due to sinking 370s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 370s > unitizer:::read_line_set_vals(c("1 +", "1", "H", "Y")) 370s > unitizer:::unitizer_prompt( 370s + "hello", valid.opts = c(Y = "[Y]es", N = "[N]o"), global = glob 370s + ) 370s unitizer> 1 + 370s + 1 370s [1] 2 370s unitizer> H 370s 370s | No help available. 370s | 370s | hello ([Y]es, [N]o, [Q]uit, [H]elp)? 370s 370s unitizer> Y 370s 370s [1] "Y" 370s > 370s > unitizer:::read_line_set_vals(c("1 +", "1", "H", "Q")) 370s > unitizer:::unitizer_prompt("hello", 370s + valid.opts = c(Y = "[Y]es", N = "[N]o"), help = "This is all the help you get", 370s + global = glob) 370s unitizer> 1 + 370s + 1 370s [1] 2 370s unitizer> H 370s 370s | This is all the help you get 370s | 370s | hello ([Y]es, [N]o, [Q]uit, [H]elp)? 370s 370s unitizer> Q 370s 370s [1] "Q" 370s > 370s > unitizer:::read_line_set_vals(c("hell())", "Q")) 370s > txt3 <- unitizer:::capture_output(unitizer:::unitizer_prompt("hello", 370s + valid.opts = c(Y = "[Y]es", N = "[N]o"), global = glob)) 370s > txt3$message 370s [1] "Error in \"hell())\": :1:7: unexpected ')'" 370s [2] "1: hell())" 370s [3] " ^" 370s > 370s > # and multiline stuff (#242) 370s > unitizer:::read_line_set_vals(c("{\n 1 + 1\n 2 + 1\n}", "N")) 370s > unitizer:::unitizer_prompt( 370s + "hello", valid.opts = c(Y = "[Y]es", N = "[N]o"), global = glob 370s + ) 370s unitizer> { 370s 1 + 1 370s 2 + 1 370s } 370s [1] 3 370s unitizer> N 370s 370s [1] "N" 370s > 370s > try( 370s + unitizer:::unitizer_prompt( 370s + "hello", valid.opts = c(Y = "[Y]es", N = "[N]o"), 370s + browse.env = "not an env", global = glob 370s + ) ) 370s Error in unitizer:::unitizer_prompt("hello", valid.opts = c(Y = "[Y]es", : 370s Argument `browse.env` must be an environment 370s > 370s > unitizer:::read_line_set_vals(character()) 370s > try( 370s + unitizer:::unitizer_prompt( 370s + "hello", valid.opts = c(Y = "[Y]es", N = "[N]o"), global = glob 370s + ) ) 370s Error : Internal Error: ran out of predefined readline input; contact maintainer. 370s > unitizer:::read_line_set_vals("1L") 370s > try( 370s + unitizer:::unitizer_prompt( 370s + "hello", 370s + valid.opts = c(Y = "[Y]es", N = "[N]o"), 370s + exit.condition = unitizer:::exit_fun, 370s + valid.vals = 2:3, global = glob 370s + ) ) 370s unitizer> 1L 370s | Type a number in `2:3` at the prompt 370s [1] 1 370s Error : Internal Error: ran out of predefined readline input; contact maintainer. 370s > unitizer:::read_line_set_vals("2L") 370s > unitizer:::unitizer_prompt("hello", valid.opts = c(Y = "[Y]es", 370s + N = "[N]o"), exit.condition = unitizer:::exit_fun, valid.vals = 2:3, 370s + global = glob) 370s unitizer> 2L 370s [1] 2 370s > 370s > 370s PASS 370s Begin testing t-random.R 370s 370s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 370s Copyright (C) 2024 The R Foundation for Statistical Computing 370s Platform: s390x-ibm-linux-gnu (64-bit) 370s 370s R is free software and comes with ABSOLUTELY NO WARRANTY. 370s You are welcome to redistribute it under certain conditions. 370s Type 'license()' or 'licence()' for distribution details. 370s 370s R is a collaborative project with many contributors. 370s Type 'contributors()' for more information and 370s 'citation()' on how to cite R or R packages in publications. 370s 370s Type 'demo()' for some demos, 'help()' for on-line help, or 370s 'help.start()' for an HTML browser interface to help. 370s Type 'q()' to quit R. 370s 371s > source(file.path("_helper", "init.R")) 371s > 371s > # - "random seed" -------------------------------------------------------------- 371s > 371s > dir <- file.path(TMP.DIR, "randdir") 371s > dir.create(dir) 371s > file <- file.path(dir, "randtest.R") 371s > cat("sample(1:100)\n", file = file) 371s > set.seed(1) 371s > coi(unitize(file, auto.accept = "new")) 371s Warning in history_capt(history, interactive.mode) : 371s Unable to capture history in non-interactive mode. 371s | Auto-accepting changes... 371s | unitizer updated. 371s 371s > # changing seed should have no effect on result 371s > set.seed(23) 371s > coi(res <- unitize(file)) 371s Warning in history_capt(history, interactive.mode) : 371s Unable to capture history in non-interactive mode. 371s | 1/1 test passed; nothing to review. 371s 371s > # expect_equal(as.character(res$status), "Passed") 371s > as.character(res$status) 371s [1] "Passed" 371s > 371s > 371s PASS 371s Begin testing t-rename.R 372s 372s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 372s Copyright (C) 2024 The R Foundation for Statistical Computing 372s Platform: s390x-ibm-linux-gnu (64-bit) 372s 372s R is free software and comes with ABSOLUTELY NO WARRANTY. 372s You are welcome to redistribute it under certain conditions. 372s Type 'license()' or 'licence()' for distribution details. 372s 372s R is a collaborative project with many contributors. 372s Type 'contributors()' for more information and 372s 'citation()' on how to cite R or R packages in publications. 372s 372s Type 'demo()' for some demos, 'help()' for on-line help, or 372s 'help.start()' for an HTML browser interface to help. 372s Type 'q()' to quit R. 372s 372s > source(file.path("_helper", "init.R")) 372s > 372s > # - "Rename Works" ------------------------------------------------------------- 372s > 372s > x <- readRDS("_helper/unitizers/trivial.unitizer/data.rds") 372s > x.edit <- editCalls(x, quote(x), quote(y), interactive.only = FALSE) 372s Warning in .local(x, lang.old, lang.new, ...) : 372s This is an experimental function; make sure you backup any unitizers before you edit them 372s > x.edit@items.ref.calls.deparse 372s [1] "TRUE" "y <- 1 + 1" "y + 2" "y <- y" "y * y" 372s [6] "y/y + 2" 372s > !identical(x@items.ref.calls.deparse, x.edit@items.ref.calls.deparse) 372s [1] TRUE 372s > identical( 372s + x.edit@items.ref.calls.deparse, 372s + gsub("\\bx\\b", "y", x@items.ref.calls.deparse) 372s + ) 372s [1] TRUE 372s > 372s > # warn 372s > unitizer:::read_line_set_vals("Y") 372s > x.edit2 <- editCalls(x, quote(x), quote(y), interactive.mode = TRUE) 372s Warning in .local(x, lang.old, lang.new, ...) : 372s This is an experimental function; make sure you backup any unitizers before you edit them 372s | Do you wish to proceed ([Y]es/[N]o)? 372s 372s unitizer> Y 372s > # message 372s > unitizer:::read_line_set_vals("N") 372s > x.edit3 <- editCalls(x, quote(x), quote(y), interactive.mode = TRUE) 372s Warning in .local(x, lang.old, lang.new, ...) : 372s This is an experimental function; make sure you backup any unitizers before you edit them 372s | Do you wish to proceed ([Y]es/[N]o)? 372s 372s unitizer> N 372s Exiting without edits 372s > identical(x.edit3, x) 372s [1] TRUE 372s > 372s > unitizer:::read_line_set_vals(NULL) 372s > x.edit@items.ref.calls.deparse 372s [1] "TRUE" "y <- 1 + 1" "y + 2" "y <- y" "y * y" 372s [6] "y/y + 2" 372s > 372s PASS 372s Begin testing t-repairenvs.R 372s 372s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 372s Copyright (C) 2024 The R Foundation for Statistical Computing 372s Platform: s390x-ibm-linux-gnu (64-bit) 372s 372s R is free software and comes with ABSOLUTELY NO WARRANTY. 372s You are welcome to redistribute it under certain conditions. 372s Type 'license()' or 'licence()' for distribution details. 372s 372s R is a collaborative project with many contributors. 372s Type 'contributors()' for more information and 372s 'citation()' on how to cite R or R packages in publications. 372s 372s Type 'demo()' for some demos, 'help()' for on-line help, or 372s 'help.start()' for an HTML browser interface to help. 372s Type 'q()' to quit R. 372s 372s > source(file.path("_helper", "init.R")) 373s > 373s > exps <- expression(1 + 1, a <- 54, b <- 38, a + b, e <- 5 * a, 373s + a^2, f <- e * a, matrix(rep(f, 20))) 373s > my.unitizer <- new("unitizer", id = 1, zero.env = new.env()) 373s > # add ref.exps as new items 373s > coi(my.unitizer <- my.unitizer + exps) 373s > my.unitizer2 <- new("unitizer", id = 2, zero.env = new.env()) 373s > # now convert them to reference items 373s > coi(my.unitizer2 <- my.unitizer2 + my.unitizer@items.new) 373s > # - "messed up env ancestry repair works" -------------------------------------- 373s > 373s > # Purposefully mess up the environments 373s > parent.env(my.unitizer2@items.ref[[2]]@env) <- baseenv() 373s > x <- unitizer:::healEnvs(my.unitizer2@items.ref, my.unitizer2) 373s Error in parent.env(env) : the empty environment has no parent 373s Error in run_ls(env = x@env, stop.env = base.env, all.names = TRUE, store.env = ref.env.store) : 373s Specified `stop.env` does not appear to be in parent environments. 373s Warning in repairEnvs(items.final) : 373s Detected corrupted environment history; we will attempt to repair, but keep in mind that even when repaired the test environments may be missleading. For example, the objects other than `.new` or `.ref` when reviewing tests at the `unitzer` prompt may not be those you expect or those reported by `ls`. To fully restore environments re-unitize with `unitize(..., force.update=TRUE)`. If errors persist after an attempt to repair, please contact maintainer. 373s > old.opt <- options(unitizer.max.env.depth = 20) 373s > res <- unitizer:::healEnvs(my.unitizer2@items.ref, my.unitizer2) 373s Error in try(while (!identical(env, stop.env)) { : 373s Logic error: not finding `stop.env` after 20 iterations; contact package maintainer if this is an error. 373s Error in run_ls(env = x@env, stop.env = base.env, all.names = TRUE, store.env = ref.env.store) : 373s Specified `stop.env` does not appear to be in parent environments. 373s Warning in repairEnvs(items.final) : 373s Detected corrupted environment history; we will attempt to repair, but keep in mind that even when repaired the test environments may be missleading. For example, the objects other than `.new` or `.ref` when reviewing tests at the `unitzer` prompt may not be those you expect or those reported by `ls`. To fully restore environments re-unitize with `unitize(..., force.update=TRUE)`. If errors persist after an attempt to repair, please contact maintainer. 373s > is(res, "unitizerItems") 373s [1] TRUE 373s > ref.anc <- unitizer:::env_ancestry(x@base.env) 373s > itm.anc <- unitizer:::env_ancestry(x[[1L]]@env) 373s > # Items should belong to base env for reference 373s > identical(rev(ref.anc), head(rev(itm.anc), length(ref.anc))) 373s [1] TRUE 373s > options(old.opt) 373s > 373s > # - "re-assigning to ignored environments handled properly" -------------------- 373s > 373s > # now `a + b` could try to re-assign to `a <- 54`, but that is same env as 373s > # `a + b` b/c it is ignored 373s > items.picked <- my.unitizer@items.new[-3L] 373s > # expect_error(items.heal <- unitizer:::healEnvs(items.picked, 373s > # my.unitizer), NA) 373s > # no error 373s > items.heal <- unitizer:::healEnvs(items.picked, my.unitizer) 373s > 373s > # - "full repair process works" ------------------------------------------------ 373s > 373s > # copy files and then try messing up environment for the object 373s > file_test("-d", file.path("_helper")) 373s [1] TRUE 373s > store <- file.path("_helper", "unitizers", "trivial.unitizer") 373s > store.new <- file.path(TMP.DIR, store) 373s > dir.create(store.new, recursive = TRUE) 373s > cpy.files <- c( 373s + list.files(store, full.names = TRUE), 373s + file.path("helper", "unitizers", "trivial.R") 373s + ) 373s > file.copy(cpy.files, file.path(TMP.DIR, cpy.files), overwrite = TRUE) 373s [1] TRUE FALSE 373s > 373s > untz <- unitizer:::load_unitizers( 373s + list(store.new), NA_character_, 373s + par.frame = .GlobalEnv, interactive.mode = TRUE, mode = "unitize", 373s + show.progress=0L, transcript=FALSE 373s + ) 373s Warning in unitizer:::load_unitizers(list(store.new), NA_character_, par.frame = .GlobalEnv, : 373s Upgraded test file does not match original test file ('trivial.R' vs 'NA'). 373s Warning in .Object$initialize(...) : 373s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 373s > # Break env chain, store, and reload 373s > untz[[1L]]@items.ref.calls.deparse[[5L]] 373s [1] "y * x" 373s > parent.env(untz[[1L]]@items.ref[[5L]]@env) <- baseenv() 373s > # warning 373s > unitizer:::store_unitizer(untz[[1L]]) 373s | unitizer updated. 373s 373s > untz.rep <- repair_environments(store.new) 373s Warning in .Object$initialize(...) : 373s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 373s Warning in repairEnvs(x@items.ref) : 373s Detected corrupted environment history; we will attempt to repair, but keep in mind that even when repaired the test environments may be missleading. For example, the objects other than `.new` or `.ref` when reviewing tests at the `unitzer` prompt may not be those you expect or those reported by `ls`. To fully restore environments re-unitize with `unitize(..., force.update=TRUE)`. If errors persist after an attempt to repair, please contact maintainer. 373s | unitizer updated. 373s 373s > # this should not give warnings 373s > unitizer:::healEnvs(untz.rep@items.ref, untz.rep) 373s An object of class "unitizerItems" 373s Slot "base.env": 373s 373s 373s Slot ".items": 373s [[1]] 373s ~~~ Reference Test ~~~ 373s TRUE 373s * value: logi[1] 373s * output: 9 chars 373s 373s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 373s 373s [[2]] 373s ~~~ Reference Test ~~~ 373s x <- 1 + 1 373s * value: unitizerDummy 373s 373s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 373s 373s [[3]] 373s ~~~ Reference Test ~~~ 373s x + 2 373s * value: num[1] 373s * output: 6 chars 373s 373s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 373s 373s [[4]] 373s ~~~ Reference Test ~~~ 373s y <- x 373s * value: unitizerDummy 373s 373s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 373s 373s [[5]] 373s ~~~ Reference Test ~~~ 373s y * x 373s * value: num[1] 373s * output: 6 chars 373s 373s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 373s 373s [[6]] 373s ~~~ Reference Test ~~~ 373s y/x + 2 373s * value: num[1] 373s * output: 6 chars 373s 373s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 373s 373s 373s Slot ".pointer": 373s [1] 0 373s 373s Slot ".seek.fwd": 373s [1] TRUE 373s 373s > 373s > 373s PASS 373s Begin testing t-search.R 373s 373s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 373s Copyright (C) 2024 The R Foundation for Statistical Computing 373s Platform: s390x-ibm-linux-gnu (64-bit) 373s 373s R is free software and comes with ABSOLUTELY NO WARRANTY. 373s You are welcome to redistribute it under certain conditions. 373s Type 'license()' or 'licence()' for distribution details. 373s 373s R is a collaborative project with many contributors. 373s Type 'contributors()' for more information and 373s 'citation()' on how to cite R or R packages in publications. 373s 373s Type 'demo()' for some demos, 'help()' for on-line help, or 373s 'help.start()' for an HTML browser interface to help. 373s Type 'q()' to quit R. 373s 373s > source(file.path("_helper", "init.R")) 373s > source(file.path("_helper", "pkgs.R")) 373s Install Packages 376s Setup Demos 376s > 376s > unitizer.dummy.list <- list(A = 1, B = 2, C = 3) 376s > unitizer.dummy.list.2 <- list(A = 13, B = 24, C = 35) 376s > # can't unload `unitizer`, ruins `covr` 376s > try(detach("package:unitizer"), silent = TRUE) 377s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 377s > try(detach("package:unitizerdummypkg2", unload = TRUE), silent = TRUE) 377s > while ("unitizer.dummy.list" %in% search()) try(detach("unitizer.dummy.list")) 377s > state.set <- setNames(rep(2L, length(unitizer:::.unitizer.global.settings.names)), 377s + unitizer:::.unitizer.global.settings.names) 377s > library(unitizer) 377s > library(unitizerdummypkg1, lib.loc = TMP.LIB) 377s > library(unitizerdummypkg2, lib.loc = TMP.LIB) 377s > 377s > # - "Detecting packages" ------------------------------------------------------- 377s > 377s > unitizer:::is.loaded_package("package:unitizer") 377s [1] TRUE 377s > unitizer:::is.loaded_package("unitizer") # FALSE 377s [1] FALSE 377s > unitizer:::is.loaded_package("package:stats") 377s [1] TRUE 377s > try(unitizer:::is.loaded_package(1)) 377s Error in unitizer:::is.loaded_package(1) : 377s Argument `pkg.name` must be character 1L 377s > try(unitizer:::is.loaded_package(letters)) 377s Error in unitizer:::is.loaded_package(letters) : 377s Argument `pkg.name` must be character 1L 377s > unitizer:::is.loaded_package("Autoloads") # FALSE 377s [1] FALSE 377s > is.list(pkg.dat <- unitizer:::get_package_data()) 377s [1] TRUE 377s > all( 377s + vapply( 377s + pkg.dat, function(x) is.list(x) && identical(names(x), 377s + c("names", "lib.loc", "version")), logical(1L) 377s + ) ) 377s [1] TRUE 377s > 377s > # - "Path Compression" --------------------------------------------------------- 377s > 377s > search.init.full <- unitizer:::search_as_envs() 377s > search.init <- search.init.full$search.path 377s > 377s > head(unitizer:::compress_search_data(search.init.full), 3L) 377s [1] ".GlobalEnv" "package:unitizerdummypkg2 (v0.1)" 377s [3] "package:unitizerdummypkg1 (v0.1)" 377s > 377s > # - "Moving Objects on Search Path Works" -------------------------------------- 377s > 377s > if (length(search.init) < 6L) stop("Unexpetedly short search path") 377s > untz.glob <- unitizer:::unitizerGlobal$new(enable.which = state.set, 377s + set.global = TRUE) 377s > 377s > try(unitizer:::move_on_path(5L, 2L, untz.glob)) 377s Error in unitizer:::move_on_path(5L, 2L, untz.glob) : 377s old.pos > new.pos is not TRUE 377s > try(unitizer:::move_on_path(1L, 2L, untz.glob)) 377s Error in unitizer:::move_on_path(1L, 2L, untz.glob) : 377s new.pos > 1L is not TRUE 377s > unitizer:::move_on_path(2L, 5L, untz.glob) 377s > # can't compare actual environments as they change when detached and 377s > # re-attached 377s > 377s > all.equal( 377s + names(unitizer:::search_as_envs()$search.path), 377s + names(search.init[c(1L, 5L, 2L:4L, 6L:length(search.init))]) 377s + ) 377s [1] TRUE 377s > # Now let's undo the previous move, by pushing second pack back to 377s > # original position 377s > for (i in rep(5L, 3L)) unitizer:::move_on_path(2L, 5L, untz.glob) 377s > unitizer:::search_dat_equal(unitizer:::search_as_envs(), search.init.full) 377s [1] TRUE 377s > untz.glob$release() 377s > 377s > # - "Search Path Journaling Works" --------------------------------------------- 377s > 377s > try(detach("package:unitizer"), silent = TRUE) 377s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 377s > try(detach("package:unitizerdummypkg2", unload = TRUE), silent = TRUE) 377s > library(unitizer) 377s > # Initialize a global tracking object. Doing it funny here because we don't 377s > # want to run the search_path_trim command yet, and that would happen if we 377s > # did a normal init 377s > # will be modified later 377s > search.ref <- NULL 377s > search.init <- unitizer:::search_as_envs() 377s > untz.glob <- unitizer:::unitizerGlobal$new(enable.which = state.set, 377s + set.global = TRUE) 377s > 377s > stat.tpl <- new("unitizerGlobalStatus", search.path = 2L, working.directory = 2L, 377s + options = 2L, random.seed = 2L, namespaces = 2L) 377s > # these need to be done outside of `test_that` b/c `test_that` sets the 377s > # rlang_trace_top_env option 377s > st.0 <- untz.glob$indices.last 377s > st.1 <- untz.glob$state() 377s > 377s > # Note, these are intended to be run without the shimming in place 377s > identical(untz.glob$status, stat.tpl) 377s [1] TRUE 377s > 377s > # state should only be recorded if it changes 377s > st.0 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 1 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 1 377s 377s > identical(st.0, st.1) 377s [1] TRUE 377s > # Add a package 377s > library("unitizerdummypkg1", lib.loc = TMP.LIB) 377s > st.2 <- untz.glob$state() 377s > # have two recorded states 377s > st.2@search.path 377s [1] 2 377s > # should have one more item 377s > diff(sapply(untz.glob$tracking@search.path, function(x) length(x$search.path))) 377s [1] 1 377s > environmentName(untz.glob$tracking@search.path[[2L]]$search.path[[2L]]) 377s [1] "package:unitizerdummypkg1" 377s > sp.tmp <- untz.glob$tracking@search.path 377s > # note we compare attribute separately because subsetting drops them 377s > identical(sp.tmp[[1L]]$search.path, sp.tmp[[2L]]$search.path[-2L]) 377s [1] TRUE 377s > 377s > identical( 377s + sp.tmp[[1L]]$ns.dat, 377s + sp.tmp[[2L]]$ns.dat[names(sp.tmp[[2L]]$ns.dat) != "unitizerdummypkg1"] 377s + ) 377s [1] TRUE 377s > # Add another package at a different position 377s > library("unitizerdummypkg2", pos = 4L, lib.loc = TMP.LIB) 377s > st.3 <- untz.glob$state() 377s > diff(sapply(untz.glob$tracking@search.path, function(x) length(x$search.path))) 377s [1] 1 1 377s > environmentName( 377s + untz.glob$tracking@search.path[[st.3@search.path]]$search.path[[4L]] 377s + ) 377s [1] "package:unitizerdummypkg2" 377s > # Attach a list 377s > attach(unitizer.dummy.list) 377s > search.ref <- untz.glob$state() 377s > environmentName( 377s + untz.glob$tracking@search.path[[search.ref@search.path]]$search.path[[2L]] 377s + ) 377s [1] "unitizer.dummy.list" 377s > identical( 377s + as.list( 377s + untz.glob$tracking@search.path[[search.ref@search.path]]$search.path[[2L]] 377s + ), 377s + unitizer.dummy.list 377s + ) 377s [1] TRUE 377s > # And one more, but modified 377s > unitizer.dummy.list.2 <- list(A = 13, B = 24, C = 35) 377s > attach(unitizer.dummy.list.2, pos = 4L, name = "unitizer.dummy.list") 377s The following objects are masked _by_ unitizer.dummy.list (pos = 2): 377s 377s A, B, C 377s 377s > st.4 <- untz.glob$state() 377s > curr.sp.ind <- untz.glob$indices.last@search.path 377s > environmentName(untz.glob$tracking@search.path[[curr.sp.ind]]$search.path[[4L]]) 377s [1] "unitizer.dummy.list" 377s > # Make sure search path is lining up 377s > all.equal( 377s + names(untz.glob$tracking@search.path[[curr.sp.ind]]$search.path), search() 377s + ) 377s [1] TRUE 377s > identical( 377s + as.list(untz.glob$tracking@search.path[[curr.sp.ind]]$search.path[[4L]]), 377s + unitizer.dummy.list.2 377s + ) 377s [1] TRUE 377s > identical( 377s + as.list(untz.glob$tracking@search.path[[curr.sp.ind]]$search.path[[2L]]), 377s + unitizer.dummy.list 377s + ) 377s [1] TRUE 377s > # should still point to same environment 377s > identical( 377s + untz.glob$tracking@search.path[[curr.sp.ind - 1L]]$search.path[[2L]], 377s + untz.glob$tracking@search.path[[curr.sp.ind]]$search.path[[2L]] 377s + ) 377s [1] TRUE 377s > # state shouldn't have changed 377s > identical(untz.glob$state(), st.4) 377s [1] TRUE 377s > 377s > # detach some stuff 377s > # this is the first list 377s > detach(2L) 377s > untz.glob$state() 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 6 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 3 377s 377s > curr.sp.ind <- untz.glob$indices.last@search.path 377s > identical( 377s + untz.glob$tracking@search.path[[curr.sp.ind]]$search.path, 377s + untz.glob$tracking@search.path[[curr.sp.ind - 1L]]$search.path[-2L] 377s + ) 377s [1] TRUE 377s > detach("package:unitizerdummypkg2") 377s > untz.glob$state() 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 7 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 3 377s 377s > curr.sp.ind <- untz.glob$indices.last@search.path 377s > identical( 377s + untz.glob$tracking@search.path[[curr.sp.ind]]$search.path, 377s + untz.glob$tracking@search.path[[curr.sp.ind - 1L]]$search.path[-5L] 377s + ) 377s [1] TRUE 377s > 377s > # - "Resetting search path" ---------------------------------------------------- 377s > 377s > identical( 377s + as.list(as.environment("unitizer.dummy.list")), unitizer.dummy.list.2 377s + ) 377s [1] TRUE 377s > # set to just after we added the original dummy list 377s > untz.glob$reset(search.ref) 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 4 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 3 377s 377s > identical(as.list(as.environment("unitizer.dummy.list")), unitizer.dummy.list) 377s [1] TRUE 377s > # Confirm we actually set to expected path 377s > # NOTE: not sure if with updates this can work 377s > all.equal( 377s + names(unitizer:::search_as_envs()$search.path), 377s + names(untz.glob$tracking@search.path[[search.ref@search.path]]$search.path) 377s + ) 377s [1] TRUE 377s > # Reset to very beginning 377s > untz.glob$resetFull() 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 1 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 1 377s 377s > untz.glob$release() 377s > # compare with all.equal to make sure we use S4 method 377s > unitizer:::search_dat_equal(unitizer:::search_as_envs(), search.init) 377s [1] TRUE 377s > 377s > # - "Search Path Trim / Restore" ----------------------------------------------- 377s > 377s > search.init <- unitizer:::search_as_envs() 377s > untz.glob <- unitizer:::unitizerGlobal$new(enable.which = state.set, 377s + set.global = TRUE) 377s > library(unitizerdummypkg1, lib.loc = TMP.LIB) 377s > library(unitizerdummypkg2, lib.loc = TMP.LIB) 377s > unitizer:::search_path_trim(global = untz.glob) 377s > untz.glob$state() 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 2 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 2 377s 377s > sp.keep <- unitizer:::keep_sp_default() 377s > identical( 377s + search(), 377s + sp.keep[match(names(search.init$search.path), sp.keep, nomatch = 0L)] 377s + ) 377s [1] TRUE 377s > untz.glob$resetFull() 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 1 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 1 377s 377s > untz.glob$release() 377s > unitizer:::search_dat_equal(unitizer:::search_as_envs(), search.init) 377s [1] TRUE 377s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 377s > try(detach("package:unitizerdummypkg2", unload = TRUE), silent = TRUE) 377s > while ("unitizer.dummy.list" %in% search()) try(detach("unitizer.dummy.list")) 377s > 377s > # - "Loaded Namespaces don't cause issues" ------------------------------------- 377s > 377s > # had a problem earlier trying to re-attach namespaces 377s > loadNamespace("unitizerdummypkg1", lib.loc = TMP.LIB) 377s 377s > untz.glob <- unitizer:::unitizerGlobal$new(enable.which = state.set, 377s + set.global = TRUE) 377s > unitizer:::search_path_trim(global = untz.glob) 377s > unitizer:::namespace_trim(global = untz.glob) 377s > untz.glob$state() 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 2 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 2 377s 377s > loadNamespace("unitizerdummypkg2", lib.loc = TMP.LIB) 377s 377s > untz.glob$state() 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 3 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 3 377s 377s > "unitizerdummypkg1" %in% loadedNamespaces() # FALSE 377s [1] FALSE 377s > "unitizerdummypkg2" %in% loadedNamespaces() 377s [1] TRUE 377s > untz.glob$resetFull() 377s An object of class "unitizerGlobalIndices" 377s Slot "search.path": 377s [1] 1 377s 377s Slot "options": 377s [1] 1 377s 377s Slot "working.directory": 377s [1] 1 377s 377s Slot "random.seed": 377s [1] 1 377s 377s Slot "namespaces": 377s [1] 1 377s 377s > untz.glob$release() 377s > "unitizerdummypkg1" %in% loadedNamespaces() 377s [1] TRUE 377s > "unitizerdummypkg2" %in% loadedNamespaces() # FALSE 377s [1] FALSE 377s > unloadNamespace("unitizerdummypkg1") 377s > 377s > # - "Prevent Namespace Unload Works" ------------------------------------------- 377s > 377s > old.opt <- options(unitizer.namespace.keep = "unitizerdummypkg1") 377s > loadNamespace("unitizerdummypkg1", lib.loc = TMP.LIB) 377s 377s > glb <- unitizer:::unitizerGlobal$new(set.global = TRUE) 377s > glb$status@options <- 2L 377s > unitizer:::unload_namespaces("unitizerdummypkg1", global = glb) 377s NULL 377s > glb$ns.opt.conflict@conflict 377s [1] TRUE 377s > glb$ns.opt.conflict@namespaces 377s [1] "unitizerdummypkg1" 377s > unloadNamespace("unitizerdummypkg1") 377s > options(old.opt) 377s > glb$release() 377s > 377s > # - "Generate unique names" ---------------------------------------------------- 377s > 377s > unitizer:::unitizerUniqueNames(list(search.path = c(goodbye = "0", 377s + hello = "1", goodbye = "2", goodbye = "3"))) 377s [1] "goodbye" "hello" "goodbye.1" "goodbye.2" 377s > 377s > # - "Fake Package Re-attach" --------------------------------------------------- 377s > 377s > # Make sure that aspects of search path management other than search path 377s > # survive a failure caused by bad search path env (#252, #253). 377s > 377s > owd <- getwd() 377s > test.f <- paste0(tempfile(), ".R") 377s > writeLines(" 377s + f <- tempfile() 377s + dir.create(f) 377s + setwd(f) 377s + # Package assumed non-existing; R could disallow this in the future 377s + # which could change the test. 377s + attach(list(x=42), name='package:adfaadcxuqyojfnkfadsf') 377s + 1 + 1", test.f) 377s > out <- unitizer:::capture_output( 377s + try(unitize(test.f, state='recommended', interactive.mode=FALSE)) 377s + ) 377s > any(grepl("mismatch between actual search path and tracked", out$message)) 377s [1] TRUE 377s > identical(owd, getwd()) # confirm working directory restored 377s [1] TRUE 377s > 377s > 377s PASS 377s Begin testing t-section.R 377s 377s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 377s Copyright (C) 2024 The R Foundation for Statistical Computing 377s Platform: s390x-ibm-linux-gnu (64-bit) 377s 377s R is free software and comes with ABSOLUTELY NO WARRANTY. 377s You are welcome to redistribute it under certain conditions. 377s Type 'license()' or 'licence()' for distribution details. 377s 377s R is a collaborative project with many contributors. 377s Type 'contributors()' for more information and 377s 'citation()' on how to cite R or R packages in publications. 377s 377s Type 'demo()' for some demos, 'help()' for on-line help, or 377s 'help.start()' for an HTML browser interface to help. 377s Type 'q()' to quit R. 377s 377s > source(file.path("_helper", "init.R")) 378s > 378s > expr.1 <- expression(1 + 1, b <- 5, matrix(integer(), nrow = b, 378s + ncol = b)) 378s > expr.2 <- { 378s + 1 + 1 378s + b <- 5 378s + matrix(integer(), nrow = b, ncol = b) 378s + } 378s > expr.3 <- quote(expression(1 + 1, b <- 5, matrix(integer(), nrow = b, 378s + ncol = b))) 378s > expr.4 <- quote({ 378s + 1 + 1 378s + b <- 5 378s + matrix(integer(), nrow = b, ncol = b) 378s + }) 378s > # - "simple tests" ------------------------------------------------------------- 378s > 378s > try(unitizer_sect(1:3)) 378s Error in unitizer_sect(1:3) : 378s Argument `title` must be a 1 length character vector. 378s > try(unitizer_sect(letters)) 378s Error in unitizer_sect(letters) : 378s Argument `title` must be a 1 length character vector. 378s > try(unitizer_sect("mytest", expr.1, 1:3)) 378s Error in unitizer_sect("mytest", expr.1, 1:3) : 378s Argument `details` must be character 378s > # note the following two produce error messages, but it's not actually an error, 378s > # it's just that there are multiple errors and `expect_error` only suppresses 378s > # the last one, not the preceding ones. 378s > try(unitizer_sect("mytest", expr.1, letters, letters)) 378s Error in unitizer_sect("mytest", expr.1, letters, letters) : 378s Argument `compare` must be "testFuns" or a function 378s > try(unitizer_sect("mytest", expr.1, letters, identity)) 378s Error in unitizer_sect("mytest", expr.1, letters, identity) : 378s Argument `compare`, if a function, must accept two arguments and require no more than two (does not have at least two arguments) 378s > try(unitizer_sect("mytest", expr.2)) 378s Error in unitizer_sect("mytest", expr.2) : 378s Argument `expr` must be an expression, or an unevaluated call that evaluates to an expression or `{`. 378s > try(unitizer_sect("mytest", matrix(1:9, nrow = 3))) 378s Error in unitizer_sect("mytest", matrix(1:9, nrow = 3)) : 378s Argument `expr` must be an expression, or an unevaluated call that evaluates to an expression or `{`. 378s > is(sect.1 <- unitizer_sect("mytest", expr.1), "unitizerSectionExpression") 378s [1] TRUE 378s > identical(unitizer:::as.expression(sect.1), expr.1) 378s [1] TRUE 378s > 378s > is(sect.2 <- unitizer_sect("mytest", { 378s + 1 + 1 378s + b <- 5 378s + matrix(integer(), nrow = b, ncol = b) 378s + }), "unitizerSectionExpression") 378s [1] TRUE 378s > identical(sect.1, sect.2) 378s [1] TRUE 378s > is(sect.3 <- unitizer_sect("mytest", expr.3), "unitizerSectionExpression") 378s [1] TRUE 378s > identical(sect.1, sect.3) 378s [1] TRUE 378s > is(sect.4 <- unitizer_sect("mytest", expr.4), "unitizerSectionExpression") 378s [1] TRUE 378s > identical(sect.1, sect.4) 378s [1] TRUE 378s > is(sect.5 <- unitizer_sect("mytest", expression(1 + 1, 378s + b <- 5, matrix(integer(), nrow = b, ncol = b))), "unitizerSectionExpression") 378s [1] TRUE 378s > identical(sect.1, sect.5) 378s [1] TRUE 378s > is(sect.1 <- unitizer_sect("mytest", expr.1, compare = identical), 378s + "unitizerSectionExpression") 378s [1] TRUE 378s > unitizer_sect("hello") # warn 378s Warning in unitizer_sect("hello") : `unitizer_sect` "hello" is empty. 378s NULL 378s > 378s > # - "Custom Comparison Functions" ---------------------------------------------- 378s > 378s > # Run expressions with different comparison functions 378s > set.seed(1) 378s > expr.1 <- expression(50 + runif(1)/10^10, message("Hello There", 378s + runif(1)), cat("Hello there", runif(1)), stop("Yo", runif(1))) 378s > expr.2 <- expression(50 + runif(1)/10^10, message("Hello There", 378s + runif(1)), cat("Hello there", runif(1)), stop("Yo", runif(1))) 378s > expr.3 <- expression(unitizer_sect("change comp funs", compare = identical, 378s + { 378s + 50 + runif(1)/10^10 378s + message("Hello There", runif(1)) 378s + cat("Hello there", runif(1)) 378s + stop("Yo", runif(1)) 378s + })) 378s > expr.4 <- expression( 378s + unitizer_sect( 378s + "change comp funs", 378s + compare = testFuns( 378s + value = identical, output = all.equal, message = all.equal, 378s + conditions = function(x, y) TRUE), 378s + { 378s + 50 + runif(1)/10^10 378s + message("Hello There", runif(1)) 378s + cat("Hello there", runif(1)) 378s + stop("Yo", runif(1)) 378s + })) 378s > my.unitizer <- new("unitizer", id = 1, zero.env = new.env()) 378s > coi(my.unitizer <- my.unitizer + expr.1) 378s > my.unitizer2 <- new("unitizer", id = 2, zero.env = new.env()) 378s > # make previous items into reference items 378s > coi(my.unitizer2 <- my.unitizer2 + my.unitizer@items.new) 378s > # now add back items to compare 378s > coi(my.unitizer2 <- my.unitizer2 + expr.2) 378s > my.unitizer3 <- new("unitizer", id = 3, zero.env = new.env()) 378s > # make previous items into reference items 378s > coi(my.unitizer3 <- my.unitizer3 + my.unitizer@items.new) 378s > # now add back items to compare 378s > coi(my.unitizer3 <- my.unitizer3 + expr.3) 378s > my.unitizer4 <- new("unitizer", id = 4, zero.env = new.env()) 378s > # make previous items into reference items 378s > coi(my.unitizer4 <- my.unitizer4 + my.unitizer@items.new) 378s > # now add back items to compare 378s > coi(my.unitizer4 <- my.unitizer4 + expr.4) 378s > 378s > my.unitizer2@tests.result 378s value conditions output message aborted 378s [1,] TRUE TRUE TRUE TRUE TRUE 378s [2,] TRUE FALSE TRUE TRUE TRUE 378s [3,] TRUE TRUE TRUE TRUE TRUE 378s [4,] TRUE FALSE TRUE TRUE TRUE 378s > my.unitizer3@tests.result 378s value conditions output message aborted 378s [1,] FALSE TRUE TRUE TRUE TRUE 378s [2,] TRUE FALSE TRUE TRUE TRUE 378s [3,] TRUE TRUE TRUE TRUE TRUE 378s [4,] TRUE FALSE TRUE TRUE TRUE 378s > my.unitizer4@tests.result 378s value conditions output message aborted 378s [1,] FALSE TRUE TRUE TRUE TRUE 378s [2,] TRUE TRUE TRUE FALSE TRUE 378s [3,] TRUE TRUE FALSE TRUE TRUE 378s [4,] TRUE TRUE TRUE FALSE TRUE 378s > 378s > 378s PASS 378s Begin testing t-shim.R 378s 378s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 378s Copyright (C) 2024 The R Foundation for Statistical Computing 378s Platform: s390x-ibm-linux-gnu (64-bit) 378s 378s R is free software and comes with ABSOLUTELY NO WARRANTY. 378s You are welcome to redistribute it under certain conditions. 378s Type 'license()' or 'licence()' for distribution details. 378s 378s R is a collaborative project with many contributors. 378s Type 'contributors()' for more information and 378s 'citation()' on how to cite R or R packages in publications. 378s 378s Type 'demo()' for some demos, 'help()' for on-line help, or 378s 'help.start()' for an HTML browser interface to help. 378s Type 'q()' to quit R. 378s 378s > source(file.path("aammrtf", "mock.R")) 378s > source(file.path("_helper", "init.R")) 379s > source(file.path("_helper", "pkgs.R")) 379s Install Packages 382s Setup Demos 382s > 382s > old.state <- tracingState(TRUE) 382s > 382s > # - "trace_at_end" ------------------------------------------------------------- 382s > 382s > if (is(unitizer:::trace_test_fun, "functionWithTrace")) 382s + untrace("trace_test_fun", where = asNamespace("unitizer")) 382s > unitizer:::trace_at_end("trace_test_fun", quote(if (!inherits(.res, 382s + "try-error")) cat(sprintf("x: %d\n", .res$value))), print = FALSE, 382s + where = asNamespace("unitizer")) 382s Tracing function "trace_test_fun" in package "namespace:unitizer" 382s > coi(unitizer:::trace_test_fun()) 382s > tracingState(FALSE) 382s [1] TRUE 382s > identical(capture.output(unitizer:::trace_test_fun()), character()) 382s [1] TRUE 382s > tracingState(TRUE) 382s [1] FALSE 382s > 382s > err <- try(unitizer:::trace_test_fun(stop("hello")), silent = TRUE) 382s > cond <- attr(err, "condition") 382s > conditionMessage(cond) 382s [1] "hello" 382s > conditionCall(cond) 382s unitizer:::trace_test_fun(stop("hello")) 382s > # return/missing etc. corner cases 382s > f <- function(x, y, z = 5) { 382s + if (missing(x)) { 382s + return(TRUE) 382s + } 382s + else if (z > 5) { 382s + stop("OMG, z > 5") 382s + } 382s + else if (identical(substitute(y), "hey")) { 382s + "substitute!" 382s + } 382s + else FALSE 382s + } 382s > unitizer:::trace_at_end("f", quote(cat("hello\n")), FALSE, environment()) 382s > res <- f() 382s hello 382s > res 382s [1] TRUE 382s > res2 <- f(1) 382s hello 382s > res2 # FALSE 382s [1] FALSE 382s > err <- try(f(1, z = 6), silent = TRUE) 382s hello 382s > is(err, "try-error") 382s [1] TRUE 382s > attr(err, "condition") 382s 5> 382s > res3 <- f(1, y = "hey") 382s hello 382s > res3 382s [1] "substitute!" 382s > 382s > # - "Parent Env Stays on Top" -------------------------------------------------- 382s > 382s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 382s > while ("unitizer.dummy.list" %in% search()) try(detach("unitizer.dummy.list")) 382s > unitizer.dummy.list <- list(z = 23, x = 1, y = "hello") 382s > my.env <- new.env() 382s > state.set <- c(search.path = 2L) 382s > # make sure to unset this at end 382s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 382s + enable.which = state.set, set.global = TRUE) 382s > untz.glob$shimFuns() 382s [1] TRUE 382s > sp <- search() 382s > curr2 <- sp[[2L]] 382s > 382s > 382s > identical(environmentName(parent.env(my.env)), curr2) 382s [1] TRUE 382s > library("unitizerdummypkg1", lib.loc = TMP.LIB) 382s > identical(environmentName(parent.env(my.env)), "package:unitizerdummypkg1") 382s [1] TRUE 382s > attach(unitizer.dummy.list) 382s > identical(environmentName(parent.env(my.env)), "unitizer.dummy.list") 382s [1] TRUE 382s > detach("unitizer.dummy.list") 382s > identical(environmentName(parent.env(my.env)), "package:unitizerdummypkg1") 382s [1] TRUE 382s > detach("package:unitizerdummypkg1", unload = TRUE) 382s > identical(environmentName(parent.env(my.env)), curr2) 382s [1] TRUE 382s > untz.glob$checkShims() 382s [1] TRUE 382s > 382s > # - "Parent env tracking with search path manip" ------------------------------- 382s > 382s > untz.glob$state() 382s An object of class "unitizerGlobalIndices" 382s Slot "search.path": 382s [1] 1 382s 382s Slot "options": 382s [1] 0 382s 382s Slot "working.directory": 382s [1] 0 382s 382s Slot "random.seed": 382s [1] 0 382s 382s Slot "namespaces": 382s [1] 0 382s 382s > keep.more <- c(getOption("unitizer.search.path.keep.base")) 382s > unitizer:::search_path_trim(keep.more, global = untz.glob) 382s > untz.glob$state() 382s An object of class "unitizerGlobalIndices" 382s Slot "search.path": 382s [1] 1 382s 382s Slot "options": 382s [1] 0 382s 382s Slot "working.directory": 382s [1] 0 382s 382s Slot "random.seed": 382s [1] 0 382s 382s Slot "namespaces": 382s [1] 0 382s 382s > identical(environmentName(parent.env(my.env)), search()[[2L]]) 382s [1] TRUE 382s > untz.glob$resetFull() 382s An object of class "unitizerGlobalIndices" 382s Slot "search.path": 382s [1] 1 382s 382s Slot "options": 382s [1] 1 382s 382s Slot "working.directory": 382s [1] 1 382s 382s Slot "random.seed": 382s [1] 1 382s 382s Slot "namespaces": 382s [1] 1 382s 382s > identical(environmentName(parent.env(my.env)), curr2) 382s [1] TRUE 382s > 382s > # - "Disable Unshims, etc." ---------------------------------------------------- 382s > 382s > untz.glob$unshimFuns() 382s [1] TRUE 382s > !any(vapply(list(library, detach, attach), inherits, logical(1L), 382s + "functionWithTrace")) 382s [1] TRUE 382s > untz.glob$release() 382s > 382s > # - "Checks, errors, etc." ----------------------------------------------------- 382s > 382s > # make sure to unset this at end 382s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 382s + enable.which = state.set, set.global = TRUE) 382s > tracingState(FALSE) 382s [1] TRUE 382s > untz.glob$shimFuns() # warning 382s Warning in untz.glob$shimFuns() : 382s Unable to shim required functions to run with `par.env=NULL` because tracing state is FALSE. Setting `par.env=.GlobalEnv`. 382s [1] FALSE 382s > parent.env(my.env) 382s 382s > tracingState(TRUE) 382s [1] FALSE 382s > untz.glob$release() 382s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 382s + set.global = TRUE) 382s > trace("library", quote(cat("I am traced\n")), where = .BaseNamespaceEnv) 382s Tracing function "library" in package "namespace:base" 382s [1] "library" 382s > lib.trace <- library 382s > untz.glob$shimFuns() # warning 382s Warning in untz.glob$shimFuns() : 382s Unable to shim required functions to run with `par.env=NULL` because they are already traced. Setting `par.env=.GlobalEnv`. 382s [1] FALSE 382s > parent.env(my.env) 382s 382s > inherits(attach, "functionWithTrace") # FALSE 382s [1] FALSE 382s > inherits(detach, "functionWithTrace") # FALSE 382s [1] FALSE 382s > inherits(library, "functionWithTrace") 382s [1] TRUE 382s > identical(lib.trace, library) 382s [1] TRUE 382s > untrace("library", where = .BaseNamespaceEnv) 382s Untracing function "library" in package "namespace:base" 382s > untz.glob$release() 382s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 382s + set.global = TRUE) 382s > untz.glob$shimFuns() 382s [1] TRUE 382s > trace("attach", quote(cat("I am traced\n")), where = .BaseNamespaceEnv) 382s Tracing function "attach" in package "namespace:base" 382s [1] "attach" 382s > attach.trace <- attach 382s > untz.glob$checkShims() # warning 382s Warning in untz.glob$checkShims() : 382s Traced functions unexpectedly changed, disabling clean parent env 382s Warning in unshimFuns() : 382s `attach` was not untraced because they were modified by something other than unitizer. 382s `FALSE`, `TRUE`, and `FALSE` were not untraced for unknown reasons; please report to maintainer. 382s 382s you should consider manually untracing the function, or restarting your R session to restore function to original value. 382s [1] FALSE 382s > parent.env(my.env) 382s 382s > inherits(detach, "functionWithTrace") # FALSE 382s [1] FALSE 382s > inherits(library, "functionWithTrace") # FALSE 382s [1] FALSE 382s > inherits(attach, "functionWithTrace") 382s [1] TRUE 382s > identical(attach.trace, attach) 382s [1] TRUE 382s > untrace("attach", where = .BaseNamespaceEnv) 382s Untracing function "attach" in package "namespace:base" 382s > untz.glob$release() 382s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 382s + set.global = TRUE) 382s > untz.glob$shimFuns() 382s [1] TRUE 382s > tracingState(FALSE) 382s [1] TRUE 382s > untz.glob$checkShims() # warning 382s Warning in untz.glob$checkShims() : 382s Tracing state off, so disabling clean parent env 382s [1] FALSE 382s > parent.env(my.env) 382s 382s > tracingState(TRUE) 382s [1] FALSE 382s > inherits(detach, "functionWithTrace") # FALSE 382s [1] FALSE 382s > inherits(library, "functionWithTrace") # FALSE 382s [1] FALSE 382s > inherits(attach, "functionWithTrace") # FALSE 382s [1] FALSE 382s > # try tracing some stuff that shouldn't be 382s > untz.glob$shimFuns("baljevzxhjLsdc") # Warning 382s Warning in untz.glob$shimFuns("baljevzxhjLsdc") : 382s Unable to shim required functions to run with `par.env=NULL` because some cannot be found. Setting `par.env=.GlobalEnv`. 382s [1] FALSE 382s > # test unexpected message or behavior from `trace_at_end` 382s > try(untz.glob$shimFun("sum")) 382s Error in untz.glob$shimFun("sum") : Internal Error: missing shim data 382s > 382s > mock(unitizer:::trace_at_end, quote(stop("trace_at_end fail"))) 382s > any( 382s + grepl( 382s + "trace_at_end fail", 382s + capture.output( 382s + trace.fail <- untz.glob$shimFun("library"), type = "message" 382s + ), 382s + fixed = TRUE 382s + ) 382s + ) 382s [1] TRUE 382s > unmock(unitizer:::trace_at_end) 382s > 382s > trace.fail # FALSE 382s [1] FALSE 382s > mock(unitizer:::trace_at_end, quote(message("random message"))) 382s > untz.glob$shimFun("library") 382s random message 382s Warning in untz.glob$shimFun("library") : 382s Function `library` was not traced even though tracing attempt did not produce errors. 382s [1] FALSE 382s > unmock(unitizer:::trace_at_end) 382s > 382s > mock(unitizer:::trace_at_end, quote(TRUE)) 382s > dont.trace <- untz.glob$shimFun("library") # Warning "not traced" 382s Warning in untz.glob$shimFun("library") : 382s Function `library` was not traced even though tracing attempt did not produce errors. 382s > unmock(unitizer:::trace_at_end) 382s > 382s > dont.trace # FALSE 382s [1] FALSE 382s > untz.glob$release() 382s > # untrace condition 382s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, set.global = TRUE) 382s > untz.glob$shimFuns() 382s [1] TRUE 382s > 382s > mock( 382s + unitizer:::untrace_utz, 382s + quote({ 382s + message("untrace dummy") 382s + base::untrace(what = what, signature = signature, where = where) 382s + }) 382s + ) 382s > untz.glob$unshimFuns() # message untrace dummy 382s untrace dummy 382s untrace dummy 382s untrace dummy 382s [1] TRUE 382s > unmock(unitizer:::untrace_utz) 382s > untz.glob$release() 382s > 382s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 382s > 382s > while ("unitizer.dummy.list" %in% search()) try(detach("unitizer.dummy.list")) 382s > 382s > # - "find_returns" ------------------------------------------------------------- 382s > 382s > fun <- function() { 382s + if (TRUE) 382s + return(1) 382s + else { 382s + { 382s + 2 + 2 382s + identity(c(1, 2, return(3), { 382s + list(1, 2, 5) 382s + return(return(4)) 382s + })) 382s + return(5) 382s + } 382s + return(6) 382s + } 382s + if (TRUE) 382s + return(7) 382s + else return(8) 382s + return(9) 382s + return(10) 382s + } 382s > ret.loc <- unitizer:::find_returns(fun) 382s > ret.loc 382s [[1]] 382s [1] 2 3 382s 382s [[2]] 382s [1] 2 4 2 3 2 4 382s 382s [[3]] 382s [1] 2 4 2 3 2 5 3 382s 382s [[4]] 382s [1] 2 4 2 4 382s 382s [[5]] 382s [1] 2 4 3 382s 382s [[6]] 382s [1] 3 3 382s 382s [[7]] 382s [1] 3 4 382s 382s [[8]] 382s [1] 4 382s 382s [[9]] 382s [1] 5 382s 382s > 382s > # Validate visually that this worked 382s > 382s > all(vapply(unitizer:::get_returns(fun, ret.loc), function(x) x[[1L]] == 382s + quote(return), logical(1L))) 382s [1] TRUE 382s > 382s > 382s PASS 382s Begin testing t-state.R 382s 382s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 382s Copyright (C) 2024 The R Foundation for Statistical Computing 382s Platform: s390x-ibm-linux-gnu (64-bit) 382s 382s R is free software and comes with ABSOLUTELY NO WARRANTY. 382s You are welcome to redistribute it under certain conditions. 382s Type 'license()' or 'licence()' for distribution details. 382s 382s R is a collaborative project with many contributors. 382s Type 'contributors()' for more information and 382s 'citation()' on how to cite R or R packages in publications. 382s 382s Type 'demo()' for some demos, 'help()' for on-line help, or 382s 'help.start()' for an HTML browser interface to help. 382s Type 'q()' to quit R. 382s 382s > source(file.path("_helper", "init.R")) 383s > 383s > options(unitizer.color = FALSE, width = 80L) 383s > 383s > # - "Random Seed" -------------------------------------------------------------- 383s > 383s > old.seed <- if (!exists(".Random.seed")) NULL else .Random.seed 383s > seed.dat <- getOption("unitizer.seed") 383s > 383s > suppressWarnings( 383s + untz.glob <- 383s + unitizer:::unitizerGlobal$new(enable.which = setNames(2L, "random.seed")) 383s + ) 383s > do.call(set.seed, seed.dat) 383s > new.seed <- .Random.seed 383s > state <- untz.glob$state() 383s > invisible(runif(10)) # see if we can reset state after this 383s > untz.glob$reset(state) 383s An object of class "unitizerGlobalIndices" 383s Slot "search.path": 383s [1] 0 383s 383s Slot "options": 383s [1] 0 383s 383s Slot "working.directory": 383s [1] 0 383s 383s Slot "random.seed": 383s [1] 2 383s 383s Slot "namespaces": 383s [1] 0 383s 383s > identical(.Random.seed, new.seed) 383s [1] TRUE 383s > untz.glob$resetFull() 383s An object of class "unitizerGlobalIndices" 383s Slot "search.path": 383s [1] 1 383s 383s Slot "options": 383s [1] 1 383s 383s Slot "working.directory": 383s [1] 1 383s 383s Slot "random.seed": 383s [1] 1 383s 383s Slot "namespaces": 383s [1] 1 383s 383s > 383s > if (is.null(old.seed)) { 383s + !isTRUE(exists(".Random.seed")) 383s + } else identical(old.seed, .Random.seed) 383s [1] TRUE 383s > 383s > # - "State Show" --------------------------------------------------------------- 383s > 383s > show(unitizer:::unitizerStatePristine()) 383s Settings Values 383s 1 par.env 383s 2 search.path 2 383s 3 options 2 383s 4 working.directory 2 383s 5 random.seed 2 383s 6 namespaces 2 383s ----- 383s 0: off 383s 1: track starting with initial state 383s 2: track starting with clean state 383s : use special unitizer environment as 'par.env' 383s See `?unitizerState` for more details. 383s > 383s > # - "all.equal.unitizerDummy" -------------------------------------------------- 383s > 383s > dummy <- new("unitizerDummy") 383s > blah <- "hello" 383s > ref.txt <- "`.REF` value was not recorded, but `.NEW` value was; they are likely different" 383s > identical(all.equal(dummy, blah), ref.txt) 383s [1] TRUE 383s > all.equal(dummy, dummy) 383s [1] TRUE 383s > identical( 383s + all.equal(blah, dummy), 383s + "`.NEW` value was not recorded, but `.REF` value was; they are likely different" 383s + ) 383s [1] TRUE 383s > # testing S4 / S3 methods, first works, second doesn't since we can't 383s > # have an S3 generic with dispatch on 2nd arg 383s > 383s > identical( 383s + evalq(all.equal(new("unitizerDummy"), "hello"), getNamespace("stats")), 383s + ref.txt 383s + ) 383s [1] TRUE 383s > evalq(all.equal("hello", new("unitizerDummy")), getNamespace("stats")) 383s [1] "Modes: character, S4" 383s [2] "Attributes: < target is NULL, current is list >" 383s [3] "target is character, current is unitizerDummy" 383s > 383s > # - "All Equal States" --------------------------------------------------------- 383s > 383s > # Doesn't seem like we're comparing these to anything? Maybe should look into 383s > # doing so? 383s > 383s > state.A <- new("unitizerGlobalState", search.path = letters[1:3], 383s + options = list(a = 5:7, b = new("unitizerDummy"), c = "hello"), 383s + working.directory = "a/b/c") 383s > state.B <- new("unitizerGlobalState", search.path = letters[1:3], 383s + options = list(a = 5:7, b = new("unitizerDummy"), d = "goodbye", 383s + c = new("unitizerDummy")), working.directory = new("unitizerDummy"), 383s + random.seed = 1:3) 383s > state.C <- new("unitizerGlobalState", search.path = letters, 383s + options = list(a = list(5, 6, 7), c = LETTERS), working.directory = new("unitizerDummy"), 383s + random.seed = 1:3) 383s > # just compare to A 383s > state.D <- new("unitizerGlobalState", search.path = letters[1:3], 383s + options = list(a = list(1, 2, 3), b = new("unitizerDummy"), 383s + c = "hello"), working.directory = "a/b/c") 383s > state.E <- new("unitizerGlobalState", options = setNames(as.list(1:20), 383s + head(letters, 20))) 383s > state.F <- new("unitizerGlobalState", options = setNames(as.list(1:20), 383s + tail(letters, 20))) 383s > # This one is supposed to return something non-character or TRUE when used 383s > # with the provided all.equal 383s > state.G <- new("unitizerGlobalState", options = list(a = structure(TRUE, 383s + class = "unitizer_glob_state_test"), b = 0)) 383s > state.H <- new("unitizerGlobalState", options = list(a = structure(FALSE, 383s + class = "unitizer_glob_state_test"), b = 2)) 383s > 383s > # - "as.state" ----------------------------------------------------------------- 383s > 383s > identical( 383s + unitizer:::as.state("recommended"), 383s + unitizer:::as.state(unitizer:::unitizerStateSuggested()) 383s + ) 383s [1] TRUE 383s > identical( 383s + unitizer:::as.state("suggested"), 383s + unitizer:::as.state(unitizer:::unitizerStateSuggested()) 383s + ) 383s [1] TRUE 383s > identical( 383s + unitizer:::as.state("pristine"), 383s + unitizer:::as.state(unitizer:::unitizerStatePristine()) 383s + ) 383s [1] TRUE 383s > 383s > # unitizerStateProcessed should produce the default object (which currently 383s > # is "off") 383s > 383s > all.equal( 383s + unitizer:::as.state(.GlobalEnv), 383s + unitizer:::as.state(unitizer:::unitizerStateSuggested(par.env = .GlobalEnv)) 383s + ) 383s [1] TRUE 383s > all.equal( 383s + unitizer:::as.state(in_pkg("stats")), 383s + unitizer:::as.state( 383s + unitizer:::unitizerStateSuggested(par.env = getNamespace("stats")) 383s + ) ) 383s [1] TRUE 383s > 383s > stats.lib <- file.path(system.file(package = "stats"), "R") 383s > all.equal( 383s + unitizer:::as.state(in_pkg(), test.files = stats.lib), 383s + unitizer:::as.state( 383s + unitizer:::unitizerStateSuggested(par.env = getNamespace("stats")) 383s + ) ) 383s [1] TRUE 383s > try(unitizer:::as.state(200)) 383s Error in as.state_raw(x) : 383s Argument `x` must be character(1L) %in% c("pristine", "recommended", "suggested" 383s , "basic", "off", "safe"), NULL, an environment, or must inherit from S4 classes 383s `unitizerStateRaw`, `unitizerStateProcessed` or `unitizerInPkg` in order to be 383s interpreted as a unitizer state object. 383s > state <- unitizer:::unitizerStateOff() 383s > # bypass validity method 383s > state@options <- 2L 383s > try(validObject(state)) 383s Error in validObject(state) : 383s invalid class "unitizerStateOff" object: Argument `state` is an invalid state: 'options' is set to 2, but 'search.path' and 'namespaces' are not 383s > # state raw conversions 383s > identical( 383s + unitizer:::as.state(unitizer:::unitizerStateRaw()), 383s + unitizer:::unitizerStateProcessed() 383s + ) 383s [1] TRUE 383s > identical( 383s + unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = "stats")), 383s + unitizer:::unitizerStateProcessed(par.env = getNamespace("stats")) 383s + ) 383s [1] TRUE 383s > state@options <- 0L 383s > state.proc <- unitizer:::as.unitizerStateProcessed(state) 383s > state.raw <- unitizer:::as.unitizerStateRaw(state.proc) 383s > is(state.raw, "unitizerStateRaw") 383s [1] TRUE 383s > all.equal( 383s + lapply(slotNames(state), slot, object = state.proc), 383s + lapply(slotNames(state.raw), slot, object = state.raw) 383s + ) 383s [1] TRUE 383s > try(unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = in_pkg()))) 383s Error in in_pkg_to_env(x.raw@par.env, test.files) : 383s Unable to detect package to use namespace of as parent environment; see `? 383s unitizerState` for how to specify a package namespace explicitly as a parent 383s environment. 383s Error in unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = in_pkg())) : 383s Unable to convert `par.env` value to a namespace environment 383s > 383s > identical( 383s + unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = in_pkg("stats"))), 383s + unitizer:::unitizerStateProcessed(par.env = getNamespace("stats")) 383s + ) 383s [1] TRUE 383s > try( 383s + unitizer:::as.state( 383s + unitizer:::unitizerStateRaw(par.env = in_pkg("asdfalkdfasd")) 383s + ) ) 383s Error in loadNamespace(name) : there is no package called 'asdfalkdfasd' 383s Error in in_pkg_to_env(x.raw@par.env, test.files) : 383s Unable to load "asdfalkdfasd" namespace to use as parent environment; see 383s `?unitizerState` for instructions on how to specify a package namespace as a 383s parent environment for tests. 383s Error in unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = in_pkg("asdfalkdfasd"))) : 383s Unable to convert `par.env` value to a namespace environment 383s > try( 383s + unitizer:::as.state( 383s + unitizer:::unitizerStateRaw(par.env = in_pkg("")), test.files = getwd() 383s + ) ) 383s Error in in_pkg("") : Argument `package` may not be an empty string 383s > # impossible states 383s > state.obj <- unitizer:::unitizerStateRaw() 383s > state.obj@options <- 2L 383s > try(unitizer:::as.state(state.obj)) 383s Error in unitizer:::as.state(state.obj) : 383s Options state tracking (2) must be less than namespace state tracking (0). 383s > state.obj@namespaces <- 2L 383s > state.obj@search.path <- 1L 383s > try(unitizer:::as.state(state.obj)) 383s Error in unitizer:::as.state(state.obj) : 383s Namespace state tracking (2) must be less than or equal to search path state 383s tracking (1). 383s > 383s > # - "as.state_raw" ------------------------------------------------------------- 383s > 383s > old.opt.loc <- options(unitizer.state = .GlobalEnv) 383s > try(unitizer:::as.state_raw(.GlobalEnv)) 383s Error in unitizer:::as.state_raw(.GlobalEnv) : 383s Value for `getOption('unitizer.state')` is incompatible with using an environment or an 'unitizerInPkg' object as the value for the `state` argument because it also is an environment or a 'unitizerInPkg' object; you must change the option or the `state` argument to be compatible. 383s > options(unitizer.state = 42L) 383s > try(unitizer:::as.state_raw(.GlobalEnv)) 383s Error in unitizer:::as.state_raw(.GlobalEnv) : 383s `getOption('unitizer.state')` must be character(1L) %in% c("pristine", "recom- 383s mended", "suggested", "basic", "off", "safe"), NULL, an environment, or must 383s inherit from S4 classes `unitizerStateRaw`, `unitizerStateProcessed` or ` 383s unitizerInPkg` in order to be interpreted as a unitizer state object. 383s > state.raw <- unitizer:::as.unitizerStateRaw(unitizer:::unitizerStateOff()) 383s > state.proc <- unitizer:::as.unitizerStateProcessed(state.raw) 383s > my.env <- new.env() 383s > options(unitizer.state = state.raw) 383s > state.raw@par.env <- my.env 383s > all.equal(unitizer:::as.state_raw(my.env), state.raw) 383s [1] TRUE 383s > options(unitizer.state = state.proc) 383s > my.env <- new.env() 383s > state.proc@par.env <- my.env 383s > all.equal( 383s + unitizer:::as.state_raw(my.env), 383s + unitizer:::as.unitizerStateRaw(state.proc) 383s + ) 383s [1] TRUE 383s > options(old.opt.loc) 383s > 383s > # - "state" -------------------------------------------------------------------- 383s > 383s > # all these assume we set the options to be in recommended mode 383s > 383s > all.equal(state("stats"), unitizer:::unitizerStateSuggested(par.env = "stats")) 383s [1] TRUE 383s > 383s > all.equal( 383s + state(in_pkg("stats")), 383s + unitizer:::unitizerStateSuggested(par.env = in_pkg("stats")) 383s + ) 383s [1] TRUE 383s > all.equal( 383s + state(in_pkg()), unitizer:::unitizerStateSuggested(par.env = in_pkg()) 383s + ) 383s [1] TRUE 383s > all.equal( 383s + state(search.path = 1), unitizer:::unitizerStateSuggested(search.path = 1L) 383s + ) 383s [1] TRUE 383s > s1 <- unitizer:::unitizerStateSuggested(par.env = .GlobalEnv) 383s > for (i in setdiff(slotNames(s1), "par.env")) slot(s1, i) <- 0L 383s > s2 <- unitizer:::unitizerStateOff() 383s > all.equal(s1, s2) 383s [1] TRUE 383s > # invalid state 383s > try(state(search.path = 3)) 383s Error in state(search.path = 3) : 383s Argument `search.path` must be integer(1L) in 0:2 383s > try(state(options = 2, namespaces = 1)) 383s Error in state(options = 2, namespaces = 1) : 383s Unable to create valid `unitizerStateRaw` object: Argument `state` is an invalid state: 'options' is set to 2, but 'search.path' and 'namespaces' are not 383s > try(state(namespaces = 2, search.path = 1)) 383s Error in state(namespaces = 2, search.path = 1) : 383s Unable to create valid `unitizerStateRaw` object: Argument `state` is an invalid state: 'namespaces' is set to 2, but 'search.path' is not 383s > state.inv <- unitizer:::unitizerStateProcessed() 383s > state.inv@options <- 2L 383s > try(unitizer:::as.state(state.inv)) 383s Error in unitizer:::as.state(state.inv) : 383s Options state tracking (2) must be less than namespace state tracking (0). 383s > state.inv@namespaces <- 2L 383s > try(unitizer:::as.state(state.inv)) 383s Error in unitizer:::as.state(state.inv) : 383s Namespace state tracking (2) must be less than or equal to search path state 383s tracking (0). 383s > # captured 383s > any(grepl("", capture.output(show(state(in_pkg()))))) 383s [1] TRUE 383s > any(grepl("", capture.output(show(state(in_pkg("stats")))))) 383s [1] TRUE 383s > any(grepl("namespace:stats", capture.output(show(state(asNamespace("stats")))))) 383s [1] TRUE 383s > 383s > # - "in_pkg" ------------------------------------------------------------------- 383s > 383s > try(in_pkg("")) 383s Error in in_pkg("") : Argument `package` may not be an empty string 383s > identical(as.character(in_pkg()), "") 383s [1] TRUE 383s > identical(as.character(in_pkg("stats")), "") 383s [1] TRUE 383s > identical(capture.output(show(in_pkg())), "") 383s [1] TRUE 383s > try(unitizer:::in_pkg_to_env(in_pkg(), "/")) 383s Error in unitizer:::in_pkg_to_env(in_pkg(), "/") : 383s Unable to detect package to use namespace of as parent environment; see `? 383s unitizerState` for how to specify a package namespace explicitly as a parent 383s environment. 383s > 383s > # - "merge states" ------------------------------------------------------------- 383s > 383s > trk.new <- new("unitizerGlobalTrackingStore", search.path = list(1, 383s + 2, 3), options = list("a", "b")) 383s > trk.ref <- new("unitizerGlobalTrackingStore", search.path = list(4, 383s + 5, 6), options = list("c", "d")) 383s > items <- new("unitizerItems") 383s > items <- items + new("unitizerItem", call = quote(1 + 1), glob.indices = new("unitizerGlobalIndices", 383s + search.path = 1L, options = 2L)) 383s > items <- items + new("unitizerItem", call = quote(2 + 1), glob.indices = new("unitizerGlobalIndices", 383s + search.path = 2L, options = 1L)) 383s > items <- items + new("unitizerItem", call = quote(1 * 1), reference = TRUE, 383s + glob.indices = new("unitizerGlobalIndices", search.path = 1L, 383s + options = 1L)) 383s > items <- items + new("unitizerItem", call = quote(2 * 1), reference = TRUE, 383s + glob.indices = new("unitizerGlobalIndices", search.path = 3L, 383s + options = 2L)) 383s > res <- unitizer:::mergeStates(items, trk.new, trk.ref) 383s > 383s > sapply(res$items, function(x) as.integer(slot(x, "glob.indices"))) 383s [,1] [,2] [,3] [,4] 383s search.path 1 2 4 5 383s options 2 1 3 4 383s working.directory 0 0 0 0 383s random.seed 0 0 0 0 383s namespaces 0 0 0 0 383s > s.n.to.check <- c("search.path", "options", "working.directory", 383s + "random.seed", "namespaces") 383s > sapply(s.n.to.check, slot, object = res$states) 383s $search.path 383s $search.path[[1]] 383s [1] 1 383s 383s $search.path[[2]] 383s [1] 2 383s 383s $search.path[[3]] 383s [1] 3 383s 383s $search.path[[4]] 383s [1] 4 383s 383s $search.path[[5]] 383s [1] 6 383s 383s 383s $options 383s $options[[1]] 383s [1] "a" 383s 383s $options[[2]] 383s [1] "b" 383s 383s $options[[3]] 383s [1] "c" 383s 383s $options[[4]] 383s [1] "d" 383s 383s 383s $working.directory 383s list() 383s 383s $random.seed 383s list() 383s 383s $namespaces 383s list() 383s 383s > # No reference items 383s > items.no.ref <- items[1:2] 383s > identical( 383s + unitizer:::mergeStates(items.no.ref, trk.new, trk.ref), 383s + list(items = items.no.ref, states = trk.new) 383s + ) 383s [1] TRUE 383s > # No new items; note that we only remap the used states to the new state 383s > # which is why we need all the .mod objects 383s > 383s > items.no.new <- items[3:4] 383s > items.no.new.mod <- items.no.new 383s > items.no.new.mod[[2L]]@glob.indices@search.path <- 2L 383s > trk.ref.mod <- trk.ref 383s > trk.ref.mod@search.path[[2L]] <- NULL 383s > 383s > identical( 383s + unitizer:::mergeStates( 383s + items.no.new, new("unitizerGlobalTrackingStore"),trk.ref 383s + ), 383s + list(items = items.no.new.mod, states = trk.ref.mod) 383s + ) 383s [1] TRUE 383s > 383s > 383s PASS 383s Begin testing t-text.R 383s 383s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 383s Copyright (C) 2024 The R Foundation for Statistical Computing 383s Platform: s390x-ibm-linux-gnu (64-bit) 383s 383s R is free software and comes with ABSOLUTELY NO WARRANTY. 383s You are welcome to redistribute it under certain conditions. 383s Type 'license()' or 'licence()' for distribution details. 383s 383s R is a collaborative project with many contributors. 383s Type 'contributors()' for more information and 383s 'citation()' on how to cite R or R packages in publications. 383s 383s Type 'demo()' for some demos, 'help()' for on-line help, or 383s 'help.start()' for an HTML browser interface to help. 383s Type 'q()' to quit R. 383s 383s > source(file.path("_helper", "init.R")) 383s > 383s > # - "cap_first" ---------------------------------------------------------------- 383s > 383s > set.seed(1, "Mersenne-Twister") 383s > words <- replicate(2, paste0(sample(letters, 5), collapse = "")) 383s > WORDS <- toupper(words) 383s > 383s > unitizer:::cap_first(c("", letters[1:2], letters[25:26], words, WORDS)) 383s [1] "" "A" "B" "Y" "Z" "Gjnue" "Xzpob" "GJNUE" "XZPOB" 383s > 383s > unitizer:::decap_first(c("", letters[1:2], letters[25:26], words, WORDS)) 383s [1] "" "a" "b" "y" "z" "gjnue" "xzpob" "gJNUE" "xZPOB" 383s > 383s > # - "header" ------------------------------------------------------------------- 383s > 383s > try(unitizer:::header("hello world", letters)) 383s Error in unitizer:::header("hello world", letters) : 383s Argument `level` must be 1 length integer-like and in 1:3 383s > try(unitizer:::header(letters, 1)) 383s Error in unitizer:::header(letters, 1) : 383s Argument `x` must be a one length character vector 383s > 383s > # - "word_wrap" ---------------------------------------------------------------- 383s > 383s > lorem1 <- "Today, with Kiernan on the stand offering confirmation, Howard walked the jury through the enormous amount of data pulled from Ulbricht's computer. Defense lawyers haven't had a chance yet to respond to this evidence—that will likely come tomorrow. The mountain they have to climb looks higher than ever, though. Last week, Ulbricht's lawyer outlined a defense in which Ulbricht walked away from the marketplace he created and was \"lured back.\" But what will explain the dozens of folders of data on this laptop, with data from the upper echelons of Silk Road management—mixed with the most intimate details of Ulbricht's personal life?" 383s > lorem2 <- "/Volumes/FIXED/folder1/folder2/folder.2345/folderabac/file.text.batch" 383s > lorem3 <- "\"untz.state.test\", \"add.smooth\", \"bitmapType\", \"browser\", \"browserNLdisabled\", \"CBoundsCheck\", \"check.bounds\", \"citation.bibtex.max\", \"continue\", \"contrasts\"" 383s > range(nchar(head(unitizer:::word_wrap(lorem1, 25L), -1L))) 383s [1] 18 25 383s > t.rn <- range(nchar(head(unitizer:::word_wrap(lorem1, 25L, 3L), 383s + -1L))) 383s > # for some reason can't get test to produce same thing in windows when 383s > # running all tests vs. single one at the prompt; the > 20 is a cop-out that 383s > # should catch both the expected case (23) and what actually happens when 383s > # you run the tests on windows 383s > # expect_true(min(t.rn) > 20 && max(t.rn) <= 25) 383s > min(t.rn) > 20 && max(t.rn) <= 25 383s [1] TRUE 383s > 383s > unitizer:::word_wrap(substr(lorem1, 1, 147), 45L, 3L) 383s [1] "Today, with Kiernan on the stand offering co-" 383s [2] "nfirmation, Howard walked the jury through " 383s [3] "the enormous amount of data pulled from Ulb-" 383s [4] "richt's computer." 383s > unitizer:::word_wrap(substr(lorem1, 1, 147), 45L, 3L, FALSE) 383s [1] "Today, with Kiernan on the stand offering con" 383s [2] "firmation, Howard walked the jury through the" 383s [3] "enormous amount of data pulled from Ulbricht'" 383s [4] "s computer." 383s > unitizer:::word_wrap(lorem2, 15L, 3L) 383s [1] "/Volumes/FIXED/" "folder1/fol-" "der2/folder.23-" "45/folderabac/" 383s [5] "file.text.batch" 383s > unitizer:::word_wrap(lorem2, 15L, 8L) 383s [1] "/Volumes/FIXED/" "folder1/" "folder2/folder." "2345/fol-" 383s [5] "derabac/file." "text.batch" 383s > 383s > unitizer:::word_wrap(lorem3, 76L, 8L) 383s [1] "\"untz.state.test\", \"add.smooth\", \"bitmapType\", \"browser\", \"browserNLdisab-" 383s [2] "led\", \"CBoundsCheck\", \"check.bounds\", \"citation.bibtex.max\", \"continue\", " 383s [3] "\"contrasts\"" 383s > unitizer:::word_wrap("hello sunset \nthere moonrise", width = 12L) 383s [1] "hello sunset" "there " "moonrise" 383s > 383s > x1 <- c("this is supposed to be a particularly long string\nthat allows us to test the behavior of bullets once we start seeing\nsome wrapping kicking in which was a problem once upon a time") 383s > 383s > unitizer:::word_wrap(x1, unlist = FALSE, width = 80L) 383s [[1]] 383s [1] "this is supposed to be a particularly long string" 383s [2] "that allows us to test the behavior of bullets once we start seeing" 383s [3] "some wrapping kicking in which was a problem once upon a time" 383s 383s > com <- "# this is supposed to be a relatively long comment that will get re-flowed" 383s > old.opt <- options(crayon.enabled = FALSE) 383s > unitizer:::word_comment(com, width = 30L) 383s [1] "# this is supposed to be a " "#relatively long comment that " 383s [3] "#will get re-flowed" 383s > unitizer:::word_wrap(c("\nhello\nthere", "\nhow")) 383s [1] "" "hello" "there" "" "how" 383s > # too narrow 383s > no.wrap <- "hello I won't be wrapped" 383s > unitizer:::word_wrap(no.wrap, width = 3) # warning 383s Warning in unitizer:::word_wrap(no.wrap, width = 3) : 383s Display width too narrow to properly wrap text; setting to 80L 383s [1] "hello I won't be wrapped" 383s > options(old.opt) 383s > 383s > # - "bullets" ------------------------------------------------------------------ 383s > 383s > x <- c("there was once a time when the fantastic unicorns could fly", 383s + "bugs bunny ate carrots and drank milk while hunting ducks") 383s > xx <- unitizer:::UL(x) 383s > 383s > as.character(xx, width = 30L) 383s [1] "- there was once a time when " " the fantastic unicorns could" 383s [3] " fly" "- bugs bunny ate carrots and " 383s [5] " drank milk while hunting " " ducks" 383s > print(xx, width = 80L) 383s - there was once a time when the fantastic unicorns could fly 383s - bugs bunny ate carrots and drank milk while hunting ducks 383s > yy <- unitizer:::OL(x) 383s > as.character(yy, width = 30L) 383s [1] "1. there was once a time when " " the fantastic unicorns " 383s [3] " could fly" "2. bugs bunny ate carrots and " 383s [5] " drank milk while hunting " " ducks" 383s > # hopefully always C locale collation in tests? 383s > sort(as.character(unitizer:::OL(rep(letters, 2), style = "LETTERS"))) 383s [1] " A. a" " B. b" " C. c" " D. d" " E. e" " F. f" " G. g" " H. h" " I. i" 383s [10] " J. j" " K. k" " L. l" " M. m" " N. n" " O. o" " P. p" " Q. q" " R. r" 383s [19] " S. s" " T. t" " U. u" " V. v" " W. w" " X. x" " Y. y" " Z. z" "AA. a" 383s [28] "AB. b" "AC. c" "AD. d" "AE. e" "AF. f" "AG. g" "AH. h" "AI. i" "AJ. j" 383s [37] "AK. k" "AL. l" "AM. m" "AN. n" "AO. o" "AP. p" "AQ. q" "AR. r" "AS. s" 383s [46] "AT. t" "AU. u" "AV. v" "AW. w" "AX. x" "AY. y" "AZ. z" 383s > xl <- as.list(x) 383s > y <- unitizer:::UL(c(xl, list(unitizer:::OL(c(xl, list(unitizer:::UL(x))))), 383s + "yowza it is raining toads today!")) 383s > as.character(y, width = 30) 383s [1] "- there was once a time when " " the fantastic unicorns could" 383s [3] " fly" "- bugs bunny ate carrots and " 383s [5] " drank milk while hunting " " ducks" 383s [7] " 1. there was once a time " " when the fantastic " 383s [9] " unicorns could fly" " 2. bugs bunny ate carrots " 383s [11] " and drank milk while " " hunting ducks" 383s [13] " - there was once a time " " when the fantastic " 383s [15] " unicorns could fly" " - bugs bunny ate carrots " 383s [17] " and drank milk while " " hunting ducks" 383s [19] "- yowza it is raining toads " " today!" 383s > try(unitizer:::as.character.bullet(hello, 1:10)) 383s Error in unitizer:::as.character.bullet(hello, 1:10) : 383s Argument `width` must be a one length positive numeric. 383s > # Extra args to word_wrap 383s > try(as.character(unitizer:::OL(c("hello", "there")), unlist = TRUE)) 383s Error in as.character.bullet(unitizer:::OL(c("hello", "there")), unlist = TRUE) : 383s You may not specify `unlist` as part of `...` as that argument is used internally 383s > as.character(unitizer:::OL("asdfasdfqwerjhdfkasdfasdfasd"), width = 20L) 383s [1] "1. asdfasdfqwerjhdf-" " kasdfasdfasd" 383s > as.character(unitizer:::OL("asdfasdfqwerjhdfkasdfasdfasd"), width = 20L, 383s + hyphens = FALSE) 383s [1] "1. asdfasdfqwerjhdfk" " asdfasdfasd" 383s > 383s > # - "substr_const" ------------------------------------------------------------- 383s > 383s > unitizer:::substr_cons(c("ab", "abcde", "abce"), 4L) 383s [1] "ab " "abcd" "abc " 383s > unitizer:::substr_cons(c("ab", "abcde", "abce"), 4L, justify = "right") 383s [1] " ab" "abcd" " abc" 383s > unitizer:::substr_cons(c("NEW", "PASS", "FAIL", "DELETED", "Error"), 4L) 383s [1] "NEW " "PASS" "FAIL" "DEL " "Err " 383s > 383s > # - "str_reduce_unique" -------------------------------------------------------- 383s > 383s > str1 <- c("abcdef", "abcdefgh", "abcql") 383s > res1 <- c("def", "defgh", "ql") 383s > unitizer:::str_reduce_unique(str1) 383s [1] "def" "defgh" "ql" 383s > unitizer:::str_reduce_unique(str1, from = "right") 383s [1] "abcdef" "abcdefgh" "abcql" 383s > str2 <- vapply(strsplit(str1, ""), function(x) paste0(rev(x), 383s + collapse = ""), "") 383s > res2 <- vapply(strsplit(res1, ""), function(x) paste0(rev(x), 383s + collapse = ""), "") 383s > all.equal(unitizer:::str_reduce_unique(str2, from = "right"), res2) 383s [1] TRUE 383s > unitizer:::str_reduce_unique("aaa") 383s [1] "" 383s > identical(unitizer:::str_reduce_unique(rep("aaa", 5L)), rep("", 5L)) 383s [1] TRUE 383s > 383s > # - "strtrunc" ----------------------------------------------------------------- 383s > 383s > str1 <- c(paste0(letters, collapse = ""), paste0(LETTERS, collapse = "")) 383s > unitizer:::strtrunc(str1, 10L) 383s [1] "abcdefg..." "ABCDEFG..." 383s > unitizer:::strtrunc(str1, 10L, from = "left") 383s [1] "...tuvwxyz" "...TUVWXYZ" 383s > unitizer:::strtrunc(c("abc", "cab"), 3L) 383s [1] "abc" "cab" 383s > try(unitizer:::strtrunc(c("abc", "cab"), 2L)) 383s Error in unitizer:::strtrunc(c("abc", "cab"), 2L) : 383s `nchar.max` too small, make bigger or make `ctd` shorter. 383s > 383s > # - "oneline" ------------------------------------------------------------------ 383s > 383s > dep <- c("res <- data %>% group_by(ID) %>% summarise(date2 = nth(date, ", 383s + " 2), time2 = nth(time, 2), first_date = first(date), last_date = last(date), ", 383s + " first_time = first(time), last_time = last(time))") 383s > unitizer:::one_line(dep) 383s [1] "res <- data %>% group_by(ID) %>% summarise(date2 = nth(date, 2), time2 = nth(time, 2), first_date = first(date), last_date = last(date), first_time = first(time), last_time = last(time))" 383s > unitizer:::one_line(dep, 50) 383s [1] "res <- data %>% group_by(ID) %>% summarise(date..." 383s > 383s > # - "let_comb_fun" ------------------------------------------------------------- 383s > 383s > (unitizer:::make_let_combn_fun(letters))(12) 383s [1] "a." "b." "c." "d." "e." "f." "g." "h." "i." "j." "k." "l." 383s > 383s > # - "cc" ----------------------------------------------------------------------- 383s > 383s > unitizer:::cc("a", "b") 383s [1] "ab" 383s > unitizer:::cc(c("a", "b"), "c") 383s [1] "abc" 383s > unitizer:::cc(c("a", "b"), "c", c = " ") 383s [1] "a b c" 383s > 383s > # - "screen_out" --------------------------------------------------------------- 383s > 383s > string <- "once upon a time in a fairy land very far away lived a green dragon" 383s > unitizer:::screen_out(string, max.len = c(3L, 2L), width = 13L) 383s once upon a 383s time in a 383s ... truncated 4 lines 383s > 383s > # - "text_wrap" ---------------------------------------------------------------- 383s > 383s > try(unitizer:::text_wrap(list(1, 2, 3), 5)) 383s Error in unitizer:::text_wrap(list(1, 2, 3), 5) : 383s Arguments `x` and `width` must be character and integer like (all values >= 1) respectively 383s > try(unitizer:::text_wrap(letters, 1:3)) 383s Error in unitizer:::text_wrap(letters, 1:3) : 383s Argument `x` must be a multiple in length of argument `width` 383s > 383s > # - "capture_output" ----------------------------------------------------------- 383s > 383s > capt <- unitizer:::capture_output({ 383s + cat("hello") 383s + cat("goodbye", file = stderr()) 383s + }) 383s > capt 383s - Output ----------------------------------------------------------------------- 383s 383s hello 383s - Message ---------------------------------------------------------------------- 383s 383s goodbye 383s > sum(grepl("Output|Message", capture.output(print(capt)))) 383s [1] 2 383s > 383s > # - "meta_word_cat" ------------------------------------------------------------ 383s > 383s > unitizer:::meta_word_cat("hello") 383s | hello 383s 383s > capture.output(unitizer:::meta_word_cat("hello", trail.nl = FALSE)) 383s [1] "| hello" 383s > # Newline issues 383s > unitizer:::meta_word_cat("hello\n", sep = "") 383s | hello 383s 383s > unitizer:::meta_word_cat("hello", "there") 383s | hello 383s | there 383s 383s > unitizer:::meta_word_cat("hello", "there", sep = " ") 383s | hello there 383s 383s > 383s > # - "meta_word_msg" ------------------------------------------------------------ 383s > 383s > unitizer:::meta_word_msg("hello") 383s | hello 383s 383s > txt <- "hello there how are you this wraps" 383s > unitizer:::meta_word_msg(txt, width = 20) 383s | hello there how 383s | are you this wraps 383s 383s > # legacy fun 383s > unitizer:::word_msg("hello") 383s hello 383s > 383s > # - "desc" --------------------------------------------------------------------- 383s > 383s > obj1 <- list(a = iris, b = lm(dist ~ speed, cars), 1:10, matrix(letters, 383s + 2)) 383s > desc(obj1, 80) 383s [1] "list(a=data.frame[150,5], b=lm[12], int[10], chr mat[2,13])" 383s > desc(obj1, 40) 383s [1] "list[4]" 383s > desc(iris, 80) 383s [1] "data.frame[150,5]" 383s > desc(iris, 200) 383s [1] "data.frame(Sepal.Length=num[150], Sepal.Width=num[150], Petal.Length=num[150], Petal.Width=num[150], Species=fct[150])" 383s > desc(list(NULL, 1L)) 383s [1] "list(NULL, int[1])" 383s > desc(NULL) 383s [1] "NULL" 383s > unitizer:::desc(NULL) 383s [1] "NULL" 383s > unitizer:::desc(lm(y ~ x, data.frame(y = 1:10, x = runif(10)))) 383s [1] "lm[12]" 383s > unitizer:::desc(new("unitizerItem", call = quote(1 + 1), env = new.env())) 383s [1] "unitizerItem" 383s > unitizer:::desc(array(1:27, dim = rep(3, 3))) 383s [1] "array[3,3,3]" 383s > unitizer:::desc(data.frame(a = letters[1:10], b = 1:10, stringsAsFactors = TRUE)) 383s [1] "data.frame(a=fct[10], b=int[10])" 383s > 383s > # - "char_to_eng" -------------------------------------------------------------- 383s > 383s > unitizer:::char_to_eng(character(), "", "") 383s [1] "" 383s > unitizer:::char_to_eng(letters[1:4], "", "") 383s [1] "a, b, c, and d" 383s > unitizer:::char_to_eng(letters[1:2], "", "") 383s [1] "a, and b" 383s > unitizer:::char_to_eng(letters[1], "", "") 383s [1] "a" 383s > unitizer:::char_to_eng(letters[1]) 383s [1] "a was" 383s > unitizer:::char_to_eng(letters[1:2]) 383s [1] "a, and b were" 383s > 383s > 383s PASS 383s Begin testing t-translate.R 383s 383s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 383s Copyright (C) 2024 The R Foundation for Statistical Computing 383s Platform: s390x-ibm-linux-gnu (64-bit) 383s 383s R is free software and comes with ABSOLUTELY NO WARRANTY. 383s You are welcome to redistribute it under certain conditions. 383s Type 'license()' or 'licence()' for distribution details. 383s 383s R is a collaborative project with many contributors. 383s Type 'contributors()' for more information and 383s 'citation()' on how to cite R or R packages in publications. 383s 383s Type 'demo()' for some demos, 'help()' for on-line help, or 383s 'help.start()' for an HTML browser interface to help. 383s Type 'q()' to quit R. 383s 384s > source(file.path("_helper", "init.R")) 384s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 384s > 384s > test.file.dir <- file.path("_helper", "ref-objs", "translate") 384s > test.file <- file.path(test.file.dir, "testthat", "test-translate2.R") 384s > test.file.min <- file.path(test.file.dir, "testthat2", "test-translate-min.R") 384s > target.dir.base <- file.path(TMP.DIR, basename(tempfile())) 384s > target.dir <- file.path(target.dir.base, "helper", "translate", "unitizer") 384s > 384s > # - "Prompt to create dir" ----------------------------------------------------- 384s > 384s > try( 384s + testthat_translate_file( 384s + test.file, target.dir, prompt = "always", interactive.mode = FALSE 384s + ) ) 384s Error in testthat_transcribe_file(file.name, target.dir, keep.testthat.call, : 384s Unable to proceed without creating target directory 384s > # translations have to be outside of `testthat`; second translation should fail 384s > # except we allow manual input 384s > 384s > # - "translate a file" --------------------------------------------------------- 384s > 384s > unitizer:::capture_output({ 384s + unitizer:::read_line_set_vals(c("Y")) 384s + res1 <- testthat_translate_file(test.file, target.dir, prompt = "always", 384s + interactive.mode = TRUE) 384s + res1.txt <- readLines(res1) 384s + unitizer:::read_line_set_vals(c("Y")) 384s + res2 <- testthat_translate_file(test.file, target.dir, prompt = "overwrite", 384s + interactive.mode = TRUE) 384s + res2.txt <- readLines(res2) 384s + unitizer:::read_line_set_vals(NULL) 384s + }) 385s > dummy <- new("unitizerDummy") 385s > 385s > all.equal(res1.txt, rds("translate_res1")) 385s [1] TRUE 385s > all.equal(res1.txt, res2.txt) 385s [1] TRUE 385s > 385s > # Can't do this twice in a row without prompting in non-interactive mode 385s > # note test above does work because we use interactive mode to accept prompt 385s > 385s > any( 385s + grepl( 385s + "already exists", 385s + capture.output( 385s + try( 385s + testthat_translate_file( 385s + test.file, target.dir, prompt = "always", interactive.mode = FALSE 385s + ) ), 385s + type='message' 385s + ) ) ) 385s [1] TRUE 385s > untz <- get_unitizer(file.path(target.dir, "translate2.unitizer")) 385s > all.equal(untz@items.ref.calls.deparse, rds("translate_res2")) 385s [1] TRUE 385s > 385s > lapply(unitizer:::as.list(untz@items.ref), function(x) x@data@value[[1L]]) 385s [[1]] 385s 385s 385s [[2]] 385s [1] 1 2 3 4 5 6 7 8 9 10 385s 385s [[3]] 385s NULL 385s 385s [[4]] 385s NULL 385s 385s [[5]] 385s NULL 385s 385s [[6]] 385s NULL 385s 385s [[7]] 385s [1] "yoyo" 385s 385s [[8]] 385s NULL 385s 385s > unlink(target.dir, recursive = TRUE) 385s > 385s > target.dir.base <- file.path(TMP.DIR, basename(tempfile())) 385s > target.dir <- file.path(target.dir.base, "_helper", "translate", "unitizer") 385s > 385s > test.dir <- file.path("_helper", "ref-objs", "translate", "testthat") 385s > 385s > # - "translate a dir" ---------------------------------------------------------- 385s > 385s > unitizer:::capture_output(res2 <- testthat_translate_dir(test.dir, target.dir)) 385s > all.equal(lapply(res2, readLines), rds("translate_res3")) 385s [1] TRUE 385s > untz <- get_unitizer(file.path(target.dir, "translate2.unitizer")) 385s > all.equal(untz@items.ref.calls.deparse, rds("translate_res4")) 385s [1] TRUE 385s > 385s > # Note not the same as when we did just the single file because the helper 385s > # file is loaded so `fun0` and `fun1` are actually defined 385s > lapply(unitizer:::as.list(untz@items.ref), function(x) x@data@value[[1L]]) 385s [[1]] 385s 385s 385s [[2]] 385s [1] 1 2 3 4 5 6 7 8 9 10 385s 385s [[3]] 385s [1] 42 385s 385s [[4]] 385s [1] 24 385s 385s [[5]] 385s [1] 24 385s 385s [[6]] 385s NULL 385s 385s [[7]] 385s [1] "yoyo" 385s 385s [[8]] 385s NULL 385s 385s > 385s > # Can't do it again since there are files there 385s > any( 385s + grepl( 385s + "safety feature to ensure files are not accidentally overwritten", 385s + capture.output( 385s + try(testthat_translate_dir(test.dir, target.dir)), type='message' 385s + ) ) ) 385s [1] TRUE 385s > 385s > # - minimal -------------------------------------------------------------------- 385s > 385s > # to test parameters 385s > 385s > writeLines( 385s + readLines( 385s + testthat_translate_file( 385s + test.file.min, target.dir, prompt = "never", interactive.mode = TRUE, 385s + unitize = FALSE 385s + ) ) ) 385s # Minimal translation 385s # test_that("simple tests", { 385s # expect_equal(fun0(a), 1:10) 385s # }) 385s unitizer_sect("simple tests", { 385s # expect_equal(fun0(a), 1:10) 385s fun0(a) 385s }) 385s > writeLines( 385s + readLines( 385s + testthat_translate_file( 385s + test.file.min, target.dir, prompt = "never", interactive.mode = TRUE, 385s + use.sects = FALSE, unitize = FALSE 385s + ) ) ) 385s # Minimal translation 385s # test_that("simple tests", { 385s # expect_equal(fun0(a), 1:10) 385s # }) 385s # - "simple tests" ------------------------------------------------------------- 385s 385s 385s # expect_equal(fun0(a), 1:10) 385s fun0(a) 385s > writeLines( 385s + readLines( 385s + testthat_translate_file( 385s + test.file.min, target.dir, prompt = "never", interactive.mode = TRUE, 385s + use.sects = FALSE, keep.testthat.call = FALSE, unitize = FALSE 385s + ) ) ) 385s # Minimal translation 385s # - "simple tests" ------------------------------------------------------------- 385s 385s 385s fun0(a) 385s > 385s > 385s > 385s PASS 385s Begin testing t-upgrade.R 386s 386s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 386s Copyright (C) 2024 The R Foundation for Statistical Computing 386s Platform: s390x-ibm-linux-gnu (64-bit) 386s 386s R is free software and comes with ABSOLUTELY NO WARRANTY. 386s You are welcome to redistribute it under certain conditions. 386s Type 'license()' or 'licence()' for distribution details. 386s 386s R is a collaborative project with many contributors. 386s Type 'contributors()' for more information and 386s 'citation()' on how to cite R or R packages in publications. 386s 386s Type 'demo()' for some demos, 'help()' for on-line help, or 386s 'help.start()' for an HTML browser interface to help. 386s Type 'q()' to quit R. 386s 386s > source(file.path("_helper", "init.R")) 386s > blat_vers <- function(x) sub("'\\d+(?:\\.\\d+)*'", "''", x) 386s > 386s > # - "Upgrade works" ------------------------------------------------------------ 386s > 386s > # this is also now tested as part of load 386s > unitizer <- 386s + get_unitizer(file.path("_helper", "unitizers", "trivial.unitizer.0.4.2")) 386s > try(validObject(unitizer, complete = TRUE)) 386s Error in validObject(object[[x]], complete = TRUE) : 386s invalid class "unitizerItem" object: 1: slots in class definition but not in object: "call.dep", "section.id", "section.name", "glob.indices", "state" 386s invalid class "unitizerItem" object: 2: In slot "data" of class "unitizerItemData": invalid object for slot "value" in class "unitizerItemData": got class "logical", should be or extend class "list" 386s > as.character(unitizer@version) 386s [1] "0.4.2" 386s > unitizer.up <- unitizer:::upgrade_internal(unitizer) # warning 386s Warning in addSlot(object, "cons", NULL) : 386s Slot `cons` does not exist in current version of `unitizer` so not added to object. 386s Warning in addSlot(object, "jump.to.test", 0L) : 386s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 386s > validObject(unitizer.up) 386s [1] TRUE 386s > identical(unitizer.up@version, as.character(packageVersion("unitizer"))) 386s [1] TRUE 386s > 386s > # - Upgrade Warnings in Unitize ------------------------------------------------ 386s > 386s > tdir <- tempfile() 386s > dir.create(tdir) 386s > dir.create(file.path(tdir, "trivial.unitizer")) 386s > file.copy(file.path("_helper", "unitizers", "trivial.R"), tdir) 386s [1] TRUE 386s > file.copy( 386s + file.path("_helper", "unitizers", "trivial.unitizer.0.4.2", "data.rds"), 386s + file.path(tdir, "trivial.unitizer") 386s + ) 386s [1] TRUE 386s > odir <- setwd(tdir) 386s > unitizer:::read_line_set_vals('N') 386s > out <- unitizer:::capture_output( 386s + try(unitize(file.path(tdir, "trivial.R"), interactive.mode=TRUE)) 386s + ) 386s > out[] <- lapply(out, blat_vers) 386s > out 386s - Output ----------------------------------------------------------------------- 386s 386s 386s | 386s | The following unitizer will be upgraded to version '': 386s | 386s | - trivial.unitizer (at '') 386s 386s unitizer> N 386s 386s - Message ---------------------------------------------------------------------- 386s 386s Warning in check_call_stack() : 386s It appears you are running unitizer inside an error handling function such as 386s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 386s couraged as it may cause unpredictable behavior from unitizer in the event tests 386s produce conditions / errors. We strongly recommend you re-run your tests 386s outside of such handling functions. 386s Warning in addSlot(object, "cons", NULL) : 386s Slot `cons` does not exist in current version of `unitizer` so not added to object. 386s Warning in addSlot(object, "jump.to.test", 0L) : 386s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 386s Warning in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 386s Upgraded test file does not match original test file ('NA' vs 'trivial.R'). 386s | unitizer upgrades are IRREVERSIBLE and not backwards compatible. 386s | Proceed? 386s 386s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 386s Cannot proceed without upgrading unitizers. 386s > 386s > unitizer:::read_line_set_vals(c('Y','Q')) 386s > out <- unitizer:::capture_output( 386s + unitize(file.path(tdir, "trivial.R"), interactive.mode=TRUE) 386s + ) 387s > out[] <- lapply(out, blat_vers) 387s > out 387s - Output ----------------------------------------------------------------------- 387s 387s 387s | 387s | The following unitizer will be upgraded to version '': 387s | 387s | - trivial.unitizer (at '') 387s 387s unitizer> Y 387s 387s +------------------------------------------------------------------------------+ 387s | unitizer for: trivial.R | 387s +------------------------------------------------------------------------------+ 387s 387s Pass Fail New 387s 1 - 3 387s ........................... 387s 1 - 3 387s 387s - New -------------------------------------------------------------------------- 387s 387s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 387s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 387s 387s > x <- 1 + 1 387s > x + 2 387s [1] 4 387s 387s unitizer> Q 387s 387s | unitizer unchanged. 387s 387s - Message ---------------------------------------------------------------------- 387s 387s Warning in addSlot(object, "cons", NULL) : 387s Slot `cons` does not exist in current version of `unitizer` so not added to object. 387s Warning in addSlot(object, "jump.to.test", 0L) : 387s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 387s Warning in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 387s Upgraded test file does not match original test file ('NA' vs 'trivial.R'). 387s | unitizer upgrades are IRREVERSIBLE and not backwards compatible. 387s | Proceed? 387s 387s | No changes recorded. 387s > unitizer:::read_line_set_vals(NULL) 387s > setwd(odir) 387s > unlink(tdir, recursive=TRUE) 387s > 387s > # - Upgrade Multiple Unitizers Unitize ----------------------------------------- 387s > 387s > tdir <- tempfile() 387s > dir.create(tdir) 387s > dir.create(file.path(tdir, "trivial1.unitizer")) 387s > dir.create(file.path(tdir, "trivial2.unitizer")) 387s > file.copy( 387s + file.path("_helper", "unitizers", "trivial.R"), 387s + file.path(tdir, c("trivial1.R", "trivial2.R")) 387s + ) 387s [1] TRUE TRUE 387s > file.copy( 387s + file.path("_helper", "unitizers", "trivial.unitizer.0.4.2", "data.rds"), 387s + file.path(tdir, "trivial1.unitizer") 387s + ) 387s [1] TRUE 387s > file.copy( 387s + file.path("_helper", "unitizers", "trivial.unitizer.0.4.2", "data.rds"), 387s + file.path(tdir, "trivial2.unitizer") 387s + ) 387s [1] TRUE 387s > odir <- setwd(tdir) 387s > unitizer:::read_line_set_vals(c('Y','Q')) 387s > out <- unitizer:::capture_output( 387s + unitize_dir(tdir, interactive.mode=TRUE) 387s + ) 387s > out[] <- lapply(out, blat_vers) 387s > out 387s - Output ----------------------------------------------------------------------- 387s 387s 387s | 387s | The following unitizers will be upgraded to version '': 387s | 387s | - trivial1.unitizer (at '') 387s | - trivial2.unitizer (at '') 387s 387s unitizer> Y 387s 387s | Summary of files in common directory '.': 387s | 387s | Pass Fail New 387s | *1. trivial1.R 1 - 3 387s | *2. trivial2.R 1 - 3 387s | .............................. 387s | 2 - 6 387s | Legend: 387s | * `unitizer` requires review 387s 387s | Type number of unitizer to review, 'A' to review all that require review 387s 387s unitizer> Q 387s 387s - Message ---------------------------------------------------------------------- 387s 387s Warning in addSlot(object, "cons", NULL) : 387s Slot `cons` does not exist in current version of `unitizer` so not added to object. 387s Warning in addSlot(object, "jump.to.test", 0L) : 387s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 387s Warning in addSlot(object, "cons", NULL) : 387s Slot `cons` does not exist in current version of `unitizer` so not added to object. 387s Warning in addSlot(object, "jump.to.test", 0L) : 387s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 387s Warning in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 387s Upgraded test file does not match original test file ('NA' vs 'trivial1.R'). 387s Warning in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 387s Upgraded test file does not match original test file ('NA' vs 'trivial2.R'). 387s | unitizer upgrades are IRREVERSIBLE and not backwards compatible. 387s | Proceed? 387s 387s > unitizer:::read_line_set_vals(NULL) 387s > setwd(odir) 387s > unlink(tdir, recursive=TRUE) 387s > 387s > # - "Rename" ------------------------------------------------------------------- 387s > 387s > setClass("untzUpgrTest", slots = c(a = "character")) 387s > x <- new("untzUpgrTest", a = letters) 387s > validObject(x) 387s [1] TRUE 387s > setClass("untzUpgrTest", slots = c(b = "character")) 387s > try(validObject(x)) 387s Error in validObject(x) : 387s invalid class "untzUpgrTest" object: slots in class definition but not in object: "b" 387s > try(capture.output(unitizer:::renameSlot(x, "c", "b"), type = "message")) 387s Error in unitizer:::renameSlot(x, "c", "b") : 387s Old slot `c` doesn't exist in object 387s > x.rename <- unitizer:::renameSlot(x, "a", "b") 387s > validObject(x.rename) 387s [1] TRUE 387s > 387s > # - "Later but valid version" -------------------------------------------------- 387s > 387s > test.file <- file.path(TMP.DIR, "tests.R") 387s > cat("1 + 1", file = test.file) 387s > unitizer:::capture_output(unitize(test.file, auto.accept = "new")) 387s > version <- unlist(strsplit(as.character(packageVersion("unitizer")), 387s + ".", fixed = TRUE)) 387s > version[1] <- as.character(as.numeric(version[1]) + 1) 387s > version.new <- paste0(version, collapse = ".") 387s > unitizer.rds <- readRDS(file.path(TMP.DIR, "tests.unitizer", "data.rds")) 387s > unitizer.rds@version <- version.new 387s > # this should work 387s > !nchar(unitizer:::unitizer_valid(unitizer.rds)) 387s [1] TRUE 387s > # now lets cause an error 387s > unitizer.rds@eval.time <- runif(5) 387s > grepl("NB: ", unitizer:::unitizer_valid(unitizer.rds)) 387s [1] TRUE 387s > 387s > # - "Failing Test w/ Upgrade" -------------------------------------------------- 387s > 387s > # Unitizer will fail, but also requires an upgrade. This ensures the failure is 387s > # shown despite the need for an upgrade. 387s > tdir <- tempfile() 387s > dir.create(tdir) 387s > dir.create(file.path(tdir, "fail-and-upgrade.unitizer")) 387s > file.copy(file.path("_helper", "unitizers", "fail-and-upgrade.R"), tdir) 387s [1] TRUE 387s > file.copy( 387s + file.path("_helper", "unitizers", "fail-and-upgrade.unitizer", "data.rds"), 387s + file.path(tdir, "fail-and-upgrade.unitizer") 387s + ) 387s [1] TRUE 387s > odir <- setwd(tdir) 387s > try(unitize(file.path("fail-and-upgrade.R"))) 387s 387s Warning in check_call_stack() : 387s It appears you are running unitizer inside an error handling function such as 387s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 387s couraged as it may cause unpredictable behavior from unitizer in the event tests 387s produce conditions / errors. We strongly recommend you re-run your tests 387s outside of such handling functions. 387s Warning in history_capt(history, interactive.mode) : 387s Unable to capture history in non-interactive mode. 387s +------------------------------------------------------------------------------+ 387s | unitizer for: fail-and-upgrade.R | 387s +------------------------------------------------------------------------------+ 387s 387s Pass Fail 387s - 1 387s ...................... 387s - 1 387s 387s - Failed ----------------------------------------------------------------------- 387s 387s | The following test failed because the new evaluation does not match the 387s | reference value from the store. Overwrite with new result ([Y]es, [N]o, 387s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 387s 387s # fails with newer versions of unitizer so we can make sure upgrade shows error 387s # and doesn't just gag at the upgrade prompt 387s 387s > packageVersion("unitizer") < "1.4.15" 387s [1] FALSE 387s 388s | Value mismatch: 388s 388s < .ref > .new 388s @@ 1 @@ @@ 1 @@ 388s < [1] TRUE > [1] FALSE 388s 388s | State mismatch; see `.DIFF$state` for details. 388s 388s | User input required to proceed, but we are in non-interactive mode. 388s 388s | unitizer unchanged. 388s 388s | * Fail: packageVersion("unitizer") < "1.4.15" 388s | in 'fail-and-upgrade.R' 388s 388s | Newly evaluated tests do not match unitizer (Fail: 1); see above for more 388s | info, or run in interactive mode. 388s 388s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 388s Cannot proceed in non-interactive mode. 388s > 388s > # Confirm upgrade needed 388s > capture.output(unitizer:::read_line_set_vals(c('Y', 'Q'))) 388s character(0) 388s > out <- unitizer:::capture_output( 388s + unitize(file.path("fail-and-upgrade.R"), interactive.mode=TRUE) 388s + ) 388s > out[] <- lapply(out, blat_vers) 388s > out 388s - Output ----------------------------------------------------------------------- 388s 388s 388s | 388s | The following unitizer will be upgraded to version '': 388s | 388s | - fail-and-upgrade.unitizer (at '') 388s 388s unitizer> Y 388s 388s +------------------------------------------------------------------------------+ 388s | unitizer for: fail-and-upgrade.R | 388s +------------------------------------------------------------------------------+ 388s 388s Pass Fail 388s - 1 388s ...................... 388s - 1 388s 388s - Failed ----------------------------------------------------------------------- 388s 388s | The following test failed because the new evaluation does not match the 388s | reference value from the store. Overwrite with new result ([Y]es, [N]o, 388s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 388s 388s # fails with newer versions of unitizer so we can make sure upgrade shows error 388s # and doesn't just gag at the upgrade prompt 388s 388s > packageVersion("unitizer") < "1.4.15" 388s [1] FALSE 388s 388s | Value mismatch: 388s 388s < .ref > .new 388s @@ 1 @@ @@ 1 @@ 388s < [1] TRUE > [1] FALSE 388s 388s | State mismatch; see `.DIFF$state` for details. 388s 388s unitizer> Q 388s 388s | unitizer unchanged. 388s 388s - Message ---------------------------------------------------------------------- 388s 388s | unitizer upgrades are IRREVERSIBLE and not backwards compatible. 388s | Proceed? 388s 388s | No changes recorded. 388s > 388s > unitizer:::read_line_set_vals(NULL) 388s > setwd(odir) 388s > unlink(tdir, recursive=TRUE) 388s > 388s > 388s PASS 388s Begin testing t-utz1.R 388s 388s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 388s Copyright (C) 2024 The R Foundation for Statistical Computing 388s Platform: s390x-ibm-linux-gnu (64-bit) 388s 388s R is free software and comes with ABSOLUTELY NO WARRANTY. 388s You are welcome to redistribute it under certain conditions. 388s Type 'license()' or 'licence()' for distribution details. 388s 388s R is a collaborative project with many contributors. 388s Type 'contributors()' for more information and 388s 'citation()' on how to cite R or R packages in publications. 388s 388s Type 'demo()' for some demos, 'help()' for on-line help, or 388s 'help.start()' for an HTML browser interface to help. 388s Type 'q()' to quit R. 388s 388s > # - "No Attach Test" ----------------------------------------------------------- 388s > 388s > f <- paste0(tempfile(), ".R") 388s > writeLines("1 + 1", f) 388s > try(unitizer::unitize(f)) 388s 388s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 388s `unitizer` package must be attached to the search path, e.g. with `library(unitizer)` 388s > unlink(f) 388s > 388s > # - "Usual Setup" -------------------------------------------------------------- 388s > 388s > source(file.path("_helper", "init.R")) 388s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 388s > source(file.path("_helper", "pkgs.R")) 388s Install Packages 391s Setup Demos 391s > 391s > # - "custom history file" ------------------------------------------------------ 391s > 391s > # Random history file 391s > unitizer:::read_line_set_vals(c("1 + 1", "Y", "Y", "Y", "Y", "N")) 391s > hist.file <- tempfile() 391s > invisible( 391s + unitizer:::capture_output( 391s + unitize(FLM.TEST.FILE, interactive.mode = TRUE, history = hist.file) 391s + ) ) 392s > hist.dat <- readLines(hist.file) 392s > unlink(hist.file) 392s > 392s > # History only works in interactive mode 392s > if (interactive()) { 392s + identical(hist.dat, c("## (original history will be restored on exit)", 392s + "library(utzflm, lib.loc = getOption(\"unitizer.tmp.lib.loc\"))", 392s + "dat <- data.frame(x = 1:100, y = (1:100)^2)", "res <- fastlm(dat$x, dat$y)", 392s + "res", "1 + 1", "get_slope(res)", "get_rsq(res)", "fastlm(1:100, 1:10)")) 392s + } else { 392s + identical(hist.dat, character()) 392s + } 392s [1] TRUE 392s > # - "bad history" -------------------------------------------------------------- 392s > 392s > bad.hist <- try(unitize(FLM.TEST.FILE, history = list()), silent = TRUE) 392s 392s > inherits(bad.hist, "try-error") 392s [1] TRUE 392s > conditionMessage(attr(bad.hist, "condition")) 392s [1] "Argument `history` must be the name of a file that can be opened in \"at\" mode, or \"\", or NULL" 392s > 392s > # - "bad seed" ----------------------------------------------------------------- 392s > 392s > # gsub needed b/c of inconsistent error calls in 3.3.2 and 3.4 392s > old.opt <- options(unitizer.seed = "bad.seed") 392s > txtopt1 <- unitizer:::capture_output(try(unitize(FLM.TEST.FILE))) 392s > options(unitizer.seed = list("bad.seed")) 392s > txtopt2 <- unitizer:::capture_output(try(unitize(FLM.TEST.FILE))) 392s > # set.seed gained an argument c.a. R3.6 that caused error mismatch 392s > txtopt2$message[grepl("\\(function \\(seed", txtopt2$message, 392s + ignore.case = TRUE)] <- "" 392s > options(old.opt) 392s > 392s > 392s > unitizer:::clean_eval_exp(txtopt1) 392s - Output ----------------------------------------------------------------------- 392s 392s 392s - Message ---------------------------------------------------------------------- 392s 392s Error in do.call(set.seed, seed.dat) : second argument must be a list 392s Error in as.state(state, test.files) : 392s Internal Error: failed processing raw state object, contact maintainer. (Unable to set random seed; make sure `getOption('unitizer.seed')` is a list of possible arguments to `set.seed`, or set `seed` slot to be less than 2L.) 392s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 392s Argument `state` could not be evaluated. 392s > # supplied seed not valid int 392s > # unexpectedly exited; not clear why all stderr is not being captured by 392s > # capture_output... 392s > txtopt2 392s - Output ----------------------------------------------------------------------- 392s 392s 392s - Message ---------------------------------------------------------------------- 392s 392s 392s NAs introduced by coercion 392s 392s supplied seed is not a valid integer 392s Error in as.state(state, test.files) : 392s Internal Error: failed processing raw state object, contact maintainer. (Unable to set random seed; make sure `getOption('unitizer.seed')` is a list of possible arguments to `set.seed`, or set `seed` slot to be less than 2L.) 392s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 392s Argument `state` could not be evaluated. 392s > 392s > # - "create dir" --------------------------------------------------------------- 392s > 392s > # Unitizers in different directories that don't exist; also test using a 392s > # function to generate those directories 392s > get_store_id <- function(x) { 392s + file <- basename(x) 392s + dir <- dirname(dirname(x)) 392s + file.path(dir, "unitizer2", sub("(.*)\\.R", "\\1.unitizer", 392s + file)) 392s + } 392s > unitizer:::read_line_set_vals(c("N")) 392s > txt1 <- unitizer:::capture_output( 392s + untz1 <- try(unitize_dir(FLM.TEST.DIR, get_store_id, interactive.mode = TRUE)) 392s + ) 392s > unitizer:::read_line_set_vals(c("Y", "Q")) 392s > txt2 <- unitizer:::capture_output(untz2 <- unitize_dir(FLM.TEST.DIR, 392s + get_store_id, interactive.mode = TRUE)) 393s > 393s > inherits(untz1, "try-error") 393s [1] TRUE 393s > inherits(untz2, "unitizer_results") 393s [1] TRUE 393s > 393s > # Some of the text must be ablated 393s > rem_txt <- function(x) { 393s + crd <- grep("Create directory\\?", x) 393s + if (!length(crd)) 393s + stop("Logic Error: this must be a create directory test") 393s + x[-(2L:(crd[[1L]] - 1L))] 393s + } 393s > txt1$output <- rem_txt(txt1$output) 393s > txt2$output <- rem_txt(txt2$output) 393s > 393s > # must create the following directory 393s > # cannot proceed w/o creating directories 393s > 393s > txt1 393s - Output ----------------------------------------------------------------------- 393s 393s 393s | Create directory? 393s 393s unitizer> N 393s 393s - Message ---------------------------------------------------------------------- 393s 393s Warning in check_call_stack() : 393s It appears you are running unitizer inside an error handling function such as 393s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 393s couraged as it may cause unpredictable behavior from unitizer in the event tests 393s produce conditions / errors. We strongly recommend you re-run your tests 393s outside of such handling functions. 393s Error in unitize_core(test.files = test.files, store.ids = store.ids, : 393s Cannot proceed without creating directories. 393s > txt2 393s - Output ----------------------------------------------------------------------- 393s 393s 393s | Create directory? 393s 393s unitizer> Y 393s 393s | Summary of files in common directory 'unitizer': 393s | 393s | Pass Fail New 393s | *1. fastlm1.R - - 4 393s | *2. fastlm2.R - - 1 393s | *3. unitizer.fastlm.R - - 3 393s | ..................................... 393s | - - 8 393s | Legend: 393s | * `unitizer` requires review 393s 393s | Type number of unitizer to review, 'A' to review all that require review 393s 393s unitizer> Q 393s 393s - Message ---------------------------------------------------------------------- 393s 393s 393s > 393s > # - print / dir ---------------------------------------------------------------- 393s > 393s > # quit from all at once 393s > unitizer:::read_line_set_vals(c("A", "QQ", "Q")) 393s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 393s 393s | Summary of files in common directory 'unitizer': 393s | 393s | Pass Fail New 393s | *1. fastlm1.R - - 4 393s | *2. fastlm2.R - - 1 393s | *3. unitizer.fastlm.R - - 3 393s | ..................................... 393s | - - 8 393s | Legend: 393s | * `unitizer` requires review 393s 393s | Type number of unitizer to review, 'A' to review all that require review 393s 393s unitizer> A 393s 393s +------------------------------------------------------------------------------+ 393s | unitizer for: unitizer/fastlm1.R | 393s +------------------------------------------------------------------------------+ 393s 393s Pass Fail New 393s - - 4 393s ........................... 393s - - 4 393s 393s - New -------------------------------------------------------------------------- 393s 393s | The 4 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 393s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 393s 393s # Assignments and calls to `library` are not considered tests by 393s # `unitizer` so you will not need to review them 393s 393s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 393s > dat <- data.frame(x = 1:100, y = (1:100)^2) 393s > res <- fastlm(dat$x, dat$y) 393s 393s # The `unitizer>` prompt is like the standard R prompt. You may 393s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 393s # `str(res)`. 393s # 393s # Once you are done reviewing, you need to tell `unitizer` you 393s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 393s 393s > res 393s intercept slope rsq 393s -1717.000 101.000 0.939 393s attr(,"class") 393s [1] "fastlm" 393s 393s unitizer> QQ 393s 393s | No changes recorded. 393s | unitizer unchanged. 393s 393s | Summary of files in common directory 'unitizer': 393s | 393s | Pass Fail New 393s | *1. fastlm1.R - - 4 393s | *2. fastlm2.R - - 1 393s | *3. unitizer.fastlm.R - - 3 393s | ..................................... 393s | - - 8 393s | Legend: 393s | * `unitizer` requires review 393s 393s | Type number of unitizer to review, 'A' to review all that require review 393s 393s unitizer> Q 393s 393s > 393s > # Now test `unitize_dir`; we are testing all different combination of whether 393s > # a unitizer is accepted and updated 393s > # Review all 393s > # Accept all 393s > # Quit 393s > # Quit 393s > # Re-evalute 393s > # Review remaining 393s > # Accept all 393s > # Quit from review 393s > # Quit completely 393s > 393s > unitizer:::read_line_set_vals(c("A", "Y", "Y", "Y", "Y", "Y", 393s + "Q", "Q", "R", "A", "Y", "Y", "Q", "Q")) 393s > untz3a <- unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 393s 393s | Summary of files in common directory 'unitizer': 393s | 393s | Pass Fail New 393s | *1. fastlm1.R - - 4 393s | *2. fastlm2.R - - 1 393s | *3. unitizer.fastlm.R - - 3 393s | ..................................... 393s | - - 8 393s | Legend: 393s | * `unitizer` requires review 393s 393s | Type number of unitizer to review, 'A' to review all that require review 393s 393s unitizer> A 393s 393s +------------------------------------------------------------------------------+ 393s | unitizer for: unitizer/fastlm1.R | 393s +------------------------------------------------------------------------------+ 393s 393s Pass Fail New 393s - - 4 393s ........................... 393s - - 4 393s 393s - New -------------------------------------------------------------------------- 393s 393s | The 4 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 393s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 393s 393s # Assignments and calls to `library` are not considered tests by 393s # `unitizer` so you will not need to review them 393s 393s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 393s > dat <- data.frame(x = 1:100, y = (1:100)^2) 393s > res <- fastlm(dat$x, dat$y) 393s 393s # The `unitizer>` prompt is like the standard R prompt. You may 393s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 393s # `str(res)`. 393s # 393s # Once you are done reviewing, you need to tell `unitizer` you 393s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 393s 393s > res 393s intercept slope rsq 393s -1717.000 101.000 0.939 393s attr(,"class") 393s [1] "fastlm" 393s 393s unitizer> Y 393s 393s # There are three more tests to review; accept them with 'Y' 393s 393s > get_slope(res) 393s [1] 101 393s 393s unitizer> Y 393s 393s > get_rsq(res) 393s [1] 0.939 393s 393s unitizer> Y 393s 393s # This last test is expected to cause an error; press 'Y' to 393s # accept it so future checks can confirm the same error persists 393s 393s > fastlm(1:100, 1:10) 393s Error in fastlm(1:100, 1:10) : 393s Arguments `x` and `y` must be the same length. 393s 393s unitizer> Y 393s 393s = Finalize Unitizer ============================================================ 393s 393s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 393s | - Adding 4 out of 4 new tests 393s 393s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [QQ]uit All)? 393s 393s unitizer> Y 393s 393s | unitizer updated. 393s 393s +------------------------------------------------------------------------------+ 393s | unitizer for: unitizer/fastlm2.R | 393s +------------------------------------------------------------------------------+ 393s 393s Pass Fail New 393s - - 1 393s ........................... 393s - - 1 393s 393s - New -------------------------------------------------------------------------- 393s 393s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 393s | [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 393s 393s # For internal tests only; not for demo 393s 393s > x <- 1:10 393s > y <- 1:10^3 393s > res <- summary(lm(y ~ x, data.frame(x = x, y = y))) 393s > intercept <- res$coefficients[1, 1] 393s > slope <- res$coefficients[2, 1] 393s > rsq <- res$r.squared 393s > structure(c(intercept = intercept, slope = slope, rsq = rsq), 393s + class = "fastlm") 393s intercept slope rsq 393s 4.95e+02 1.00e+00 9.90e-05 393s attr(,"class") 393s [1] "fastlm" 393s 393s unitizer> Q 393s 393s | No changes recorded. 393s | unitizer unchanged. 393s 393s +------------------------------------------------------------------------------+ 393s | unitizer for: unitizer/unitizer.fastlm.R | 393s +------------------------------------------------------------------------------+ 393s 393s Pass Fail New 393s - - 3 393s ........................... 393s - - 3 393s 393s - New -------------------------------------------------------------------------- 393s 393s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 393s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 393s 393s # Extra test file for internal tests; not for DEMO 393s 393s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 393s > x <- 1:10 393s > y <- x^3 393s > res <- fastlm(x, y) 393s > get_slope(res) 393s [1] 105 393s 393s unitizer> Q 393s 393s | No changes recorded. 393s | unitizer unchanged. 393s 393s | Summary of files in common directory 'unitizer': 393s | 393s | Pass Fail New 393s | $1. fastlm1.R ? ? ? 393s | *2. fastlm2.R - - 1 393s | *3. unitizer.fastlm.R - - 3 393s | ..................................... 393s | ? ? ? 393s | Legend: 393s | * `unitizer` requires review 393s | $ `unitizer` has been modified and needs to be re-run to recompute summary 393s 393s | Type number of unitizer to review, 'A' to review all that require review, 'R' 393s | to re-run all updated 393s 393s unitizer> R 393s 393s | Summary of files in common directory 'unitizer': 393s | 393s | Pass Fail New 393s | 1. fastlm1.R 4 - - 393s | *2. fastlm2.R - - 1 393s | *3. unitizer.fastlm.R - - 3 393s | ..................................... 393s | 4 - 4 393s | Legend: 393s | * `unitizer` requires review 393s 393s | Type number of unitizer to review, 'A' to review all that require review 393s 393s unitizer> A 393s 393s +------------------------------------------------------------------------------+ 393s | unitizer for: unitizer/fastlm2.R | 393s +------------------------------------------------------------------------------+ 393s 393s Pass Fail New 393s - - 1 393s ........................... 393s - - 1 393s 393s - New -------------------------------------------------------------------------- 393s 393s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 393s | [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 393s 393s # For internal tests only; not for demo 393s 393s > x <- 1:10 393s > y <- 1:10^3 393s > res <- summary(lm(y ~ x, data.frame(x = x, y = y))) 393s > intercept <- res$coefficients[1, 1] 393s > slope <- res$coefficients[2, 1] 393s > rsq <- res$r.squared 393s > structure(c(intercept = intercept, slope = slope, rsq = rsq), 393s + class = "fastlm") 393s intercept slope rsq 393s 4.95e+02 1.00e+00 9.90e-05 393s attr(,"class") 393s [1] "fastlm" 393s 393s unitizer> Y 393s 393s = Finalize Unitizer ============================================================ 393s 393s | You will IRREVERSIBLY modify 'unitizer/fastlm2.unitizer' by: 393s | - Adding 1 out of 1 new tests 393s 393s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [QQ]uit All)? 393s 393s unitizer> Y 393s 393s | unitizer updated. 393s 393s +------------------------------------------------------------------------------+ 393s | unitizer for: unitizer/unitizer.fastlm.R | 393s +------------------------------------------------------------------------------+ 393s 393s Pass Fail New 393s - - 3 393s ........................... 393s - - 3 393s 393s - New -------------------------------------------------------------------------- 393s 393s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 393s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 393s 393s # Extra test file for internal tests; not for DEMO 393s 393s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 393s > x <- 1:10 393s > y <- x^3 393s > res <- fastlm(x, y) 393s > get_slope(res) 393s [1] 105 393s 393s unitizer> Q 393s 393s | No changes recorded. 393s | unitizer unchanged. 393s 393s | Summary of files in common directory 'unitizer': 393s | 393s | Pass Fail New 393s | 1. fastlm1.R 4 - - 393s | $2. fastlm2.R ? ? ? 393s | *3. unitizer.fastlm.R - - 3 393s | ..................................... 393s | ? ? ? 393s | Legend: 393s | * `unitizer` requires review 393s | $ `unitizer` has been modified and needs to be re-run to recompute summary 393s 393s | Type number of unitizer to review, 'A' to review all that require review, 'R' 393s | to re-run all updated 393s 393s unitizer> Q 393s 393s > untz3a.get.all <- vapply(get_unitizer(untz3a), class, character(1L)) 393s > identical(untz3a.get.all, c("unitizer", "unitizer", "logical")) 394s [1] TRUE 394s > print(untz3a) 394s Summary of tests (accept/total): 394s 394s id test.file New Passed Totals 394s 1 fastlm1.R 0/0 4/4 4/4 $ 394s 2 fastlm2.R 1/1 0/0 1/1 394s 3 unitizer.fastlm.R 0/3 0/0 0/3 * 394s ----------------------------------------------------- 394s 0 Totals 1/4 4/4 5/8 394s 394s * unitizer was not saved 394s $ unitizer was saved in prior evaluation 394s 394s Test files in common directory 'tests/unitizer' 394s > untz3a.first <- untz3a[[1L]] 394s > print(untz3a.first) 394s Test File: tests/unitizer/fastlm1.R 394s Store ID: tests/unitizer/fastlm1.unitizer 394s 394s id call ignored status user reviewed 394s 1 1 library(utzflm, lib.loc = g... * Passed Y FALSE 394s 2 2 dat <- data.frame(x = 1:100... * Passed Y FALSE 394s 3 3 res <- fastlm(dat$x, dat$y) * Passed Y FALSE 394s 4 4 res Passed Y FALSE 394s 5 5 get_slope(res) Passed Y FALSE 394s 6 6 get_rsq(res) Passed Y FALSE 394s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 394s 394s You chose NOT to save these changes to the unitizer store 394s > 394s > identical(class(untz3a), "unitizer_results") 394s [1] TRUE 394s > identical( 394s + lapply(untz3a, class), 394s + replicate(3L, c("unitizer_result", "data.frame"), simplify = FALSE) 394s + ) 394s [1] TRUE 394s > 394s > untz3a.cpy <- untz3a 394s > # need to drop temp file attributes for tests 394s > for (i in seq_along(untz3a.cpy)) { 394s + attr(untz3a.cpy[[i]], "test.file") <- basename(attr(untz3a.cpy[[i]], 394s + "test.file")) 394s + attr(untz3a.cpy[[i]], "store.id") <- basename(attr(untz3a.cpy[[i]], 394s + "store.id")) 394s + } 394s > all.equal(untz3a.cpy, rds("unitize_res1")) 394s [1] TRUE 394s > 394s > # dummy class for errors 394s > untz3a.first.bad <- untz3a.first 394s > setClass("uhtsdfoqiuerhzb", slots=c(a='integer')) 394s > attr(untz3a.first.bad, "store.id") <- new("uhtsdfoqiuerhzb") 394s > print(untz3a.first.bad) 394s Test File: tests/unitizer/fastlm1.R 394s Store ID: 394s 394s id call ignored status user reviewed 394s 1 1 library(utzflm, lib.loc = g... * Passed Y FALSE 394s 2 2 dat <- data.frame(x = 1:100... * Passed Y FALSE 394s 3 3 res <- fastlm(dat$x, dat$y) * Passed Y FALSE 394s 4 4 res Passed Y FALSE 394s 5 5 get_slope(res) Passed Y FALSE 394s 6 6 get_rsq(res) Passed Y FALSE 394s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 394s 394s You chose NOT to save these changes to the unitizer store 394s > 394s > # this is a bit contrived as it isn't possible to directly create an empty 394s > # unitize dir result 394s > untz3a.empty <- untz3a[0] 394s > class(untz3a.empty) <- class(untz3a) 394s > print(untz3a.empty) 394s | No unitizers 394s 394s > 394s > # Now accept the last remaining tests 394s > # unlink(list.files(test.dir, pattern="\\.unitizer$", full.names=TRUE), 394s > # recursive=TRUE) 394s > # Invalid input 394s > # Review third unitizer 394s > # Accept all 394s > # Re-eval and exit (again, not clear this is right thing to do) 394s > unitizer:::read_line_set_vals(c("3000", "3", "Y", "Y", "Y", "Y", 394s + "R")) 394s > untz3b <- unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 394s 394s | Summary of files in common directory 'unitizer': 394s | 394s | Pass Fail New 394s | 1. fastlm1.R 4 - - 394s | 2. fastlm2.R 1 - - 394s | *3. unitizer.fastlm.R - - 3 394s | ..................................... 394s | 5 - 3 394s | Legend: 394s | * `unitizer` requires review 394s 394s | Type number of unitizer to review, 'A' to review all that require review 394s 394s unitizer> 3000 394s | Type a number in `1:3` at the prompt 394s [1] 3000 394s unitizer> 3 394s +------------------------------------------------------------------------------+ 394s | unitizer for: unitizer/unitizer.fastlm.R | 394s +------------------------------------------------------------------------------+ 394s 394s Pass Fail New 394s - - 3 394s ........................... 394s - - 3 394s 394s - New -------------------------------------------------------------------------- 394s 394s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 394s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 394s 394s # Extra test file for internal tests; not for DEMO 394s 394s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 394s > x <- 1:10 394s > y <- x^3 394s > res <- fastlm(x, y) 394s > get_slope(res) 394s [1] 105 394s 394s unitizer> Y 394s 394s > get_rsq(res) 394s [1] 0.862 394s 394s unitizer> Y 394s 394s > get_intercept(res) 394s [1] -277 394s 394s unitizer> Y 394s 394s = Finalize Unitizer ============================================================ 394s 394s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 394s | - Adding 3 out of 3 new tests 394s 394s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 394s 394s unitizer> Y 394s 394s | unitizer updated. 394s 394s | Summary of files in common directory 'unitizer': 394s | 394s | Pass Fail 394s | 1. fastlm1.R 4 - 394s | 2. fastlm2.R 1 - 394s | $3. unitizer.fastlm.R ? ? 394s | ................................ 394s | ? ? 394s | Legend: 394s | $ `unitizer` has been modified and needs to be re-run to recompute summary 394s 394s | Type number of unitizer to review, 'A' to review all that require review, 'R' 394s | to re-run all updated 394s 394s unitizer> R 394s 394s | Summary of files in common directory 'unitizer': 394s | 394s | Pass Fail 394s | 1. fastlm1.R 4 - 394s | 2. fastlm2.R 1 - 394s | 3. unitizer.fastlm.R 3 - 394s | ................................ 394s | 8 - 394s 394s | 8/8 tests passed; nothing to review. 394s 394s > print(untz3b) 394s Summary of tests (accept/total): 394s 394s id test.file Passed 394s 1 fastlm1.R 4/4 * 394s 2 fastlm2.R 1/1 * 394s 3 unitizer.fastlm.R 3/3 $ 394s --------------------------------- 394s 0 Totals 8/8 394s 394s * unitizer was not saved 394s $ unitizer was saved in prior evaluation 394s 394s Test files in common directory 'tests/unitizer' 394s > identical( 394s + vapply(get_unitizer(untz3b), class, character(1L)), rep("unitizer", 3L) 394s + ) 394s [1] TRUE 394s > # - "namespace conflict" ------------------------------------------------------- 394s > 394s > # Namespace conflicts; unfortunately if either `covr` or `data.table` are 394s > # loaded this may not work quite right. Also as of `covr` 2.2.2 it seems that 394s > # the R session `covr` launches now seems to load the covr namespace. The 394s > # logic here ensures covr namespace is always loaded for this tests, if 394s > # possible. So we omit the line were what namespaces could not be unloaded are 394s > # mentioned. 394s > 394s > unitizer:::read_line_set_vals("Y") 394s > ns.conf1 <- unitizer:::capture_output( 394s + unitize_dir(FLM.TEST.DIR, state = "pristine", interactive.mode = TRUE) 394s + ) 394s > ns.conf1$message <- ns.conf1$message[-3] 394s > ns.conf1 394s - Output ----------------------------------------------------------------------- 394s 394s 394s | Summary of files in common directory 'unitizer': 394s | 394s | Pass Fail 394s | 1. fastlm1.R 4 - 394s | 2. fastlm2.R 1 - 394s | 3. unitizer.fastlm.R 3 - 394s | ................................ 394s | 8 - 394s 394s | Do you wish to proceed despite compromised state tracking 394s | ([Y]es, [N]o)? 394s 394s unitizer> Y 394s 394s - Message ---------------------------------------------------------------------- 394s 394s | `unitizer` was unable to run with `options` state tracking enabled starting 394s | with the first test file because the following namespaces could not be 394s 394s | You may proceed normally but be aware that option state was not managed 394s | starting with the file in question, and option state will not be managed 394s | during review, or restored to original values after `unitizer` completes 394s | evaluation. You may quit `unitizer` now to avoid any changes. See `?unitiz- 394s | erState` for more details. 394s 394s | 8/8 tests passed; nothing to review. 394s 394s > 394s > unitizer:::read_line_set_vals("N") 394s > ns.conf2 <- unitizer:::capture_output( 394s + unitize_dir(FLM.TEST.DIR, state = "pristine", interactive.mode = TRUE) 394s + ) 395s > ns.conf2$message <- ns.conf2$message[-3] 395s > ns.conf2 395s - Output ----------------------------------------------------------------------- 395s 395s 395s | Summary of files in common directory 'unitizer': 395s | 395s | Pass Fail 395s | 1. fastlm1.R 4 - 395s | 2. fastlm2.R 1 - 395s | 3. unitizer.fastlm.R 3 - 395s | ................................ 395s | 8 - 395s 395s | Do you wish to proceed despite compromised state tracking 395s | ([Y]es, [N]o)? 395s 395s unitizer> N 395s 395s - Message ---------------------------------------------------------------------- 395s 395s | `unitizer` was unable to run with `options` state tracking enabled starting 395s | with the first test file because the following namespaces could not be 395s 395s | You may proceed normally but be aware that option state was not managed 395s | starting with the file in question, and option state will not be managed 395s | during review, or restored to original values after `unitizer` completes 395s | evaluation. You may quit `unitizer` now to avoid any changes. See `?unitiz- 395s | erState` for more details. 395s 395s > 395s > # Non-interactive; also testing what happens when we run a test with errors 395s > # inside a try block 395s > 395s > try(unitize_dir(FLM.TEST.DIR, state = "pristine", interactive.mode = FALSE)) 395s 395s Warning in check_call_stack() : 395s It appears you are running unitizer inside an error handling function such as 395s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 395s couraged as it may cause unpredictable behavior from unitizer in the event tests 395s produce conditions / errors. We strongly recommend you re-run your tests 395s outside of such handling functions. 395s 395s 395s 395s 395s 395s 395s | Unexpectedly exited evaluation attempt when executing test expression: 395s | > fastlm(1:100, 1:10) 395s | Make sure you are not calling `unitize` inside a `tryCatch`/`try` block, 395s | invoking a restart defined outside `unitize`, evaluating an expression that 395s | calls `quit()`/`q()`, or quitting from a `browser()`/`debug()`/`trace()`. If 395s | none of these apply yet you are seeing this message please contact package 395s | maintainer. 395s 395s Error in fastlm(1:100, 1:10) : 395s Arguments `x` and `y` must be the same length. 395s > ns.conf3 <- unitizer:::capture_output( 395s + try( 395s + unitize( 395s + file.path(FLM.TEST.DIR, "fastlm2.R"), state = "pristine", 395s + interactive.mode = FALSE 395s + ) ) ) 395s > ns.conf3$message <- ns.conf3$message[-grep('unloaded', ns.conf3$message)] 395s > ns.conf3 395s - Output ----------------------------------------------------------------------- 395s 395s 395s - Message ---------------------------------------------------------------------- 395s 395s Warning in check_call_stack() : 395s It appears you are running unitizer inside an error handling function such as 395s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 395s couraged as it may cause unpredictable behavior from unitizer in the event tests 395s produce conditions / errors. We strongly recommend you re-run your tests 395s outside of such handling functions. 395s Warning in history_capt(history, interactive.mode) : 395s Unable to capture history in non-interactive mode. 395s | `unitizer` was unable to run with `options` state tracking enabled starting 395s | with the first test file because the following namespaces could not be 395s 395s Error in unitize_browse(unitizers = unitizers[valid], mode = mode, interactive.mode = interactive.mode, : 395s Unable to proceed in non-interactive mode; set options state tracking to a value 395s less than or equal to search path state tracking or see vignette for other 395s workarounds. 395s > 395s > # - "Removing Tests" ----------------------------------------------------------- 395s > 395s > # Removing tests; del2 has the same tests as del1, but with some removed 395s > extra.dir <- file.path(FLM.TEST.DIR, "..", "extra") 395s > unitize(file.path(extra.dir, "del1.R"), auto.accept = "new", interactive.mode = FALSE) 395s 395s Warning in history_capt(history, interactive.mode) : 395s Unable to capture history in non-interactive mode. 395s +------------------------------------------------------------------------------+ 395s | unitizer for: extra/del1.R | 395s +------------------------------------------------------------------------------+ 395s 395s Pass Fail New 395s basic tests - - 3 395s more tests - - 3 395s ............................ 395s - - 6 395s 395s | Auto-accepting changes... 395s | unitizer updated. 395s 395s > unitizer:::read_line_set_vals(c("Y", "YY", "Y", "Y")) 395s > unitize( 395s + file.path(extra.dir, "del2.R"), 395s + store.id = file.path(extra.dir, "del1.unitizer"), 395s + interactive.mode = TRUE 395s + ) 395s 395s +------------------------------------------------------------------------------+ 395s | unitizer for: extra/del2.R | 395s +------------------------------------------------------------------------------+ 395s 395s Pass Fail Del 395s basic tests 2 - 1 395s - - 3 395s ............................ 395s 2 - 4 395s 395s = basic tests ================================================================== 395s 395s - Removed ---------------------------------------------------------------------- 395s 395s | The following test exists in the unitizer store but not in the new test 395s | script. Remove test from store ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, 395s | [Q]uit, [H]elp)? 395s 395s > "hello" 395s [1] "hello" 395s 395s unitizer> Y 395s 395s = Other Removed Items ========================================================== 395s 395s - Removed ---------------------------------------------------------------------- 395s 395s | The 3 tests in this section exist in the unitizer store but not in the new 395s | test script. Remove tests from store ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, 395s | [Q]uit, [H]elp)? 395s 395s > 3 395s [1] 3 395s 395s unitizer> YY 395s 395s 1. 3 . . . . Removed:- 395s 2. 645 . . . . Removed:- 395s 3. 9/0 . . . . Removed:- 395s 395s Choose 'Y' for the 3 tests shown above ([Y]es, [N]o)? 395s unitizer> Y 395s 395s = Finalize Unitizer ============================================================ 395s 395s | You will IRREVERSIBLY modify 'extra/del1.unitizer' by: 395s | - Removing 4 out of 4 removed tests 395s 395s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 395s 395s unitizer> Y 395s 395s | unitizer updated. 395s 395s > # - "navigate" ----------------------------------------------------------------- 395s > 395s > # Update `fastlm` to cause unitizers to fail, and go through the errors 395s > update_fastlm(FLM, version = "0.1.1") 395s > inst_pak(FLM) 396s > # Try navigating through the unitizer 396s > unitizer:::read_line_set_vals(c("P", "B", "3", "N", "U", "N", 396s + "N", "B", "U", "Q")) 396s > untz7a <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 396s 396s +------------------------------------------------------------------------------+ 396s | unitizer for: unitizer/fastlm1.R | 396s +------------------------------------------------------------------------------+ 396s 396s Pass Fail 396s 2 2 396s ...................... 396s 2 2 396s 396s - Failed ----------------------------------------------------------------------- 396s 396s | The 2 tests in this section failed because the new evaluations do not match 396s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 396s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 396s 396s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 396s > dat <- data.frame(x = 1:100, y = (1:100)^2) 396s > res <- fastlm(dat$x, dat$y) 396s 396s # Our fast computations do not produce the same results as our 396s # original tests so they fail. If you need more detail than the 396s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 396s # 396s # You should reject these tests by typing 'N' at the prompt since 396s # they are incorrect. 396s 396s > res 396s intercept slope rsq 396s -3.54e+13 7.01e+11 9.39e-01 396s attr(,"class") 396s [1] "fastlm" 396s 396s | Value mismatch: 396s 396s < .ref > .new 396s @@ 1,4 @@ @@ 1,4 @@ 396s intercept slope rsq intercept slope rsq 396s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 396s attr(,"class") attr(,"class") 396s [1] "fastlm" [1] "fastlm" 396s 396s | State mismatch; see `.DIFF$state` for details. 396s 396s unitizer> P 396s 396s | At first reviewable item; nothing to step back to 396s 396s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 396s > dat <- data.frame(x = 1:100, y = (1:100)^2) 396s > res <- fastlm(dat$x, dat$y) 396s 396s # Our fast computations do not produce the same results as our 396s # original tests so they fail. If you need more detail than the 396s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 396s # 396s # You should reject these tests by typing 'N' at the prompt since 396s # they are incorrect. 396s 396s > res 396s intercept slope rsq 397s -3.54e+13 7.01e+11 9.39e-01 397s attr(,"class") 397s [1] "fastlm" 397s 397s | Value mismatch: 397s 397s < .ref > .new 397s @@ 1,4 @@ @@ 1,4 @@ 397s intercept slope rsq intercept slope rsq 397s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 397s attr(,"class") attr(,"class") 397s [1] "fastlm" [1] "fastlm" 397s 397s | State mismatch; see `.DIFF$state` for details. 397s 397s unitizer> B 397s 397s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 397s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 397s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 397s 4. res . . . . . . . . . . . . . . . . . . . . Failed:- 397s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:- 397s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 397s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 397s 397s | What test do you wish to review (input a test number, [U]nreviewed)? 397s 397s unitizer> 3 397s 397s | You selected a test that is not normally reviewed in this mode; 397s | as such, upon test completion, you will be brought back to this menu 397s | instead of being taken to the next reviewable test. 397s 397s - Failed ----------------------------------------------------------------------- 397s 397s | The 2 tests in this section failed because the new evaluations do not match 397s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 397s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 397s 397s > res <- fastlm(dat$x, dat$y) 397s unitizer> N 397s 397s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 397s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 397s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:N 397s 4. res . . . . . . . . . . . . . . . . . . . . Failed:- 397s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:- 397s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 397s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 397s 397s | What test do you wish to review (input a test number, [U]nreviewed)? 397s 397s unitizer> U 397s 397s - Failed ----------------------------------------------------------------------- 397s 397s | The 2 tests in this section failed because the new evaluations do not match 397s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 397s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 397s 397s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 397s > dat <- data.frame(x = 1:100, y = (1:100)^2) 397s > res <- fastlm(dat$x, dat$y) 397s 397s # Our fast computations do not produce the same results as our 397s # original tests so they fail. If you need more detail than the 397s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 397s # 397s # You should reject these tests by typing 'N' at the prompt since 397s # they are incorrect. 397s 397s > res 397s intercept slope rsq 397s -3.54e+13 7.01e+11 9.39e-01 397s attr(,"class") 397s [1] "fastlm" 397s 397s | Value mismatch: 397s 397s < .ref > .new 397s @@ 1,4 @@ @@ 1,4 @@ 397s intercept slope rsq intercept slope rsq 397s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 397s attr(,"class") attr(,"class") 397s [1] "fastlm" [1] "fastlm" 397s 397s | State mismatch; see `.DIFF$state` for details. 397s 397s unitizer> N 397s 397s # This one is also incorrect; reject with 'N' 397s 397s > get_slope(res) 397s [1] 7.01e+11 397s 397s | Value mismatch: 397s 397s < .ref > .new 397s @@ 1 @@ @@ 1 @@ 397s < [1] 101 > [1] 7.01e+11 397s 397s | State mismatch; see `.DIFF$state` for details. 397s 397s unitizer> N 397s 397s = Finalize Unitizer ============================================================ 397s 397s | You made no changes to the unitizer so there is no need to update it. While 397s | unnecessary, you can force an update by typing O at the prompt. 397s 397s | Exit unitizer ([Y]es, [P]rev, [B]rowse, [R]erun, f[O]rce)? 397s 397s unitizer> B 397s 397s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 397s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 397s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:N 397s 4. res . . . . . . . . . . . . . . . . . . . . Failed:N 397s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:N 397s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 397s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 397s 397s | What test do you wish to review (input a test number, [U]nreviewed)? 397s 397s unitizer> U 397s 397s | No unreviewed tests. 397s 397s = Finalize Unitizer ============================================================ 397s 397s | You made no changes to the unitizer so there is no need to update it. While 397s | unnecessary, you can force an update by typing O at the prompt. 397s 397s | Exit unitizer ([Y]es, [P]rev, [B]rowse, [R]erun, f[O]rce)? 397s 397s unitizer> Q 397s 397s | Changes discarded. 397s | unitizer unchanged. 397s 397s > attr(untz7a, "test.file") <- basename(attr(untz7a, "test.file")) 397s > attr(untz7a, "store.id") <- basename(attr(untz7a, "store.id")) 397s > path <- attr(untz7a, "test.file") 397s > path 397s [1] "fastlm1.R" 397s > (path.norm <- unitizer:::normalize_path(path, mustWork=FALSE, exists=TRUE)) 397s [1] "fastlm1.R" 397s > (rel.path <- unitizer:::relativize_path(path.norm, wd=NULL, only.if.shorter=TRUE, exists=TRUE)) 397s [1] "fastlm1.R" 397s > (pkg.dir <- unitizer:::get_package_dir(path.norm, exists=TRUE)) 397s [1] "." 397s > untz7a 397s Test File: fastlm1.R 397s Store ID: fastlm1.unitizer 397s 397s id call ignored status user reviewed 397s 1 1 library(utzflm, lib.loc = g... * Failed N FALSE 397s 2 2 dat <- data.frame(x = 1:100... * Failed N FALSE 397s 3 3 res <- fastlm(dat$x, dat$y) * Failed N TRUE 397s 4 4 res Failed N TRUE 397s 5 5 get_slope(res) Failed N TRUE 397s 6 6 get_rsq(res) Passed Y FALSE 397s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 397s 397s You chose NOT to save these changes to the unitizer store 397s > 397s > # - "review dir" --------------------------------------------------------------- 397s > 397s > # list help, review first item, but do nothing 397s > unitizer:::read_line_set_vals(c("H", "1", "Q", "Q")) 397s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 397s 397s | Summary of files in common directory 'unitizer': 397s | 397s | Pass Fail 397s | *1. fastlm1.R 2 2 397s | 2. fastlm2.R 1 - 397s | *3. unitizer.fastlm.R 1 2 397s | ................................ 397s | 4 4 397s | Legend: 397s | * `unitizer` requires review 397s 397s | Type number of unitizer to review, 'A' to review all that require review 397s 397s unitizer> H 397s 397s | Available options: 397s | - 1:3: unitizer number to review 397s | - A: Review all `unitzers` that require review (*) 397s | - AA: Review all tests 397s | - RR: Re-run all tests 397s | - Q: quit 397s | 397s | Pick a unitizer or an option ([A]ll, [Q]uit, [H]elp)? 397s 397s unitizer> 1 397s +------------------------------------------------------------------------------+ 397s | unitizer for: unitizer/fastlm1.R | 397s +------------------------------------------------------------------------------+ 397s 397s Pass Fail 397s 2 2 397s ...................... 397s 2 2 397s 397s - Failed ----------------------------------------------------------------------- 397s 397s | The 2 tests in this section failed because the new evaluations do not match 397s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 397s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 397s 397s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 397s > dat <- data.frame(x = 1:100, y = (1:100)^2) 397s > res <- fastlm(dat$x, dat$y) 397s 397s # Our fast computations do not produce the same results as our 397s # original tests so they fail. If you need more detail than the 397s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 397s # 397s # You should reject these tests by typing 'N' at the prompt since 397s # they are incorrect. 397s 397s > res 397s intercept slope rsq 397s -3.54e+13 7.01e+11 9.39e-01 397s attr(,"class") 397s [1] "fastlm" 397s 397s | Value mismatch: 397s 397s < .ref > .new 397s @@ 1,4 @@ @@ 1,4 @@ 397s intercept slope rsq intercept slope rsq 397s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 397s attr(,"class") attr(,"class") 397s [1] "fastlm" [1] "fastlm" 397s 397s | State mismatch; see `.DIFF$state` for details. 397s 397s unitizer> Q 397s 397s | No changes recorded. 397s | unitizer unchanged. 397s 397s | Summary of files in common directory 'unitizer': 397s | 397s | Pass Fail 397s | *1. fastlm1.R 2 2 397s | 2. fastlm2.R 1 - 397s | *3. unitizer.fastlm.R 1 2 397s | ................................ 397s | 4 4 397s | Legend: 397s | * `unitizer` requires review 397s 397s | Type number of unitizer to review, 'A' to review all that require review 397s 397s unitizer> Q 397s 397s > # incorrect selection 397s > unitizer:::read_line_set_vals(c("H", "4", "1", "Q", "Q")) 397s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 397s 398s | Summary of files in common directory 'unitizer': 398s | 398s | Pass Fail 398s | *1. fastlm1.R 2 2 398s | 2. fastlm2.R 1 - 398s | *3. unitizer.fastlm.R 1 2 398s | ................................ 398s | 4 4 398s | Legend: 398s | * `unitizer` requires review 398s 398s | Type number of unitizer to review, 'A' to review all that require review 398s 398s unitizer> H 398s 398s | Available options: 398s | - 1:3: unitizer number to review 398s | - A: Review all `unitzers` that require review (*) 398s | - AA: Review all tests 398s | - RR: Re-run all tests 398s | - Q: quit 398s | 398s | Pick a unitizer or an option ([A]ll, [Q]uit, [H]elp)? 398s 398s unitizer> 4 398s | Type a number in `1:3` at the prompt 398s [1] 4 398s unitizer> 1 398s +------------------------------------------------------------------------------+ 398s | unitizer for: unitizer/fastlm1.R | 398s +------------------------------------------------------------------------------+ 398s 398s Pass Fail 398s 2 2 398s ...................... 398s 2 2 398s 398s - Failed ----------------------------------------------------------------------- 398s 398s | The 2 tests in this section failed because the new evaluations do not match 398s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 398s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 398s 398s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 398s > dat <- data.frame(x = 1:100, y = (1:100)^2) 398s > res <- fastlm(dat$x, dat$y) 398s 398s # Our fast computations do not produce the same results as our 398s # original tests so they fail. If you need more detail than the 398s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 398s # 398s # You should reject these tests by typing 'N' at the prompt since 398s # they are incorrect. 398s 398s > res 398s intercept slope rsq 398s -3.54e+13 7.01e+11 9.39e-01 398s attr(,"class") 398s [1] "fastlm" 398s 398s | Value mismatch: 398s 398s < .ref > .new 398s @@ 1,4 @@ @@ 1,4 @@ 398s intercept slope rsq intercept slope rsq 398s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 398s attr(,"class") attr(,"class") 398s [1] "fastlm" [1] "fastlm" 398s 398s | State mismatch; see `.DIFF$state` for details. 398s 398s unitizer> Q 398s 398s | No changes recorded. 398s | unitizer unchanged. 398s 398s | Summary of files in common directory 'unitizer': 398s | 398s | Pass Fail 398s | *1. fastlm1.R 2 2 398s | 2. fastlm2.R 1 - 398s | *3. unitizer.fastlm.R 1 2 398s | ................................ 398s | 4 4 398s | Legend: 398s | * `unitizer` requires review 398s 398s | Type number of unitizer to review, 'A' to review all that require review 398s 398s unitizer> Q 398s 398s > # simulate slow unitizer review 398s > old.opt <- options(unitizer.prompt.b4.quit.time = 0) 398s > unitizer:::read_line_set_vals(c("H", "1", "Q", "Q", "Q", "Y")) 398s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 398s 398s | Summary of files in common directory 'unitizer': 398s | 398s | Pass Fail 398s | *1. fastlm1.R 2 2 398s | 2. fastlm2.R 1 - 398s | *3. unitizer.fastlm.R 1 2 398s | ................................ 398s | 4 4 398s | Legend: 398s | * `unitizer` requires review 398s 398s | Type number of unitizer to review, 'A' to review all that require review 398s 398s unitizer> H 398s 398s | Available options: 398s | - 1:3: unitizer number to review 398s | - A: Review all `unitzers` that require review (*) 398s | - AA: Review all tests 398s | - RR: Re-run all tests 398s | - Q: quit 398s | 398s | Pick a unitizer or an option ([A]ll, [Q]uit, [H]elp)? 398s 398s unitizer> 1 398s +------------------------------------------------------------------------------+ 398s | unitizer for: unitizer/fastlm1.R | 398s +------------------------------------------------------------------------------+ 398s 398s Pass Fail 398s 2 2 398s ...................... 398s 2 2 398s 398s - Failed ----------------------------------------------------------------------- 398s 398s | The 2 tests in this section failed because the new evaluations do not match 398s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 398s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 398s 398s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 398s > dat <- data.frame(x = 1:100, y = (1:100)^2) 398s > res <- fastlm(dat$x, dat$y) 398s 398s # Our fast computations do not produce the same results as our 398s # original tests so they fail. If you need more detail than the 398s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 398s # 398s # You should reject these tests by typing 'N' at the prompt since 398s # they are incorrect. 398s 398s > res 398s intercept slope rsq 398s -3.54e+13 7.01e+11 9.39e-01 398s attr(,"class") 398s [1] "fastlm" 398s 398s | Value mismatch: 398s 398s < .ref > .new 398s @@ 1,4 @@ @@ 1,4 @@ 398s intercept slope rsq intercept slope rsq 398s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 398s attr(,"class") attr(,"class") 398s [1] "fastlm" [1] "fastlm" 398s 398s | State mismatch; see `.DIFF$state` for details. 398s 398s unitizer> Q 398s 398s = Finalize Unitizer ============================================================ 398s 398s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 398s | unreviewed test. 398s 398s | You made no changes to the unitizer so there is no need to update it. While 398s | unnecessary, you can force an update by typing O at the prompt. 398s 398s | Exit unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 398s 398s unitizer> Q 398s 398s | Changes discarded. 398s | unitizer unchanged. 398s 398s | Summary of files in common directory 'unitizer': 398s | 398s | Pass Fail 398s | *1. fastlm1.R 2 2 398s | 2. fastlm2.R 1 - 398s | *3. unitizer.fastlm.R 1 2 398s | ................................ 398s | 4 4 398s | Legend: 398s | * `unitizer` requires review 398s 398s | Type number of unitizer to review, 'A' to review all that require review 398s 398s unitizer> Q 398s 398s | Are you sure you want to quit? 398s 398s unitizer> Y 398s 398s > options(old.opt) 398s > # Failures in non-interactive mode (note, can't run on the actual "fastlm.R" 398s > # file b/c we need to do this under a `try`): 398s > try( 398s + unitize_dir(FLM.TEST.DIR, pattern = "unitize|fastlm2", interactive.mode = FALSE) 398s + ) 398s 398s Warning in check_call_stack() : 398s It appears you are running unitizer inside an error handling function such as 398s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 398s couraged as it may cause unpredictable behavior from unitizer in the event tests 398s produce conditions / errors. We strongly recommend you re-run your tests 398s outside of such handling functions. 398s Warning in history_capt(history, interactive.mode) : 398s Unable to capture history in non-interactive mode. 398s | Summary of files in common directory 'unitizer': 398s | 398s | Pass Fail 398s | 1. fastlm2.R 1 - 398s | *2. unitizer.fastlm.R 1 2 398s | ................................ 398s | 2 2 398s | Legend: 398s | * `unitizer` requires review 398s 398s +------------------------------------------------------------------------------+ 398s | unitizer for: unitizer/unitizer.fastlm.R | 398s +------------------------------------------------------------------------------+ 398s 398s Pass Fail 398s 1 2 398s ...................... 398s 1 2 398s 398s - Failed ----------------------------------------------------------------------- 398s 398s | The 2 tests in this section failed because the new evaluations do not match 398s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 398s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 398s 398s # Extra test file for internal tests; not for DEMO 398s 398s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 398s > x <- 1:10 398s > y <- x^3 398s > res <- fastlm(x, y) 398s > get_slope(res) 398s [1] 717379 398s 399s | Value mismatch: 399s 399s < .ref > .new 399s @@ 1 @@ @@ 1 @@ 399s < [1] 105 > [1] 717379 399s 399s | State mismatch; see `.DIFF$state` for details. 399s 399s > get_intercept(res) 399s [1] -3945281 399s 399s | Value mismatch: 399s 399s < .ref > .new 399s @@ 1 @@ @@ 1 @@ 399s < [1] -277 > [1] -3945281 399s 399s | State mismatch; see `.DIFF$state` for details. 399s 399s | User input required to proceed, but we are in non-interactive mode. 399s 399s | unitizer unchanged. 399s 399s | * Fail: get_slope(res) 399s | * Fail: get_intercept(res) 399s | in 'unitizer/unitizer.fastlm.R' 399s 399s | Newly evaluated tests do not match unitizer (Pass: 2, Fail: 2); see above for 399s | more info, or run in interactive mode. 399s 399s Error in unitize_core(test.files = test.files, store.ids = store.ids, : 399s Cannot proceed in non-interactive mode. 399s > # review all that need review, but don't do anything 399s > unitizer:::read_line_set_vals(c("A", "Q", "Q", "Q")) 399s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 399s 399s | Summary of files in common directory 'unitizer': 399s | 399s | Pass Fail 399s | *1. fastlm1.R 2 2 399s | 2. fastlm2.R 1 - 399s | *3. unitizer.fastlm.R 1 2 399s | ................................ 399s | 4 4 399s | Legend: 399s | * `unitizer` requires review 399s 399s | Type number of unitizer to review, 'A' to review all that require review 399s 399s unitizer> A 399s 399s +------------------------------------------------------------------------------+ 399s | unitizer for: unitizer/fastlm1.R | 399s +------------------------------------------------------------------------------+ 399s 399s Pass Fail 399s 2 2 399s ...................... 399s 2 2 399s 399s - Failed ----------------------------------------------------------------------- 399s 399s | The 2 tests in this section failed because the new evaluations do not match 399s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 399s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 399s 399s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 399s > dat <- data.frame(x = 1:100, y = (1:100)^2) 399s > res <- fastlm(dat$x, dat$y) 399s 399s # Our fast computations do not produce the same results as our 399s # original tests so they fail. If you need more detail than the 399s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 399s # 399s # You should reject these tests by typing 'N' at the prompt since 399s # they are incorrect. 399s 399s > res 399s intercept slope rsq 399s -3.54e+13 7.01e+11 9.39e-01 399s attr(,"class") 399s [1] "fastlm" 399s 399s | Value mismatch: 399s 399s < .ref > .new 399s @@ 1,4 @@ @@ 1,4 @@ 399s intercept slope rsq intercept slope rsq 399s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 399s attr(,"class") attr(,"class") 399s [1] "fastlm" [1] "fastlm" 399s 399s | State mismatch; see `.DIFF$state` for details. 399s 399s unitizer> Q 399s 399s | No changes recorded. 399s | unitizer unchanged. 399s 399s +------------------------------------------------------------------------------+ 399s | unitizer for: unitizer/unitizer.fastlm.R | 399s +------------------------------------------------------------------------------+ 399s 399s Pass Fail 399s 1 2 399s ...................... 399s 1 2 399s 399s - Failed ----------------------------------------------------------------------- 399s 399s | The 2 tests in this section failed because the new evaluations do not match 399s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 399s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 399s 399s # Extra test file for internal tests; not for DEMO 399s 399s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 399s > x <- 1:10 399s > y <- x^3 399s > res <- fastlm(x, y) 399s > get_slope(res) 399s [1] 717379 399s 399s | Value mismatch: 399s 399s < .ref > .new 399s @@ 1 @@ @@ 1 @@ 399s < [1] 105 > [1] 717379 399s 399s | State mismatch; see `.DIFF$state` for details. 399s 399s unitizer> Q 399s 399s | No changes recorded. 399s | unitizer unchanged. 399s 399s | Summary of files in common directory 'unitizer': 399s | 399s | Pass Fail 399s | *1. fastlm1.R 2 2 399s | 2. fastlm2.R 1 - 399s | *3. unitizer.fastlm.R 1 2 399s | ................................ 399s | 4 4 399s | Legend: 399s | * `unitizer` requires review 399s 399s | Type number of unitizer to review, 'A' to review all that require review 399s 399s unitizer> Q 399s 399s > # review all, but don't do anything 399s > unitizer:::read_line_set_vals(c("AA", "Q", "Q", "Q", "Q")) 399s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 399s 399s | Summary of files in common directory 'unitizer': 399s | 399s | Pass Fail 399s | *1. fastlm1.R 2 2 399s | 2. fastlm2.R 1 - 399s | *3. unitizer.fastlm.R 1 2 399s | ................................ 399s | 4 4 399s | Legend: 399s | * `unitizer` requires review 399s 399s | Type number of unitizer to review, 'A' to review all that require review 399s 399s unitizer> AA 399s 399s +------------------------------------------------------------------------------+ 399s | unitizer for: unitizer/fastlm1.R | 399s +------------------------------------------------------------------------------+ 399s 399s Pass Fail 399s 2 2 399s ...................... 399s 2 2 399s 399s - Failed ----------------------------------------------------------------------- 399s 399s | The 2 tests in this section failed because the new evaluations do not match 399s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 399s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 399s 399s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 399s > dat <- data.frame(x = 1:100, y = (1:100)^2) 399s > res <- fastlm(dat$x, dat$y) 399s 399s # Our fast computations do not produce the same results as our 399s # original tests so they fail. If you need more detail than the 399s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 399s # 399s # You should reject these tests by typing 'N' at the prompt since 399s # they are incorrect. 399s 399s > res 399s intercept slope rsq 399s -3.54e+13 7.01e+11 9.39e-01 399s attr(,"class") 399s [1] "fastlm" 399s 399s | Value mismatch: 399s 399s < .ref > .new 399s @@ 1,4 @@ @@ 1,4 @@ 399s intercept slope rsq intercept slope rsq 399s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 399s attr(,"class") attr(,"class") 399s [1] "fastlm" [1] "fastlm" 399s 399s | State mismatch; see `.DIFF$state` for details. 399s 399s unitizer> Q 399s 399s | No changes recorded. 399s | unitizer unchanged. 399s 399s +------------------------------------------------------------------------------+ 399s | unitizer for: unitizer/fastlm2.R | 399s +------------------------------------------------------------------------------+ 399s 399s Pass Fail 399s 1 - 399s ...................... 399s 1 - 399s 399s *1. x <- 1:10 . . . . . . . . . . . . . . . . . . . -:- 399s *2. y <- 1:10^3 . . . . . . . . . . . . . . . . . . -:- 399s *3. res <- summary(lm(y ~ x, data.frame(x = x, y = y))) . . . . . -:- 399s *4. intercept <- res$coefficients[1, 1] . . . . . . . . . . -:- 399s *5. slope <- res$coefficients[2, 1] . . . . . . . . . . . -:- 399s *6. rsq <- res$r.squared . . . . . . . . . . . . . . . -:- 399s 7. structure(c(intercept = intercept, slope = slope, rsq = rsq),... Passed:- 399s 399s | What test do you wish to review (input a test number, [U]nreviewed)? 399s 399s unitizer> Q 399s 399s | No changes recorded. 399s | unitizer unchanged. 399s 399s +------------------------------------------------------------------------------+ 399s | unitizer for: unitizer/unitizer.fastlm.R | 399s +------------------------------------------------------------------------------+ 399s 399s Pass Fail 399s 1 2 399s ...................... 399s 1 2 399s 399s - Failed ----------------------------------------------------------------------- 399s 399s | The 2 tests in this section failed because the new evaluations do not match 399s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 399s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 399s 399s # Extra test file for internal tests; not for DEMO 399s 399s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 399s > x <- 1:10 399s > y <- x^3 399s > res <- fastlm(x, y) 399s > get_slope(res) 399s [1] 717379 399s 400s | Value mismatch: 400s 400s < .ref > .new 400s @@ 1 @@ @@ 1 @@ 400s < [1] 105 > [1] 717379 400s 400s | State mismatch; see `.DIFF$state` for details. 400s 400s unitizer> Q 400s 400s | No changes recorded. 400s | unitizer unchanged. 400s 400s | Summary of files in common directory 'unitizer': 400s | 400s | Pass Fail 400s | *1. fastlm1.R 2 2 400s | 2. fastlm2.R 1 - 400s | *3. unitizer.fastlm.R 1 2 400s | ................................ 400s | 4 4 400s | Legend: 400s | * `unitizer` requires review 400s 400s | Type number of unitizer to review, 'A' to review all that require review 400s 400s unitizer> Q 400s 400s > # review one, and Re-eval despite no change 400s > unitizer:::read_line_set_vals(c("1", "R", "Y", "Q", "Q")) 400s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 400s 400s | Summary of files in common directory 'unitizer': 400s | 400s | Pass Fail 400s | *1. fastlm1.R 2 2 400s | 2. fastlm2.R 1 - 400s | *3. unitizer.fastlm.R 1 2 400s | ................................ 400s | 4 4 400s | Legend: 400s | * `unitizer` requires review 400s 400s | Type number of unitizer to review, 'A' to review all that require review 400s 400s unitizer> 1 400s +------------------------------------------------------------------------------+ 400s | unitizer for: unitizer/fastlm1.R | 400s +------------------------------------------------------------------------------+ 400s 400s Pass Fail 400s 2 2 400s ...................... 400s 2 2 400s 400s - Failed ----------------------------------------------------------------------- 400s 400s | The 2 tests in this section failed because the new evaluations do not match 400s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 400s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 400s 400s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 400s > dat <- data.frame(x = 1:100, y = (1:100)^2) 400s > res <- fastlm(dat$x, dat$y) 400s 400s # Our fast computations do not produce the same results as our 400s # original tests so they fail. If you need more detail than the 400s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 400s # 400s # You should reject these tests by typing 'N' at the prompt since 400s # they are incorrect. 400s 400s > res 400s intercept slope rsq 400s -3.54e+13 7.01e+11 9.39e-01 400s attr(,"class") 400s [1] "fastlm" 400s 400s | Value mismatch: 400s 400s < .ref > .new 400s @@ 1,4 @@ @@ 1,4 @@ 400s intercept slope rsq intercept slope rsq 400s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 400s attr(,"class") attr(,"class") 400s [1] "fastlm" [1] "fastlm" 400s 400s | State mismatch; see `.DIFF$state` for details. 400s 400s unitizer> R 400s 400s | Toggling re-run mode ON for this unitizer 400s 400s = Finalize Unitizer ============================================================ 400s 400s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 400s | unreviewed test. 400s 400s | You made no changes to the unitizer so there is no need to update it. While 400s | unnecessary, you can force an update by typing O at the prompt. 400s 400s | Re-run unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 400s 400s unitizer> Y 400s 400s | unitizer unchanged. 400s 400s +------------------------------------------------------------------------------+ 400s | unitizer for: unitizer/fastlm1.R | 400s +------------------------------------------------------------------------------+ 400s 400s Pass Fail 400s 2 2 400s ...................... 400s 2 2 400s 400s - Failed ----------------------------------------------------------------------- 400s 400s | The 2 tests in this section failed because the new evaluations do not match 400s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 400s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 400s 400s | Jumping to test #4 because that was the test under review when test re-run was 400s | requested. 400s 400s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 400s > dat <- data.frame(x = 1:100, y = (1:100)^2) 400s > res <- fastlm(dat$x, dat$y) 400s 400s # Our fast computations do not produce the same results as our 400s # original tests so they fail. If you need more detail than the 400s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 400s # 400s # You should reject these tests by typing 'N' at the prompt since 400s # they are incorrect. 400s 400s > res 400s intercept slope rsq 400s -3.54e+13 7.01e+11 9.39e-01 400s attr(,"class") 400s [1] "fastlm" 400s 400s | Value mismatch: 400s 400s < .ref > .new 400s @@ 1,4 @@ @@ 1,4 @@ 400s intercept slope rsq intercept slope rsq 400s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 400s attr(,"class") attr(,"class") 400s [1] "fastlm" [1] "fastlm" 400s 400s | State mismatch; see `.DIFF$state` for details. 400s 400s unitizer> Q 400s 400s | No changes recorded. 400s | unitizer unchanged. 400s 400s | Summary of files in common directory 'unitizer': 400s | 400s | Pass Fail 400s | *1. fastlm1.R 2 2 400s | 2. fastlm2.R 1 - 400s | *3. unitizer.fastlm.R 1 2 400s | ................................ 400s | 4 4 400s | Legend: 400s | * `unitizer` requires review 400s 400s | Type number of unitizer to review, 'A' to review all that require review 400s 400s unitizer> Q 400s 400s > unitizer:::read_line_set_vals(c("1", "RR", "Y", "Q", "Q")) 400s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 400s 401s | Summary of files in common directory 'unitizer': 401s | 401s | Pass Fail 401s | *1. fastlm1.R 2 2 401s | 2. fastlm2.R 1 - 401s | *3. unitizer.fastlm.R 1 2 401s | ................................ 401s | 4 4 401s | Legend: 401s | * `unitizer` requires review 401s 401s | Type number of unitizer to review, 'A' to review all that require review 401s 401s unitizer> 1 401s +------------------------------------------------------------------------------+ 401s | unitizer for: unitizer/fastlm1.R | 401s +------------------------------------------------------------------------------+ 401s 401s Pass Fail 401s 2 2 401s ...................... 401s 2 2 401s 401s - Failed ----------------------------------------------------------------------- 401s 401s | The 2 tests in this section failed because the new evaluations do not match 401s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 401s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 401s 401s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 401s > dat <- data.frame(x = 1:100, y = (1:100)^2) 401s > res <- fastlm(dat$x, dat$y) 401s 401s # Our fast computations do not produce the same results as our 401s # original tests so they fail. If you need more detail than the 401s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 401s # 401s # You should reject these tests by typing 'N' at the prompt since 401s # they are incorrect. 401s 401s > res 401s intercept slope rsq 401s -3.54e+13 7.01e+11 9.39e-01 401s attr(,"class") 401s [1] "fastlm" 401s 401s | Value mismatch: 401s 401s < .ref > .new 401s @@ 1,4 @@ @@ 1,4 @@ 401s intercept slope rsq intercept slope rsq 401s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 401s attr(,"class") attr(,"class") 401s [1] "fastlm" [1] "fastlm" 401s 401s | State mismatch; see `.DIFF$state` for details. 401s 401s unitizer> RR 401s 401s | Toggling re-run mode ON for all loaded unitizers 401s 401s = Finalize Unitizer ============================================================ 401s 401s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 401s | unreviewed test. 401s 401s | You made no changes to the unitizer so there is no need to update it. While 401s | unnecessary, you can force an update by typing O at the prompt. 401s 401s | Re-run all loaded unitizers ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, 401s | f[O]rce)? 401s 401s unitizer> Y 401s 401s | unitizer unchanged. 401s 401s | Summary of files in common directory 'unitizer': 401s | 401s | Pass Fail 401s | *1. fastlm1.R 2 2 401s | 2. fastlm2.R 1 - 401s | *3. unitizer.fastlm.R 1 2 401s | ................................ 401s | 4 4 401s | Legend: 401s | * `unitizer` requires review 401s 401s | Type number of unitizer to review, 'A' to review all that require review 401s 401s unitizer> Q 401s 401s > # Test force eval 401s > # first run, force update and accept 401s > # second run, R from dir summary doesn't set bookmarks 401s > unitizer:::read_line_set_vals(c("1", "O", "Q", "Y", "R", "1", 401s + "Q", "Q")) 401s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 401s 402s | Summary of files in common directory 'unitizer': 402s | 402s | Pass Fail 402s | *1. fastlm1.R 2 2 402s | 2. fastlm2.R 1 - 402s | *3. unitizer.fastlm.R 1 2 402s | ................................ 402s | 4 4 402s | Legend: 402s | * `unitizer` requires review 402s 402s | Type number of unitizer to review, 'A' to review all that require review 402s 402s unitizer> 1 402s +------------------------------------------------------------------------------+ 402s | unitizer for: unitizer/fastlm1.R | 402s +------------------------------------------------------------------------------+ 402s 402s Pass Fail 402s 2 2 402s ...................... 402s 2 2 402s 402s - Failed ----------------------------------------------------------------------- 402s 402s | The 2 tests in this section failed because the new evaluations do not match 402s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 402s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 402s 402s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 402s > dat <- data.frame(x = 1:100, y = (1:100)^2) 402s > res <- fastlm(dat$x, dat$y) 402s 402s # Our fast computations do not produce the same results as our 402s # original tests so they fail. If you need more detail than the 402s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 402s # 402s # You should reject these tests by typing 'N' at the prompt since 402s # they are incorrect. 402s 402s > res 402s intercept slope rsq 402s -3.54e+13 7.01e+11 9.39e-01 402s attr(,"class") 402s [1] "fastlm" 402s 402s | Value mismatch: 402s 402s < .ref > .new 402s @@ 1,4 @@ @@ 1,4 @@ 402s intercept slope rsq intercept slope rsq 402s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 402s attr(,"class") attr(,"class") 402s [1] "fastlm" [1] "fastlm" 402s 402s | State mismatch; see `.DIFF$state` for details. 402s 402s unitizer> O 402s 402s | Toggling force update mode ON 402s 402s unitizer> Q 402s 402s = Finalize Unitizer ============================================================ 402s 402s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 402s | unreviewed test. 402s 402s | Running in `force.update` mode so `unitizer` will be re-saved even though 402s | there are no changes to record (see `?unitize` for details). 402s 402s | You are about to update 'unitizer/fastlm1.unitizer' with re-evaluated but 402s | otherwise unchanged tests. 402s 402s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U]nreviewed, [R]erun, 402s | f[O]rce)? 402s 402s unitizer> Y 402s 402s | unitizer updated. 402s 402s | Summary of files in common directory 'unitizer': 402s | 402s | Pass Fail 402s | $1. fastlm1.R ? ? 402s | 2. fastlm2.R 1 - 402s | *3. unitizer.fastlm.R 1 2 402s | ................................ 402s | ? ? 402s | Legend: 402s | * `unitizer` requires review 402s | $ `unitizer` has been modified and needs to be re-run to recompute summary 402s 402s | Type number of unitizer to review, 'A' to review all that require review, 'R' 402s | to re-run all updated 402s 402s unitizer> R 402s 402s | Summary of files in common directory 'unitizer': 402s | 402s | Pass Fail 402s | *1. fastlm1.R 2 2 402s | 2. fastlm2.R 1 - 402s | *3. unitizer.fastlm.R 1 2 402s | ................................ 402s | 4 4 402s | Legend: 402s | * `unitizer` requires review 402s 402s | Type number of unitizer to review, 'A' to review all that require review 402s 402s unitizer> 1 402s +------------------------------------------------------------------------------+ 402s | unitizer for: unitizer/fastlm1.R | 402s +------------------------------------------------------------------------------+ 402s 402s Pass Fail 402s 2 2 402s ...................... 402s 2 2 402s 402s - Failed ----------------------------------------------------------------------- 402s 402s | The 2 tests in this section failed because the new evaluations do not match 402s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 402s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 402s 402s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 402s > dat <- data.frame(x = 1:100, y = (1:100)^2) 402s > res <- fastlm(dat$x, dat$y) 402s 402s # Our fast computations do not produce the same results as our 402s # original tests so they fail. If you need more detail than the 402s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 402s # 402s # You should reject these tests by typing 'N' at the prompt since 402s # they are incorrect. 402s 402s > res 402s intercept slope rsq 402s -3.54e+13 7.01e+11 9.39e-01 402s attr(,"class") 402s [1] "fastlm" 402s 402s | Value mismatch: 402s 402s < .ref > .new 402s @@ 1,4 @@ @@ 1,4 @@ 402s intercept slope rsq intercept slope rsq 402s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 402s attr(,"class") attr(,"class") 402s [1] "fastlm" [1] "fastlm" 402s 402s | State mismatch; see `.DIFF$state` for details. 402s 402s unitizer> Q 402s 402s | No changes recorded. 402s | unitizer unchanged. 402s 402s | Summary of files in common directory 'unitizer': 402s | 402s | Pass Fail 402s | *1. fastlm1.R 2 2 402s | 2. fastlm2.R 1 - 402s | *3. unitizer.fastlm.R 1 2 402s | ................................ 402s | 4 4 402s | Legend: 402s | * `unitizer` requires review 402s 402s | Type number of unitizer to review, 'A' to review all that require review 402s 402s unitizer> Q 402s 402s > # Variations on YY, YYY, and YYY 402s > unitizer:::read_line_set_vals(c("1", "YY", "Y", "Q", "Q")) 402s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 402s 402s | Summary of files in common directory 'unitizer': 402s | 402s | Pass Fail 402s | *1. fastlm1.R 2 2 402s | 2. fastlm2.R 1 - 402s | *3. unitizer.fastlm.R 1 2 402s | ................................ 402s | 4 4 402s | Legend: 402s | * `unitizer` requires review 402s 402s | Type number of unitizer to review, 'A' to review all that require review 402s 402s unitizer> 1 402s +------------------------------------------------------------------------------+ 402s | unitizer for: unitizer/fastlm1.R | 402s +------------------------------------------------------------------------------+ 402s 402s Pass Fail 402s 2 2 402s ...................... 402s 2 2 402s 402s - Failed ----------------------------------------------------------------------- 402s 402s | The 2 tests in this section failed because the new evaluations do not match 402s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 402s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 402s 402s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 402s > dat <- data.frame(x = 1:100, y = (1:100)^2) 402s > res <- fastlm(dat$x, dat$y) 402s 402s # Our fast computations do not produce the same results as our 402s # original tests so they fail. If you need more detail than the 402s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 402s # 402s # You should reject these tests by typing 'N' at the prompt since 402s # they are incorrect. 402s 402s > res 402s intercept slope rsq 402s -3.54e+13 7.01e+11 9.39e-01 402s attr(,"class") 402s [1] "fastlm" 402s 402s | Value mismatch: 402s 402s < .ref > .new 402s @@ 1,4 @@ @@ 1,4 @@ 402s intercept slope rsq intercept slope rsq 402s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 402s attr(,"class") attr(,"class") 402s [1] "fastlm" [1] "fastlm" 402s 402s | State mismatch; see `.DIFF$state` for details. 402s 402s unitizer> YY 402s 403s 4. res . . . . . Failed:- 403s 5. get_slope(res) . Failed:- 403s 403s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 403s unitizer> Y 403s 403s = Finalize Unitizer ============================================================ 403s 403s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 403s | - Replacing 2 out of 2 failed tests 403s 403s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 403s 403s unitizer> Q 403s 403s | Changes discarded. 403s | unitizer unchanged. 403s 403s | Summary of files in common directory 'unitizer': 403s | 403s | Pass Fail 403s | *1. fastlm1.R 2 2 403s | 2. fastlm2.R 1 - 403s | *3. unitizer.fastlm.R 1 2 403s | ................................ 403s | 4 4 403s | Legend: 403s | * `unitizer` requires review 403s 403s | Type number of unitizer to review, 'A' to review all that require review 403s 403s unitizer> Q 403s 403s > unitizer:::read_line_set_vals(c("1", "YYY", "Y", "Q", "Q")) 403s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 403s 403s | Summary of files in common directory 'unitizer': 403s | 403s | Pass Fail 403s | *1. fastlm1.R 2 2 403s | 2. fastlm2.R 1 - 403s | *3. unitizer.fastlm.R 1 2 403s | ................................ 403s | 4 4 403s | Legend: 403s | * `unitizer` requires review 403s 403s | Type number of unitizer to review, 'A' to review all that require review 403s 403s unitizer> 1 403s +------------------------------------------------------------------------------+ 403s | unitizer for: unitizer/fastlm1.R | 403s +------------------------------------------------------------------------------+ 403s 403s Pass Fail 403s 2 2 403s ...................... 403s 2 2 403s 403s - Failed ----------------------------------------------------------------------- 403s 403s | The 2 tests in this section failed because the new evaluations do not match 403s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 403s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 403s 403s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 403s > dat <- data.frame(x = 1:100, y = (1:100)^2) 403s > res <- fastlm(dat$x, dat$y) 403s 403s # Our fast computations do not produce the same results as our 403s # original tests so they fail. If you need more detail than the 403s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 403s # 403s # You should reject these tests by typing 'N' at the prompt since 403s # they are incorrect. 403s 403s > res 403s intercept slope rsq 403s -3.54e+13 7.01e+11 9.39e-01 403s attr(,"class") 403s [1] "fastlm" 403s 403s | Value mismatch: 403s 403s < .ref > .new 403s @@ 1,4 @@ @@ 1,4 @@ 403s intercept slope rsq intercept slope rsq 403s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 403s attr(,"class") attr(,"class") 403s [1] "fastlm" [1] "fastlm" 403s 403s | State mismatch; see `.DIFF$state` for details. 403s 403s unitizer> YYY 403s 403s 4. res . . . . . Failed:- 403s 5. get_slope(res) . Failed:- 403s 403s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 403s unitizer> Y 403s 403s = Finalize Unitizer ============================================================ 403s 403s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 403s | - Replacing 2 out of 2 failed tests 403s 403s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 403s 403s unitizer> Q 403s 403s | Changes discarded. 403s | unitizer unchanged. 403s 403s | Summary of files in common directory 'unitizer': 403s | 403s | Pass Fail 403s | *1. fastlm1.R 2 2 403s | 2. fastlm2.R 1 - 403s | *3. unitizer.fastlm.R 1 2 403s | ................................ 403s | 4 4 403s | Legend: 403s | * `unitizer` requires review 403s 403s | Type number of unitizer to review, 'A' to review all that require review 403s 403s unitizer> Q 403s 403s > unitizer:::read_line_set_vals(c("1", "YYYY", "Y", "Q", "Q")) 403s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 403s 403s | Summary of files in common directory 'unitizer': 403s | 403s | Pass Fail 403s | *1. fastlm1.R 2 2 403s | 2. fastlm2.R 1 - 403s | *3. unitizer.fastlm.R 1 2 403s | ................................ 403s | 4 4 403s | Legend: 403s | * `unitizer` requires review 403s 403s | Type number of unitizer to review, 'A' to review all that require review 403s 403s unitizer> 1 403s +------------------------------------------------------------------------------+ 403s | unitizer for: unitizer/fastlm1.R | 403s +------------------------------------------------------------------------------+ 403s 403s Pass Fail 403s 2 2 403s ...................... 403s 2 2 403s 403s - Failed ----------------------------------------------------------------------- 403s 403s | The 2 tests in this section failed because the new evaluations do not match 403s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 403s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 403s 403s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 403s > dat <- data.frame(x = 1:100, y = (1:100)^2) 403s > res <- fastlm(dat$x, dat$y) 403s 403s # Our fast computations do not produce the same results as our 403s # original tests so they fail. If you need more detail than the 403s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 403s # 403s # You should reject these tests by typing 'N' at the prompt since 403s # they are incorrect. 403s 403s > res 403s intercept slope rsq 403s -3.54e+13 7.01e+11 9.39e-01 403s attr(,"class") 403s [1] "fastlm" 403s 403s | Value mismatch: 403s 403s < .ref > .new 403s @@ 1,4 @@ @@ 1,4 @@ 403s intercept slope rsq intercept slope rsq 403s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 403s attr(,"class") attr(,"class") 403s [1] "fastlm" [1] "fastlm" 403s 403s | State mismatch; see `.DIFF$state` for details. 403s 403s unitizer> YYYY 403s 403s 4. res . . . . . Failed:- 403s 5. get_slope(res) . Failed:- 403s 403s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 403s unitizer> Y 403s 403s = Finalize Unitizer ============================================================ 403s 403s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 403s | - Replacing 2 out of 2 failed tests 403s 403s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 403s 403s unitizer> Q 403s 403s | Changes discarded. 403s | unitizer unchanged. 403s 403s | Summary of files in common directory 'unitizer': 403s | 403s | Pass Fail 403s | *1. fastlm1.R 2 2 403s | 2. fastlm2.R 1 - 403s | *3. unitizer.fastlm.R 1 2 403s | ................................ 403s | 4 4 403s | Legend: 403s | * `unitizer` requires review 403s 403s | Type number of unitizer to review, 'A' to review all that require review 403s 403s unitizer> Q 403s 403s > # review all, accepting all changes, and reevaluting everything; note that this 403s > # means we're accepting tests that are not correct 403s > unitizer:::read_line_set_vals(c("A", "Y", "Y", "Y", "Y", "Y", "Y", "RR")) 403s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 403s 404s | Summary of files in common directory 'unitizer': 404s | 404s | Pass Fail 404s | *1. fastlm1.R 2 2 404s | 2. fastlm2.R 1 - 404s | *3. unitizer.fastlm.R 1 2 404s | ................................ 404s | 4 4 404s | Legend: 404s | * `unitizer` requires review 404s 404s | Type number of unitizer to review, 'A' to review all that require review 404s 404s unitizer> A 404s 404s +------------------------------------------------------------------------------+ 404s | unitizer for: unitizer/fastlm1.R | 404s +------------------------------------------------------------------------------+ 404s 404s Pass Fail 404s 2 2 404s ...................... 404s 2 2 404s 404s - Failed ----------------------------------------------------------------------- 404s 404s | The 2 tests in this section failed because the new evaluations do not match 404s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 404s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 404s 404s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 404s > dat <- data.frame(x = 1:100, y = (1:100)^2) 404s > res <- fastlm(dat$x, dat$y) 404s 404s # Our fast computations do not produce the same results as our 404s # original tests so they fail. If you need more detail than the 404s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 404s # 404s # You should reject these tests by typing 'N' at the prompt since 404s # they are incorrect. 404s 404s > res 404s intercept slope rsq 404s -3.54e+13 7.01e+11 9.39e-01 404s attr(,"class") 404s [1] "fastlm" 404s 404s | Value mismatch: 404s 404s < .ref > .new 404s @@ 1,4 @@ @@ 1,4 @@ 404s intercept slope rsq intercept slope rsq 404s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 404s attr(,"class") attr(,"class") 404s [1] "fastlm" [1] "fastlm" 404s 404s | State mismatch; see `.DIFF$state` for details. 404s 404s unitizer> Y 404s 404s # This one is also incorrect; reject with 'N' 404s 404s > get_slope(res) 404s [1] 7.01e+11 404s 404s | Value mismatch: 404s 404s < .ref > .new 404s @@ 1 @@ @@ 1 @@ 404s < [1] 101 > [1] 7.01e+11 404s 404s | State mismatch; see `.DIFF$state` for details. 404s 404s unitizer> Y 404s 404s = Finalize Unitizer ============================================================ 404s 404s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 404s | - Replacing 2 out of 2 failed tests 404s 404s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [QQ]uit All)? 404s 404s unitizer> Y 404s 404s | unitizer updated. 404s 404s +------------------------------------------------------------------------------+ 404s | unitizer for: unitizer/unitizer.fastlm.R | 404s +------------------------------------------------------------------------------+ 404s 404s Pass Fail 404s 1 2 404s ...................... 404s 1 2 404s 404s - Failed ----------------------------------------------------------------------- 404s 404s | The 2 tests in this section failed because the new evaluations do not match 404s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 404s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 404s 404s # Extra test file for internal tests; not for DEMO 404s 404s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 404s > x <- 1:10 404s > y <- x^3 404s > res <- fastlm(x, y) 404s > get_slope(res) 404s [1] 717379 404s 404s | Value mismatch: 404s 404s < .ref > .new 404s @@ 1 @@ @@ 1 @@ 404s < [1] 105 > [1] 717379 404s 404s | State mismatch; see `.DIFF$state` for details. 404s 404s unitizer> Y 404s 404s > get_intercept(res) 404s [1] -3945281 404s 404s | Value mismatch: 404s 404s < .ref > .new 404s @@ 1 @@ @@ 1 @@ 404s < [1] -277 > [1] -3945281 404s 404s | State mismatch; see `.DIFF$state` for details. 404s 404s unitizer> Y 404s 404s = Finalize Unitizer ============================================================ 404s 404s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 404s | - Replacing 2 out of 2 failed tests 404s 404s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [QQ]uit All)? 404s 404s unitizer> Y 404s 404s | unitizer updated. 404s 404s | Summary of files in common directory 'unitizer': 404s | 404s | Pass Fail 404s | $1. fastlm1.R ? ? 404s | 2. fastlm2.R 1 - 404s | $3. unitizer.fastlm.R ? ? 404s | ................................ 404s | ? ? 404s | Legend: 404s | $ `unitizer` has been modified and needs to be re-run to recompute summary 404s 404s | Type number of unitizer to review, 'A' to review all that require review, 'R' 404s | to re-run all updated 404s 404s unitizer> RR 404s 404s | Summary of files in common directory 'unitizer': 404s | 404s | Pass Fail 404s | 1. fastlm1.R 4 - 404s | 2. fastlm2.R 1 - 404s | 3. unitizer.fastlm.R 3 - 404s | ................................ 404s | 8 - 404s 404s | 8/8 tests passed; nothing to review. 404s 404s > 404s > # - "multi-sect" --------------------------------------------------------------- 404s > 404s > # Upgrade again, and try with deleted tests and other things 404s > update_fastlm(FLM, version = "0.1.2") 404s > inst_pak(FLM) 405s > unitizer:::read_line_set_vals(c("3", "ref(res)", "Y", "Y", "B", 405s + "1", "B", "U", "Y", "RR", "Y", "Q")) 405s > txt20 <- unitizer:::capture_output(unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)) 406s > txt20$output <- gsub("^<\\w+: .*?>", "", txt20$output) 406s > txt20 406s - Output ----------------------------------------------------------------------- 406s 406s 406s | Summary of files in common directory 'unitizer': 406s | 406s | Pass Fail New Del 406s | *1. fastlm1.R 2 2 - - 406s | 2. fastlm2.R 1 - - - 406s | *3. unitizer.fastlm.R 1 1 1 1 406s | .......................................... 406s | 4 3 1 1 406s | Legend: 406s | * `unitizer` requires review 406s 406s | Type number of unitizer to review, 'A' to review all that require review 406s 406s unitizer> 3 406s +------------------------------------------------------------------------------+ 406s | unitizer for: unitizer/unitizer.fastlm.R | 406s +------------------------------------------------------------------------------+ 406s 406s Pass Fail New Del 406s - - - 1 406s Basic Tests - 1 - - 406s Advanced Tests 1 - 1 - 406s .................................... 406s 1 1 1 1 406s 406s = =================================================================== 406s 406s - Removed ---------------------------------------------------------------------- 406s 406s | The following test exists in the unitizer store but not in the new test 406s | script. Remove test from store ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, 406s | [Q]uit, [H]elp)? 406s 406s > get_intercept(res) 406s [1] -3945281 406s 406s unitizer> ref(res) 406s unitizer> Y 406s 406s = Basic Tests ================================================================== 406s 406s - Failed ----------------------------------------------------------------------- 406s 406s | The following test failed because the new evaluation does not match the 406s | reference value from the store. Overwrite with new result ([Y]es, [N]o, 406s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 406s 406s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 406s > x <- 1:10 406s > y <- x^3 406s > res <- fastlm(x, y) 406s > get_slope(res) 406s [1] 105 406s 406s | Value mismatch: 406s 406s < .ref > .new 406s @@ 1 @@ @@ 1 @@ 406s < [1] 717379 > [1] 105 406s 406s | State mismatch; see `.DIFF$state` for details. 406s 406s unitizer> Y 406s 406s = Advanced Tests =============================================================== 406s 406s - New -------------------------------------------------------------------------- 406s 406s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 406s | [R]erun, [Q]uit, [H]elp)? 406s 406s > 2 * get_slope(res) + get_intercept(res) 406s [1] -66.4 406s 406s unitizer> B 406s 406s = =================================================================== 406s 8. get_intercept(res) . . . . . . . . . . . . . . . Removed:Y 406s = Basic Tests ================================================================== 406s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 406s *2. x <- 1:10 . . . . . . . . . . . . . . . . . . -:- 406s *3. y <- x^3 . . . . . . . . . . . . . . . . . . -:- 406s *4. res <- fastlm(x, y) . . . . . . . . . . . . . . -:- 406s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:Y 406s = Advanced Tests =============================================================== 406s 6. 2 * get_slope(res) + get_intercept(res) . . . . . . . . New:- 406s 7. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 406s 406s | What test do you wish to review (input a test number, [U]nreviewed)? 406s 406s unitizer> 1 406s 406s = Basic Tests ================================================================== 406s 406s - Failed ----------------------------------------------------------------------- 406s 406s | The following test failed because the new evaluation does not match the 406s | reference value from the store. Overwrite with new result ([Y]es, [N]o, 406s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 406s 406s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 406s unitizer> B 406s 406s = =================================================================== 406s 8. get_intercept(res) . . . . . . . . . . . . . . . Removed:Y 406s = Basic Tests ================================================================== 406s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 406s *2. x <- 1:10 . . . . . . . . . . . . . . . . . . -:- 406s *3. y <- x^3 . . . . . . . . . . . . . . . . . . -:- 406s *4. res <- fastlm(x, y) . . . . . . . . . . . . . . -:- 406s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:Y 406s = Advanced Tests =============================================================== 406s 6. 2 * get_slope(res) + get_intercept(res) . . . . . . . . New:- 406s 7. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 406s 406s | What test do you wish to review (input a test number, [U]nreviewed)? 406s 406s unitizer> U 406s 406s = Advanced Tests =============================================================== 406s 406s - New -------------------------------------------------------------------------- 406s 406s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 406s | [R]erun, [Q]uit, [H]elp)? 406s 406s > 2 * get_slope(res) + get_intercept(res) 406s [1] -66.4 406s 406s unitizer> Y 406s 406s = Finalize Unitizer ============================================================ 406s 406s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 406s 406s unitizer> RR 406s 406s | Update unitizer and re-run all loaded unitizers ([Y]es, [N]o, [P]rev, [B] 406s | rowse, [R]erun)? 406s 406s unitizer> Y 406s 406s | Summary of files in common directory 'unitizer': 406s | 406s | Pass Fail 406s | *1. fastlm1.R 2 2 406s | 2. fastlm2.R 1 - 406s | 3. unitizer.fastlm.R 3 - 406s | ................................ 406s | 6 2 406s | Legend: 406s | * `unitizer` requires review 406s 406s | Type number of unitizer to review, 'A' to review all that require review 406s 406s unitizer> Q 406s 406s - Message ---------------------------------------------------------------------- 406s 406s `ref` is only active when there is an active secondary environment 406s | You selected a test that is not normally reviewed in this mode; 406s | as such, upon test completion, you will be brought back to this menu 406s | instead of being taken to the next reviewable test. 406s 406s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 406s | - Replacing 1 out of 1 failed tests 406s | - Adding 1 out of 1 new tests 406s | - Removing 1 out of 1 removed tests 406s 406s | Toggling re-run mode ON for all loaded unitizers 406s 406s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 406s | - Replacing 1 out of 1 failed tests 406s | - Adding 1 out of 1 new tests 406s | - Removing 1 out of 1 removed tests 406s 406s | unitizer updated. 406s 406s > 406s > # - "Load Fail" ---------------------------------------------------------------- 406s > 406s > # Purposefully mess up one of the unitizers to see if the load fail stuff works 406s > saveRDS(list(1, 2, 3), file.path(FLM.TEST.DIR, "fastlm1.unitizer", 406s + "data.rds")) 406s > try(unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)) 406s 406s Warning in check_call_stack() : 406s It appears you are running unitizer inside an error handling function such as 406s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 406s couraged as it may cause unpredictable behavior from unitizer in the event tests 406s produce conditions / errors. We strongly recommend you re-run your tests 406s outside of such handling functions. 406s | 406s | The following unitizer could not be loaded: 406s | - unitizer/fastlm1.unitizer: `get_unitizer` error: Retrieved object is not a 406s | unitizer store 406s 406s Error in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 406s Cannot proceed with invalid or out of date unitizers. You must either fix or remove them. 406s > unitizer:::read_line_set_vals(NULL) 406s > 406s PASS 406s Begin testing t-utz2.R 406s 406s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 406s Copyright (C) 2024 The R Foundation for Statistical Computing 406s Platform: s390x-ibm-linux-gnu (64-bit) 406s 406s R is free software and comes with ABSOLUTELY NO WARRANTY. 406s You are welcome to redistribute it under certain conditions. 406s Type 'license()' or 'licence()' for distribution details. 406s 406s R is a collaborative project with many contributors. 406s Type 'contributors()' for more information and 406s 'citation()' on how to cite R or R packages in publications. 406s 406s Type 'demo()' for some demos, 'help()' for on-line help, or 406s 'help.start()' for an HTML browser interface to help. 406s Type 'q()' to quit R. 406s 406s > # Overflow tests from testthat.unitize.R 406s > 406s > source(file.path("_helper", "init.R")) 407s > source(file.path("_helper", "pkgs.R")) 407s Install Packages 410s Setup Demos 410s > 410s > library(unitizer) 410s > 410s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 410s > # - "unreviewed variations" ---------------------------------------------------- 410s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 410s > 410s > # Test unreviewed 410s > # Accept one and go to unreviewed 410s > # Accept one more and browse and go to unreviewed 410s > # Accept two remaining and confirm no unreviewed 410s > # No unreviewed tests 410s > unitizer:::read_line_set_vals( 410s + c("Y", "Q", "U", "Y", "B", "U", "Y", "Y", "U", "B", "U", "Q") 410s + ) 410s > out <- unitizer:::capture_output(unitize(FLM.TEST.FILE, interactive.mode = TRUE)) 411s > unitizer:::clean_eval_exp(out) 411s - Output ----------------------------------------------------------------------- 411s 411s 411s +------------------------------------------------------------------------------+ 411s | unitizer for: unitizer/fastlm1.R | 411s +------------------------------------------------------------------------------+ 411s 411s Pass Fail New 411s - - 4 411s ........................... 411s - - 4 411s 411s - New -------------------------------------------------------------------------- 411s 411s | The 4 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 411s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 411s 411s # Assignments and calls to `library` are not considered tests by 411s # `unitizer` so you will not need to review them 411s 411s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 411s > dat <- data.frame(x = 1:100, y = (1:100)^2) 411s > res <- fastlm(dat$x, dat$y) 411s 411s # The `unitizer>` prompt is like the standard R prompt. You may 411s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 411s # `str(res)`. 411s # 411s # Once you are done reviewing, you need to tell `unitizer` you 411s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 411s 411s > res 411s intercept slope rsq 411s -1717.000 101.000 0.939 411s attr(,"class") 411s [1] "fastlm" 411s 411s unitizer> Y 411s 411s # There are three more tests to review; accept them with 'Y' 411s 411s > get_slope(res) 411s [1] 101 411s 411s unitizer> Q 411s 411s = Finalize Unitizer ============================================================ 411s 411s | You have 3 unreviewed tests; press `B` to browse tests, `U` to go to first 411s | unreviewed test. 411s 411s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U]nreviewed, [R]erun)? 411s 411s unitizer> U 411s 411s # There are three more tests to review; accept them with 'Y' 411s 411s > get_slope(res) 411s [1] 101 411s 411s unitizer> Y 411s 411s > get_rsq(res) 411s [1] 0.939 411s 411s unitizer> B 411s 411s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 411s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 411s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 411s 4. res . . . . . . . . . . . . . . . . . . . . New:Y 411s 5. get_slope(res) . . . . . . . . . . . . . . . . New:Y 411s 6. get_rsq(res) . . . . . . . . . . . . . . . . . New:- 411s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . New:- 411s 411s | What test do you wish to review (input a test number, [U]nreviewed)? 411s 411s unitizer> U 411s 411s - New -------------------------------------------------------------------------- 411s 411s | The 4 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 411s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 411s 411s > get_rsq(res) 411s [1] 0.939 411s 411s unitizer> Y 411s 411s # This last test is expected to cause an error; press 'Y' to 411s # accept it so future checks can confirm the same error persists 411s 411s > fastlm(1:100, 1:10) 411s 411s unitizer> Y 411s 411s = Finalize Unitizer ============================================================ 411s 411s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 411s 411s unitizer> U 411s 411s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 411s 411s unitizer> B 411s 411s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 411s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 411s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 411s 4. res . . . . . . . . . . . . . . . . . . . . New:Y 411s 5. get_slope(res) . . . . . . . . . . . . . . . . New:Y 411s 6. get_rsq(res) . . . . . . . . . . . . . . . . . New:Y 411s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . New:Y 411s 411s | What test do you wish to review (input a test number, [U]nreviewed)? 411s 411s unitizer> U 411s 411s = Finalize Unitizer ============================================================ 411s 411s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 411s 411s unitizer> Q 411s 411s | unitizer unchanged. 411s 411s - Message ---------------------------------------------------------------------- 411s 411s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 411s | - Adding 1 out of 4 new tests 411s 411s Error in fastlm(1:100, 1:10) : 411s Arguments `x` and `y` must be the same length. 411s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 411s | - Adding 4 out of 4 new tests 411s 411s Error in : object 'U' not found 411s | No unreviewed tests. 411s 411s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 411s | - Adding 4 out of 4 new tests 411s 411s | Changes discarded. 411s > 411s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 411s > # - "Re-eval" ------------------------------------------------------------------ 411s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 411s > 411s > # Test re-eval 411s > # Re-eval and jump back to file 1 411s > # Quit from file 1 and back to main menu 411s > # Accept one test in file 2 and quit 411s > # Go to file 3, accept one, and Re-eval all 411s > 411s > unitizer:::read_line_set_vals( 411s + c("1", "Y", "R", "Y", "Q", "2", "Y", "Y", "3", "Y", "RR", "Y", "Q", "Q") 411s + ) 411s > untz1 <- unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 411s 411s | Summary of files in common directory 'unitizer': 411s | 411s | Pass Fail New 411s | *1. fastlm1.R - - 4 411s | *2. fastlm2.R - - 1 411s | *3. unitizer.fastlm.R - - 3 411s | ..................................... 411s | - - 8 411s | Legend: 411s | * `unitizer` requires review 411s 411s | Type number of unitizer to review, 'A' to review all that require review 411s 411s unitizer> 1 411s +------------------------------------------------------------------------------+ 411s | unitizer for: unitizer/fastlm1.R | 411s +------------------------------------------------------------------------------+ 411s 411s Pass Fail New 411s - - 4 411s ........................... 411s - - 4 411s 411s - New -------------------------------------------------------------------------- 411s 411s | The 4 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 411s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 411s 411s # Assignments and calls to `library` are not considered tests by 411s # `unitizer` so you will not need to review them 411s 411s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 411s > dat <- data.frame(x = 1:100, y = (1:100)^2) 411s > res <- fastlm(dat$x, dat$y) 411s 411s # The `unitizer>` prompt is like the standard R prompt. You may 411s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 411s # `str(res)`. 411s # 411s # Once you are done reviewing, you need to tell `unitizer` you 411s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 411s 411s > res 411s intercept slope rsq 411s -1717.000 101.000 0.939 411s attr(,"class") 411s [1] "fastlm" 411s 411s unitizer> Y 411s 411s # There are three more tests to review; accept them with 'Y' 411s 411s > get_slope(res) 411s [1] 101 411s 411s unitizer> R 411s 411s | Toggling re-run mode ON for this unitizer 411s 412s = Finalize Unitizer ============================================================ 412s 412s | You have 3 unreviewed tests; press `B` to browse tests, `U` to go to first 412s | unreviewed test. 412s 412s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 412s | - Adding 1 out of 4 new tests 412s 412s | Update unitizer and re-run unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U] 412s | nreviewed, [R]erun)? 412s 412s unitizer> Y 412s 412s | unitizer updated. 412s 412s +------------------------------------------------------------------------------+ 412s | unitizer for: unitizer/fastlm1.R | 412s +------------------------------------------------------------------------------+ 412s 412s Pass Fail New 412s 1 - 3 412s ........................... 412s 1 - 3 412s 412s - New -------------------------------------------------------------------------- 412s 412s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 412s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 412s 412s | Jumping to test #5 because that was the test under review when test re-run was 412s | requested. 412s 412s # There are three more tests to review; accept them with 'Y' 412s 412s > get_slope(res) 412s [1] 101 412s 412s unitizer> Q 412s 412s | No changes recorded. 412s | unitizer unchanged. 412s 412s | Summary of files in common directory 'unitizer': 412s | 412s | Pass Fail New 412s | *1. fastlm1.R 1 - 3 412s | *2. fastlm2.R - - 1 412s | *3. unitizer.fastlm.R - - 3 412s | ..................................... 412s | 1 - 7 412s | Legend: 412s | * `unitizer` requires review 412s 412s | Type number of unitizer to review, 'A' to review all that require review 412s 412s unitizer> 2 412s +------------------------------------------------------------------------------+ 412s | unitizer for: unitizer/fastlm2.R | 412s +------------------------------------------------------------------------------+ 412s 412s Pass Fail New 412s - - 1 412s ........................... 412s - - 1 412s 412s - New -------------------------------------------------------------------------- 412s 412s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 412s | [R]erun, [Q]uit, [H]elp)? 412s 412s # For internal tests only; not for demo 412s 412s > x <- 1:10 412s > y <- 1:10^3 412s > res <- summary(lm(y ~ x, data.frame(x = x, y = y))) 412s > intercept <- res$coefficients[1, 1] 412s > slope <- res$coefficients[2, 1] 412s > rsq <- res$r.squared 412s > structure(c(intercept = intercept, slope = slope, rsq = rsq), 412s + class = "fastlm") 412s intercept slope rsq 412s 4.95e+02 1.00e+00 9.90e-05 412s attr(,"class") 412s [1] "fastlm" 412s 412s unitizer> Y 412s 412s = Finalize Unitizer ============================================================ 412s 412s | You will IRREVERSIBLY modify 'unitizer/fastlm2.unitizer' by: 412s | - Adding 1 out of 1 new tests 412s 412s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 412s 412s unitizer> Y 412s 412s | unitizer updated. 412s 412s | Summary of files in common directory 'unitizer': 412s | 412s | Pass Fail New 412s | *1. fastlm1.R 1 - 3 412s | $2. fastlm2.R ? ? ? 412s | *3. unitizer.fastlm.R - - 3 412s | ..................................... 412s | ? ? ? 412s | Legend: 412s | * `unitizer` requires review 412s | $ `unitizer` has been modified and needs to be re-run to recompute summary 412s 412s | Type number of unitizer to review, 'A' to review all that require review, 'R' 412s | to re-run all updated 412s 412s unitizer> 3 412s +------------------------------------------------------------------------------+ 412s | unitizer for: unitizer/unitizer.fastlm.R | 412s +------------------------------------------------------------------------------+ 412s 412s Pass Fail New 412s - - 3 412s ........................... 412s - - 3 412s 412s - New -------------------------------------------------------------------------- 412s 412s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 412s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 412s 412s # Extra test file for internal tests; not for DEMO 412s 412s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 412s > x <- 1:10 412s > y <- x^3 412s > res <- fastlm(x, y) 412s > get_slope(res) 412s [1] 105 412s 412s unitizer> Y 412s 412s > get_rsq(res) 412s [1] 0.862 412s 412s unitizer> RR 412s 412s | Toggling re-run mode ON for all loaded unitizers 412s 412s = Finalize Unitizer ============================================================ 412s 412s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 412s | unreviewed test. 412s 412s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 412s | - Adding 1 out of 3 new tests 412s 412s | Update unitizer and re-run all loaded unitizers ([Y]es, [N]o, [P]rev, [B] 412s | rowse, [U]nreviewed, [R]erun)? 412s 412s unitizer> Y 412s 412s | unitizer updated. 412s 413s | Summary of files in common directory 'unitizer': 413s | 413s | Pass Fail New 413s | *1. fastlm1.R 1 - 3 413s | 2. fastlm2.R 1 - - 413s | *3. unitizer.fastlm.R 1 - 2 413s | ..................................... 413s | 3 - 5 413s | Legend: 413s | * `unitizer` requires review 413s 413s | Type number of unitizer to review, 'A' to review all that require review 413s 413s unitizer> Q 413s 413s > print(untz1) 413s Summary of tests (accept/total): 413s 413s id test.file New Passed Totals 413s 1 fastlm1.R 0/3 1/1 1/4 $ 413s 2 fastlm2.R 0/0 1/1 1/1 $ 413s 3 unitizer.fastlm.R 0/2 1/1 1/3 $ 413s ----------------------------------------------------- 413s 0 Totals 0/5 3/3 3/8 413s 413s $ unitizer was saved in prior evaluation 413s 413s Test files in common directory 'tests/unitizer' 413s > # remove temp file names and display 413s > invisible(lapply(untz1, function(x) {print(x); cat('\n')})) 413s Test File: tests/unitizer/fastlm1.R 413s Store ID: tests/unitizer/fastlm1.unitizer 413s 413s id call ignored status user reviewed 413s 1 4 library(utzflm, lib.loc = g... * Passed Y FALSE 413s 2 5 dat <- data.frame(x = 1:100... * Passed Y FALSE 413s 3 6 res <- fastlm(dat$x, dat$y) * Passed Y FALSE 413s 4 7 res Passed Y FALSE 413s 5 1 get_slope(res) New N FALSE 413s 6 2 get_rsq(res) New N FALSE 413s 7 3 fastlm(1:100, 1:10) New N FALSE 413s 413s You chose NOT to save these changes to the unitizer store 413s 413s Test File: tests/unitizer/fastlm2.R 413s Store ID: tests/unitizer/fastlm2.unitizer 413s 413s id call ignored status user reviewed 413s 1 1 x <- 1:10 * Passed Y FALSE 413s 2 2 y <- 1:10^3 * Passed Y FALSE 413s 3 3 res <- summary(lm(y ~ x, da... * Passed Y FALSE 413s 4 4 intercept <- res$coefficien... * Passed Y FALSE 413s 5 5 slope <- res$coefficients[2... * Passed Y FALSE 413s 6 6 rsq <- res$r.squared * Passed Y FALSE 413s 7 7 structure(c(intercept = int... Passed Y FALSE 413s 413s You chose NOT to save these changes to the unitizer store 413s 413s Test File: tests/unitizer/unitizer.fastlm.R 413s Store ID: tests/unitizer/unitizer.fastlm.unitizer 413s 413s id call ignored status user reviewed 413s 1 3 library(utzflm, lib.loc = g... * Passed Y FALSE 413s 2 4 x <- 1:10 * Passed Y FALSE 413s 3 5 y <- x^3 * Passed Y FALSE 413s 4 6 res <- fastlm(x, y) * Passed Y FALSE 413s 5 7 get_slope(res) Passed Y FALSE 413s 6 1 get_rsq(res) New N FALSE 413s 7 2 get_intercept(res) New N FALSE 413s 413s You chose NOT to save these changes to the unitizer store 413s 413s > 413s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 413s > # - "Section Extra" ------------------------------------------------------------ 413s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 413s > 413s > # Make sure that deleted items from a section are still marked from that 413s > # section upgrade to version two to use the files that are set up for that 413s > # there; notice update_fastlm_*extra* 413s > # Re-set by dropping unitizers 413s > 413s > unlink(list.dirs(FLM.TEST.DIR, recursive = FALSE), recursive = TRUE) 413s > unitizer:::update_fastlm_extra(FLM) 413s > inst_pak(FLM) 414s > test.file.1 <- file.path(FLM.TEST.DIR, "unitizer.fastlm.R") 414s > test.file.2 <- file.path(FLM.TEST.DIR, "unitizer.fastlm2.R") 414s > test.store <- file.path(FLM.TEST.DIR, "store2.unitizer") 414s > # First auto accept all initial tests, and then re-run with second version to 414s > # make sure deleted tests are where we think they should be 414s > out.1 <- 414s + unitizer:::capture_output(unitize(test.file.1, test.store, auto.accept = "new")) 414s > unitizer:::read_line_set_vals(c("B", "Q")) 414s > out.2 <- unitizer:::capture_output( 414s + untz.2 <- unitize(test.file.2, test.store, interactive.mode = TRUE) 414s + ) 414s > attributes(untz.2) <- NULL 414s > untz.2 414s [[1]] 414s [1] 1 2 3 4 5 6 7 414s 414s [[2]] 414s [1] "library(utzflm, lib.loc = getOption(\"unitizer.tmp.lib.loc\"))" 414s [2] "x <- 1:10" 414s [3] "y <- x^2" 414s [4] "res <- fastlm(x, y)" 414s [5] "get_slope(res)" 414s [6] "get_rsq(res)" 414s [7] "2 * get_slope(res) + get_intercept(res)" 414s 414s [[3]] 414s [1] "Basic Tests" "Basic Tests" "Basic Tests" "Basic Tests" 414s [5] "Basic Tests" "Advanced Tests" "Advanced Tests" 414s 414s [[4]] 414s [1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE 414s 414s [[5]] 414s [1] Failed Failed Failed Failed Failed Failed Removed 414s Levels: New Passed Failed Removed Corrupted 414s 414s [[6]] 414s [1] N N N N N N N 414s Levels: Y N 414s 414s [[7]] 414s [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE 414s 414s > 414s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 414s > # - "warning when comp funs produce output" ------------------------------------ 414s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 414s > 414s > # Sections with comp funs that output to stdout/stderr 414s > temp.loc <- tempfile() 414s > dir.create(temp.loc) 414s > file.copy(file.path(START.DIR, "_helper", "unitizers", "sects.R"), temp.loc) 414s [1] TRUE 414s > f.sec <- file.path(temp.loc, "sects.R") 414s > odir <- setwd(temp.loc) 414s > out <- unitizer:::capture_output( 414s + unitize(f.sec, auto.accept = "new", interactive.mode = FALSE 414s + ) ) 414s > 414s > unitize(f.sec, interactive.mode = FALSE) 414s 414s Warning in close_and_clear(e1@global$cons) : 414s Test comparison functions appear to have produced output, which should not happen (see `?unitizer_sect` for more details). If you did not provide custom testing functions, contact maintainer. First 50 lines follow: 414s I'm outputting to stdout 414s I'm outputting to stderr 414s I'm outputting to both 1 414s I'm outputting to both 2 414s 414s Warning in history_capt(history, interactive.mode) : 414s Unable to capture history in non-interactive mode. 414s | 3/3 tests passed; nothing to review. 414s 414s > setwd(odir) 414s > unlink(temp.loc, recursive = TRUE) 414s > 414s > # - "Corner Case Files" -------------------------------------------------------- 414s > 414s > # Corner case files 414s > # empty 414s > temp.empty <- paste0(tempfile(), "-empty.R") 414s > cat("\n", file = temp.empty) 414s > empty.capt <- unitizer:::capture_output(unitize(temp.empty, force = TRUE)) 414s > # File, but does not end in .R 414s > temp.bad <- paste0(tempfile()) 414s > 414s > cat("\n", file = temp.bad) 414s > badname.capt <- unitizer:::capture_output(try(unitize(temp.bad))) 414s > any(grepl("`get_unitizer` error", out$message)) 414s [1] FALSE 414s > 414s > any(grepl("Empty unitizer", empty.capt$output)) 414s [1] TRUE 414s > any(grepl("No valid unitizers available", badname.capt$message)) 414s [1] FALSE 414s > unlink(c(temp.empty, temp.bad)) 414s > 414s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 414s > # - "Re-eval change" ----------------------------------------------------------- 414s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 414s > 414s > # re-eval reeval with a modified file 414s > temp.reeval.base <- paste0(tempfile(), "-reeval") 414s > temp.reeval <- paste0(temp.reeval.base, ".R") 414s > temp.reeval.utz <- paste0(temp.reeval.base, ".unitizer") 414s > cat("1 + 1\n2 + 2\n", file = temp.reeval) 414s > # force re-review 414s > unitizer:::read_line_set_vals(c("Y", "P", "Y", "cat(\"1 + 1\n2 + 3\n\", file=temp.reeval)", 414s + "R", "Y", "Q")) 414s > # state = environment() so we can access variables from this local 414s > reeval.capt <- unitizer:::capture_output(unitize(temp.reeval, 414s + state = environment(), interactive.mode = TRUE)) 415s > unlink(c(temp.reeval, temp.reeval.utz), recursive = TRUE) 415s > 415s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 415s > # - "Condition fail" ----------------------------------------------------------- 415s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 415s > 415s > # Fail test with conditions 415s > temp.cond.base <- paste0(tempfile(), "-cond") 415s > temp.cond <- paste0(tempfile(), ".R") 415s > temp.cond.utz <- paste0(tempfile(), ".unitizer") 415s > cond.message <- "hello world" 415s > cat("warning(cond.message)", file = temp.cond) 415s > unitizer:::read_line_set_vals(c("Y", "Y")) 415s > # state = environment() so we can access variables from this local 415s > unitizer:::capture_output( 415s + unitize(temp.cond, state = environment(), interactive.mode = TRUE) 415s + ) 415s > cond.message <- "goodbye world" 415s > unitizer:::read_line_set_vals("Q") 415s > cond.capt <- 415s + unitizer:::capture_output( 415s + unitize(temp.cond, state = environment(), interactive.mode = TRUE) 415s + ) 415s > sum(grepl("Conditions mismatch", cond.capt$output)) == 1L 415s [1] TRUE 415s > unlink(c(temp.cond, temp.cond.utz), recursive = TRUE) 415s > 415s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 415s > # - "Force" -------------------------------------------------------------------- 415s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 415s > # 415s > # Toggle force update, in order for this to work we need to create a situation 415s > # where in a `unitize_dir`, one file passes, the other doesn't, and we review 415s > # the file that passes. Otherwise the only other way to do it is to set force 415s > # from the beginning, but that ruins the toggle effect. One possible issue 415s > # here is that we don't have a great way to check the file actually changed. 415s > 415s > temp.forceup.base.dir <- tempfile() 415s > dir.create(temp.forceup.base.dir) 415s > temp.forceup.1 <- file.path(temp.forceup.base.dir, "force1.R") 415s > temp.forceup.2 <- file.path(temp.forceup.base.dir, "force2.R") 415s > cat("force.var\n", file = temp.forceup.1) 415s > cat("4 + 1\n", file = temp.forceup.2) 415s > force.var <- 1 415s > unitizer:::capture_output({ 415s + unitize(temp.forceup.1, auto.accept = "new", state = environment()) 415s + unitize(temp.forceup.2, auto.accept = "new", state = environment()) 415s + }) 415s > force.var <- 2 415s > unitizer:::read_line_set_vals(c("2", "1", "Y", "O", "Q", "Q")) 415s > force.capt <- unitizer:::capture_output(unitize_dir(temp.forceup.base.dir, 415s + state = environment(), interactive.mode = TRUE)) 415s > unlink(temp.forceup.base.dir, recursive = TRUE) 415s > sum(grepl("Toggling force update mode ON", force.capt$message)) == 415s + 1L 415s [1] TRUE 415s > sum(grepl("You are about to .* with re-evaluated", force.capt$message)) == 415s + 1L 415s [1] TRUE 415s > 415s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 415s > # - "Compare Funs" ------------------------------------------------------------- 415s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 415s > 415s > # Bad comparison functions 415s > temp.bad.comp <- paste0(tempfile(), ".R") 415s > cat("\n unitizer_sect(\n 'bad comp', {1 + 1; 2 + 2},\n compare=function(x, y) list('failed', 'comparison')\n )\n", 415s + file = temp.bad.comp) 415s > unitizer:::capture_output(unitize(temp.bad.comp, auto.accept = "new")) 415s > unitizer:::read_line_set_vals(c("Q")) 415s > bad.comp.capt <- unitizer:::capture_output(unitize(temp.bad.comp, 415s + interactive.mode = TRUE)) 416s > unlink(temp.bad.comp) 416s > 416s > sum(grepl("Unable to compare value", bad.comp.capt$message)) == 1L 416s [1] TRUE 416s > sum(grepl("Corrupted", bad.comp.capt$output)) >= 1L 416s [1] TRUE 416s > 416s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 416s > # - "bad map" ------------------------------------------------------------------ 416s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 416s > 416s > # Bad store mapping functions 416s > 416s > try(unitize_dir(FLM.TEST.DIR, store.ids = function(x) stop("Bad store map fun"))) 416s 416s Error in FUN(X[[i]], ...) : Bad store map fun 416s Error in unitize_dir(FLM.TEST.DIR, store.ids = function(x) stop("Bad store map fun")) : 416s Argument `store.ids` is a function, but caused an error when attempting to use it to convert test file names to `unitizer` ids. 416s > 416s > unitizer:::read_line_set_vals(NULL) 416s > 416s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 416s > # - "Multiple Bookmarks" ------------------------------------------------------- 416s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 416s > 416s > # Issue 245: In review-all mode should not move to next unitizer until the 416s > # review bookmark is cleared. 416s > 416s > temp.dir <- tempfile() 416s > dir.create(temp.dir) 416s > writeLines("'hello'\n'world'", file.path(temp.dir, "a.R")) 416s > writeLines("2 + 1\n3 + 2", file.path(temp.dir, "b.R")) 416s > writeLines("pi\n2 * pi\nsqrt(pi)", file.path(temp.dir, "c.R")) 416s > unitizer:::read_line_set_vals( 416s + c("A","N","N","Y","Y","R","Y","Q","Y","R","Y","Y","Y","Y","Q") 416s + ) 416s > unitize_dir(temp.dir, interactive.mode=TRUE) 416s 416s | Summary of files in common directory '.': 416s | 416s | Pass Fail New 416s | *1. a.R - - 2 416s | *2. b.R - - 2 416s | *3. c.R - - 3 416s | ....................... 416s | - - 7 416s | Legend: 416s | * `unitizer` requires review 416s 416s | Type number of unitizer to review, 'A' to review all that require review 416s 416s unitizer> A 416s 416s +------------------------------------------------------------------------------+ 416s | unitizer for: a.R | 416s +------------------------------------------------------------------------------+ 416s 416s Pass Fail New 416s - - 2 416s ........................... 416s - - 2 416s 416s - New -------------------------------------------------------------------------- 416s 416s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 416s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 416s 416s > "hello" 416s [1] "hello" 416s 416s unitizer> N 416s 416s > "world" 416s [1] "world" 416s 416s unitizer> N 416s 416s = Finalize Unitizer ============================================================ 416s 416s | You made no changes to the unitizer so there is no need to update it. While 416s | unnecessary, you can force an update by typing O at the prompt. 416s 416s | Exit unitizer ([Y]es, [P]rev, [B]rowse, [R]erun, f[O]rce, [QQ]uit All)? 416s 416s unitizer> Y 416s 416s | unitizer unchanged. 416s 416s +------------------------------------------------------------------------------+ 416s | unitizer for: b.R | 416s +------------------------------------------------------------------------------+ 416s 416s Pass Fail New 416s - - 2 416s ........................... 416s - - 2 416s 416s - New -------------------------------------------------------------------------- 416s 416s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 416s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 416s 416s > 2 + 1 416s [1] 3 416s 416s unitizer> Y 416s 416s > 3 + 2 416s [1] 5 416s 416s unitizer> R 416s 416s | Toggling re-run mode ON for this unitizer 416s 416s = Finalize Unitizer ============================================================ 416s 416s | You have 1 unreviewed tests; press `B` to browse tests, `U` to go to first 416s | unreviewed test. 416s 416s | You will IRREVERSIBLY modify 'b.unitizer' by: 416s | - Adding 1 out of 2 new tests 416s 416s | Update unitizer and re-run unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U] 416s | nreviewed, [R]erun, [QQ]uit All)? 416s 416s unitizer> Y 416s 416s | unitizer updated. 416s 416s +------------------------------------------------------------------------------+ 416s | unitizer for: b.R | 416s +------------------------------------------------------------------------------+ 416s 416s Pass Fail New 416s 1 - 1 416s ........................... 416s 1 - 1 416s 416s - New -------------------------------------------------------------------------- 416s 416s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 416s | [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 416s 416s | Jumping to test #2 because that was the test under review when test re-run was 416s | requested. 416s 416s > 3 + 2 416s [1] 5 416s 416s unitizer> Q 416s 416s | No changes recorded. 416s | unitizer unchanged. 416s 416s +------------------------------------------------------------------------------+ 416s | unitizer for: c.R | 416s +------------------------------------------------------------------------------+ 416s 416s Pass Fail New 416s - - 3 416s ........................... 416s - - 3 416s 416s - New -------------------------------------------------------------------------- 416s 416s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 416s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 416s 416s > pi 416s [1] 3.14 416s 416s unitizer> Y 416s 416s > 2 * pi 416s [1] 6.28 416s 416s unitizer> R 416s 416s | Toggling re-run mode ON for this unitizer 416s 416s = Finalize Unitizer ============================================================ 416s 416s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 416s | unreviewed test. 416s 416s | You will IRREVERSIBLY modify 'c.unitizer' by: 416s | - Adding 1 out of 3 new tests 416s 416s | Update unitizer and re-run unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U] 416s | nreviewed, [R]erun, [QQ]uit All)? 416s 416s unitizer> Y 416s 416s | unitizer updated. 416s 416s +------------------------------------------------------------------------------+ 416s | unitizer for: c.R | 416s +------------------------------------------------------------------------------+ 416s 416s Pass Fail New 416s 1 - 2 416s ........................... 416s 1 - 2 416s 416s - New -------------------------------------------------------------------------- 416s 416s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 416s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 416s 416s | Jumping to test #2 because that was the test under review when test re-run was 416s | requested. 416s 416s > 2 * pi 416s [1] 6.28 416s 416s unitizer> Y 416s 416s > sqrt(pi) 416s [1] 1.77 416s 416s unitizer> Y 416s 416s = Finalize Unitizer ============================================================ 416s 416s | You will IRREVERSIBLY modify 'c.unitizer' by: 416s | - Adding 2 out of 2 new tests 416s 416s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 416s 416s unitizer> Y 416s 416s | unitizer updated. 416s 417s | Summary of files in common directory '.': 417s | 417s | Pass Fail New 417s | *1. a.R - - 2 417s | *2. b.R 1 - 1 417s | $3. c.R ? ? ? 417s | ....................... 417s | ? ? ? 417s | Legend: 417s | * `unitizer` requires review 417s | $ `unitizer` has been modified and needs to be re-run to recompute summary 417s 417s | Type number of unitizer to review, 'A' to review all that require review, 'R' 417s | to re-run all updated 417s 417s unitizer> Q 417s 417s > 417s > # Make sure re-eval all clears all bookmarks 417s > unlink( 417s + list.files(temp.dir, full.names=TRUE, pattern="\\.unitizer$"), 417s + recursive=TRUE 417s + ) 417s > unitizer:::read_line_set_vals(c("A","Q","Y","RR","Y","Q")) 417s > unitize_dir(temp.dir, interactive.mode=TRUE) 417s 417s | Summary of files in common directory '.': 417s | 417s | Pass Fail New 417s | *1. a.R - - 2 417s | *2. b.R - - 2 417s | *3. c.R - - 3 417s | ....................... 417s | - - 7 417s | Legend: 417s | * `unitizer` requires review 417s 417s | Type number of unitizer to review, 'A' to review all that require review 417s 417s unitizer> A 417s 417s +------------------------------------------------------------------------------+ 417s | unitizer for: a.R | 417s +------------------------------------------------------------------------------+ 417s 417s Pass Fail New 417s - - 2 417s ........................... 417s - - 2 417s 417s - New -------------------------------------------------------------------------- 417s 417s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 417s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 417s 417s > "hello" 417s [1] "hello" 417s 417s unitizer> Q 417s 417s | No changes recorded. 417s | unitizer unchanged. 417s 417s +------------------------------------------------------------------------------+ 417s | unitizer for: b.R | 417s +------------------------------------------------------------------------------+ 417s 417s Pass Fail New 417s - - 2 417s ........................... 417s - - 2 417s 417s - New -------------------------------------------------------------------------- 417s 417s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 417s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 417s 417s > 2 + 1 417s [1] 3 417s 417s unitizer> Y 417s 417s > 3 + 2 417s [1] 5 417s 417s unitizer> RR 417s 417s | Toggling re-run mode ON for all loaded unitizers 417s 417s = Finalize Unitizer ============================================================ 417s 417s | You have 1 unreviewed tests; press `B` to browse tests, `U` to go to first 417s | unreviewed test. 417s 417s | You will IRREVERSIBLY modify 'b.unitizer' by: 417s | - Adding 1 out of 2 new tests 417s 417s | Update unitizer and re-run all loaded unitizers ([Y]es, [N]o, [P]rev, [B] 417s | rowse, [U]nreviewed, [R]erun, [QQ]uit All)? 417s 417s unitizer> Y 417s 417s | unitizer updated. 417s 417s | Summary of files in common directory '.': 417s | 417s | Pass Fail New 417s | *1. a.R - - 2 417s | *2. b.R 1 - 1 417s | *3. c.R - - 3 417s | ....................... 417s | 1 - 6 417s | Legend: 417s | * `unitizer` requires review 417s 417s | Type number of unitizer to review, 'A' to review all that require review 417s 417s unitizer> Q 417s 417s > 417s > unitizer:::read_line_set_vals(NULL) 417s > unlink(temp.dir, recursive=TRUE) 417s > 417s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 417s > # - "Non-Standard Conditions" -------------------------------------------------- 417s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 417s > 417s > # Issue 272: some conditions don't produce any output, but for `unitizer` we 417s > # consider normally non-test expressions that produce conditions as tests. So 417s > # we need a mechanism for clarifying what happened. 417s > 417s > temp.dir <- tempfile() 417s > temp.file <- file.path(temp.dir, 'a.R') 417s > dir.create(temp.dir) 417s > 417s > unitizer:::read_line_set_vals("Q") 417s > writeLines( 417s + c( 417s + "cond <- simpleCondition('hello')", 417s + "class(cond) <- c('svgchop_unsupported', 'svgchop', class(cond))", 417s + "invisible(signalCondition(cond))" 417s + ), 417s + temp.file 417s + ) 417s > unitize(temp.file, interactive.mode=TRUE) 417s 417s +------------------------------------------------------------------------------+ 417s | unitizer for: a.R | 417s +------------------------------------------------------------------------------+ 417s 417s Pass Fail New 417s - - 1 417s ........................... 417s - - 1 417s 417s - New -------------------------------------------------------------------------- 417s 417s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 417s | [R]erun, [Q]uit, [H]elp)? 417s 417s > cond <- simpleCondition("hello") 417s > class(cond) <- c("svgchop_unsupported", "svgchop", class(cond)) 417s > invisible(signalCondition(cond)) 417s 417s | Test silently signalled conditions (use e.g. .NEW$conditions[[1]] to inspect): 417s 417s Condition list with 1 condition: 417s 1. svgchop_unsupported: hello 417s 417s unitizer> Q 417s 417s | No changes recorded. 417s | unitizer unchanged. 417s 417s > 417s > unitizer:::read_line_set_vals(NULL) 417s > unlink(temp.dir, recursive=TRUE) 417s > 417s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 417s > # - "Output Transcript in non-Interactive" ------------------------------------- 417s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 417s > 417s > # Issue 286: don't capture output in non-interactive. 417s > # We need `try` because we're testing what happens when the unitizer fails. 417s > 417s > temp.dir <- tempfile() 417s > temp.file <- file.path(temp.dir, 'a.R') 417s > dir.create(temp.dir) 417s > writeLines('warning("boom")', temp.file) # can't use error b/c try below 417s > old.opt <- options(unitizer.transcript=NULL, unitizer.show.progress=TRUE) 417s > try(unitize(temp.file)) 417s 417s Warning in check_call_stack() : 417s It appears you are running unitizer inside an error handling function such as 417s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 417s couraged as it may cause unpredictable behavior from unitizer in the event tests 417s produce conditions / errors. We strongly recommend you re-run your tests 417s outside of such handling functions. 417s Preloads... 417s Loading unitizer data... 417s Parsing tests... 417s Parsing a.R 417s Evaluating tests... 417s 417s warning("boom") 417s Warning in withVisible(warning("boom")) : boom 417s 417s Prepping Unitizers... 417s Warning in history_capt(history, interactive.mode) : 417s Unable to capture history in non-interactive mode. 417s 417s +------------------------------------------------------------------------------+ 417s | unitizer for: a.R | 417s +------------------------------------------------------------------------------+ 417s 417s Pass Fail New 417s - - 1 417s ........................... 417s - - 1 417s 417s - New -------------------------------------------------------------------------- 417s 417s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 417s | [R]erun, [Q]uit, [H]elp)? 417s 417s > warning("boom") 417s 417s | Test signalled conditions (use e.g. .NEW$conditions[[1]] to inspect): 417s 417s Condition list with 1 condition: 417s 1. Warning: boom 417s 417s | User input required to proceed, but we are in non-interactive mode. 417s 417s | unitizer unchanged. 417s 417s | * New: warning("boom") 417s | in 'a.R' 417s 417s | Newly evaluated tests do not match unitizer (New: 1); see above for more info, 417s | or run in interactive mode. 417s 417s | Running in transcript mode: only stderr text that is also part of a signalled 417s | condition is in the test review section (scroll up to the evaluation section 417s | for the rest). See `transcript` parameter in `?unitize`. 417s 417s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 417s Cannot proceed in non-interactive mode. 417s > options(old.opt) 417s > unlink(temp.dir, recursive=TRUE) 417s > 417s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 417s > # - "Display All Tests in non-Interactive" ------------------------------------- 417s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 417s > 417s > # Issue 293: don't stop after first failing test 417s > # We need `try` because we're testing what happens when the unitizer fails. 417s > 417s > temp.dir <- tempfile() 417s > temp.file.a <- file.path(temp.dir, 'a.R') 417s > temp.file.b <- file.path(temp.dir, 'b.R') 417s > dir.create(temp.dir) 417s > writeLines(c("1 + 1", "warning('hello')"), temp.file.a) 417s > writeLines(c("2 + 1", "warning('goodbye')"), temp.file.b) 417s > try(unitize_dir(temp.dir, transcript=FALSE)) 417s 417s Warning in check_call_stack() : 417s It appears you are running unitizer inside an error handling function such as 417s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 417s couraged as it may cause unpredictable behavior from unitizer in the event tests 417s produce conditions / errors. We strongly recommend you re-run your tests 417s outside of such handling functions. 417s Warning in history_capt(history, interactive.mode) : 417s Unable to capture history in non-interactive mode. 417s | Summary of files in common directory '.': 417s | 417s | Pass Fail New 417s | *1. a.R - - 2 417s | *2. b.R - - 2 417s | ....................... 417s | - - 4 417s | Legend: 417s | * `unitizer` requires review 417s 417s +------------------------------------------------------------------------------+ 417s | unitizer for: a.R | 417s +------------------------------------------------------------------------------+ 417s 417s Pass Fail New 417s - - 2 417s ........................... 417s - - 2 417s 417s - New -------------------------------------------------------------------------- 417s 417s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 417s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 417s 417s > 1 + 1 417s [1] 2 417s 417s > warning("hello") 417s Warning: hello 417s 417s | User input required to proceed, but we are in non-interactive mode. 417s 417s | unitizer unchanged. 417s 417s +------------------------------------------------------------------------------+ 417s | unitizer for: b.R | 417s +------------------------------------------------------------------------------+ 417s 417s Pass Fail New 417s - - 2 417s ........................... 417s - - 2 417s 417s - New -------------------------------------------------------------------------- 417s 417s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 417s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 417s 417s > 2 + 1 417s [1] 3 417s 417s > warning("goodbye") 417s Warning: goodbye 417s 417s | User input required to proceed, but we are in non-interactive mode. 417s 417s | unitizer unchanged. 417s 417s | * New: 1 + 1 417s | * New: warning("hello") 417s | in 'a.R' 417s 417s | * New: 2 + 1 417s | * New: warning("goodbye") 417s | in 'b.R' 417s 417s | Newly evaluated tests do not match unitizer (New: 4); see above for more info, 417s | or run in interactive mode. 417s 417s Error in unitize_core(test.files = test.files, store.ids = store.ids, : 417s Cannot proceed in non-interactive mode. 417s > options(old.opt) 417s > unlink(temp.dir, recursive=TRUE) 417s > 417s > 417s PASS 417s Begin testing zz-check.R 418s 418s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 418s Copyright (C) 2024 The R Foundation for Statistical Computing 418s Platform: s390x-ibm-linux-gnu (64-bit) 418s 418s R is free software and comes with ABSOLUTELY NO WARRANTY. 418s You are welcome to redistribute it under certain conditions. 418s Type 'license()' or 'licence()' for distribution details. 418s 418s R is a collaborative project with many contributors. 418s Type 'contributors()' for more information and 418s 'citation()' on how to cite R or R packages in publications. 418s 418s Type 'demo()' for some demos, 'help()' for on-line help, or 418s 'help.start()' for an HTML browser interface to help. 418s Type 'q()' to quit R. 418s 418s > source('aammrtf/check.R') 418s 43: > lorem1 <- "Today, with Kiernan on the stand offering confirmation, Howard walked the jury through the enormous amount of data pulled from Ulbricht's computer. Defense lawyers haven't had a chance yet to respond to this evidence<80><94>that will likely come tomorrow. The mountain they have to climb looks higher than ever, though. Last week, Ulbricht's lawyer outlined a defense in which Ulbricht walked away from the marketplace he created and was \"lured back.\" But what will explain the dozens of folders of data on this laptop, with data from the upper echelons of Silk Road management<80><94>mixed with the most intimate details of Ulbricht's personal life?" 418s Warning message: 418s In eval(ei, envir) : Some outputs contain non-ASCII: 418s 't-text.Rout' 418s > 418s PASS 418s autopkgtest [23:32:23]: test run-unit-test: -----------------------] 419s autopkgtest [23:32:24]: test run-unit-test: - - - - - - - - - - results - - - - - - - - - - 419s run-unit-test PASS 419s autopkgtest [23:32:24]: test pkg-r-autopkgtest: preparing testbed 421s Reading package lists... 421s Building dependency tree... 421s Reading state information... 421s Starting pkgProblemResolver with broken count: 0 421s Starting 2 pkgProblemResolver with broken count: 0 421s Done 422s The following additional packages will be installed: 422s build-essential cpp cpp-13 cpp-13-s390x-linux-gnu cpp-s390x-linux-gnu 422s dctrl-tools g++ g++-13 g++-13-s390x-linux-gnu g++-s390x-linux-gnu gcc gcc-13 422s gcc-13-s390x-linux-gnu gcc-s390x-linux-gnu gfortran gfortran-13 422s gfortran-13-s390x-linux-gnu gfortran-s390x-linux-gnu icu-devtools libasan8 422s libatomic1 libblas-dev libbz2-dev libcc1-0 libgcc-13-dev libgfortran-13-dev 422s libicu-dev libisl23 libitm1 libjpeg-dev libjpeg-turbo8-dev libjpeg8-dev 422s liblapack-dev liblzma-dev libmpc3 libncurses-dev libpcre2-16-0 libpcre2-32-0 422s libpcre2-dev libpcre2-posix3 libpkgconf3 libpng-dev libreadline-dev 422s libstdc++-13-dev libubsan1 pkg-config pkg-r-autopkgtest pkgconf pkgconf-bin 422s r-base-dev zlib1g-dev 422s Suggested packages: 422s cpp-doc gcc-13-locales cpp-13-doc debtags g++-multilib g++-13-multilib 422s gcc-13-doc gcc-multilib autoconf automake libtool flex bison gdb gcc-doc 422s gcc-13-multilib gdb-s390x-linux-gnu gfortran-multilib gfortran-doc 422s gfortran-13-multilib gfortran-13-doc libcoarrays-dev liblapack-doc icu-doc 422s liblzma-doc ncurses-doc readline-doc libstdc++-13-doc texlive-base 422s texlive-latex-base texlive-plain-generic texlive-fonts-recommended 422s texlive-fonts-extra texlive-extra-utils texlive-latex-recommended 422s texlive-latex-extra texinfo 422s Recommended packages: 422s bzip2-doc libpng-tools 422s The following NEW packages will be installed: 422s autopkgtest-satdep build-essential cpp cpp-13 cpp-13-s390x-linux-gnu 422s cpp-s390x-linux-gnu dctrl-tools g++ g++-13 g++-13-s390x-linux-gnu 422s g++-s390x-linux-gnu gcc gcc-13 gcc-13-s390x-linux-gnu gcc-s390x-linux-gnu 422s gfortran gfortran-13 gfortran-13-s390x-linux-gnu gfortran-s390x-linux-gnu 422s icu-devtools libasan8 libatomic1 libblas-dev libbz2-dev libcc1-0 422s libgcc-13-dev libgfortran-13-dev libicu-dev libisl23 libitm1 libjpeg-dev 422s libjpeg-turbo8-dev libjpeg8-dev liblapack-dev liblzma-dev libmpc3 422s libncurses-dev libpcre2-16-0 libpcre2-32-0 libpcre2-dev libpcre2-posix3 422s libpkgconf3 libpng-dev libreadline-dev libstdc++-13-dev libubsan1 pkg-config 422s pkg-r-autopkgtest pkgconf pkgconf-bin r-base-dev zlib1g-dev 422s 0 upgraded, 52 newly installed, 0 to remove and 1 not upgraded. 422s Need to get 82.5 MB/82.5 MB of archives. 422s After this operation, 282 MB of additional disk space will be used. 422s Get:1 /tmp/autopkgtest.yRHocd/2-autopkgtest-satdep.deb autopkgtest-satdep s390x 0 [740 B] 422s Get:2 http://ftpmaster.internal/ubuntu noble/main s390x libisl23 s390x 0.26-3 [722 kB] 423s Get:3 http://ftpmaster.internal/ubuntu noble/main s390x libmpc3 s390x 1.3.1-1 [54.9 kB] 423s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main s390x cpp-13-s390x-linux-gnu s390x 13.2.0-21ubuntu1 [9935 kB] 427s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main s390x cpp-13 s390x 13.2.0-21ubuntu1 [1026 B] 427s Get:6 http://ftpmaster.internal/ubuntu noble/main s390x cpp-s390x-linux-gnu s390x 4:13.2.0-7ubuntu1 [5308 B] 427s Get:7 http://ftpmaster.internal/ubuntu noble/main s390x cpp s390x 4:13.2.0-7ubuntu1 [22.4 kB] 427s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libcc1-0 s390x 14-20240315-1ubuntu1 [50.0 kB] 427s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libitm1 s390x 14-20240315-1ubuntu1 [31.1 kB] 427s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libatomic1 s390x 14-20240315-1ubuntu1 [9396 B] 427s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libasan8 s390x 14-20240315-1ubuntu1 [2997 kB] 428s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libubsan1 s390x 14-20240315-1ubuntu1 [1186 kB] 428s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgcc-13-dev s390x 13.2.0-21ubuntu1 [1003 kB] 429s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gcc-13-s390x-linux-gnu s390x 13.2.0-21ubuntu1 [19.1 MB] 435s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gcc-13 s390x 13.2.0-21ubuntu1 [469 kB] 435s Get:16 http://ftpmaster.internal/ubuntu noble/main s390x gcc-s390x-linux-gnu s390x 4:13.2.0-7ubuntu1 [1208 B] 435s Get:17 http://ftpmaster.internal/ubuntu noble/main s390x gcc s390x 4:13.2.0-7ubuntu1 [5014 B] 435s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libstdc++-13-dev s390x 13.2.0-21ubuntu1 [2494 kB] 435s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main s390x g++-13-s390x-linux-gnu s390x 13.2.0-21ubuntu1 [11.3 MB] 437s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main s390x g++-13 s390x 13.2.0-21ubuntu1 [14.4 kB] 437s Get:21 http://ftpmaster.internal/ubuntu noble/main s390x g++-s390x-linux-gnu s390x 4:13.2.0-7ubuntu1 [956 B] 437s Get:22 http://ftpmaster.internal/ubuntu noble/main s390x g++ s390x 4:13.2.0-7ubuntu1 [1096 B] 437s Get:23 http://ftpmaster.internal/ubuntu noble/main s390x build-essential s390x 12.10ubuntu1 [4930 B] 437s Get:24 http://ftpmaster.internal/ubuntu noble/main s390x dctrl-tools s390x 2.24-3build2 [65.4 kB] 437s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libgfortran-13-dev s390x 13.2.0-21ubuntu1 [623 kB] 437s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gfortran-13-s390x-linux-gnu s390x 13.2.0-21ubuntu1 [10.4 MB] 438s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main s390x gfortran-13 s390x 13.2.0-21ubuntu1 [10.9 kB] 438s Get:28 http://ftpmaster.internal/ubuntu noble/main s390x gfortran-s390x-linux-gnu s390x 4:13.2.0-7ubuntu1 [1016 B] 438s Get:29 http://ftpmaster.internal/ubuntu noble/main s390x gfortran s390x 4:13.2.0-7ubuntu1 [1174 B] 438s Get:30 http://ftpmaster.internal/ubuntu noble/main s390x icu-devtools s390x 74.2-1ubuntu1 [224 kB] 439s Get:31 http://ftpmaster.internal/ubuntu noble/main s390x libblas-dev s390x 3.12.0-3 [239 kB] 439s Get:32 http://ftpmaster.internal/ubuntu noble/main s390x libbz2-dev s390x 1.0.8-5ubuntu1 [39.4 kB] 439s Get:33 http://ftpmaster.internal/ubuntu noble/main s390x libicu-dev s390x 74.2-1ubuntu1 [11.9 MB] 440s Get:34 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg-turbo8-dev s390x 2.1.5-2ubuntu1 [264 kB] 440s Get:35 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg8-dev s390x 8c-2ubuntu11 [1484 B] 440s Get:36 http://ftpmaster.internal/ubuntu noble/main s390x libjpeg-dev s390x 8c-2ubuntu11 [1484 B] 440s Get:37 http://ftpmaster.internal/ubuntu noble/main s390x liblapack-dev s390x 3.12.0-3 [5983 kB] 441s Get:38 http://ftpmaster.internal/ubuntu noble/main s390x libncurses-dev s390x 6.4+20240113-1ubuntu1 [412 kB] 441s Get:39 http://ftpmaster.internal/ubuntu noble/main s390x libpcre2-16-0 s390x 10.42-4ubuntu1 [229 kB] 441s Get:40 http://ftpmaster.internal/ubuntu noble/main s390x libpcre2-32-0 s390x 10.42-4ubuntu1 [217 kB] 441s Get:41 http://ftpmaster.internal/ubuntu noble/main s390x libpcre2-posix3 s390x 10.42-4ubuntu1 [6704 B] 441s Get:42 http://ftpmaster.internal/ubuntu noble/main s390x libpcre2-dev s390x 10.42-4ubuntu1 [805 kB] 441s Get:43 http://ftpmaster.internal/ubuntu noble/main s390x libpkgconf3 s390x 1.8.1-2 [30.4 kB] 441s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main s390x zlib1g-dev s390x 1:1.3.dfsg-3.1ubuntu1 [904 kB] 441s Get:45 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libpng-dev s390x 1.6.43-3 [277 kB] 441s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main s390x libreadline-dev s390x 8.2-4 [189 kB] 441s Get:47 http://ftpmaster.internal/ubuntu noble/main s390x pkgconf-bin s390x 1.8.1-2 [20.8 kB] 441s Get:48 http://ftpmaster.internal/ubuntu noble/main s390x pkgconf s390x 1.8.1-2 [16.7 kB] 441s Get:49 http://ftpmaster.internal/ubuntu noble/main s390x pkg-config s390x 1.8.1-2 [7170 B] 441s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main s390x liblzma-dev s390x 5.6.0-0.2 [185 kB] 441s Get:51 http://ftpmaster.internal/ubuntu noble-proposed/universe s390x r-base-dev all 4.3.3-2build1 [4334 B] 441s Get:52 http://ftpmaster.internal/ubuntu noble/universe s390x pkg-r-autopkgtest all 20231212ubuntu1 [6448 B] 441s Fetched 82.5 MB in 19s (4314 kB/s) 441s Selecting previously unselected package libisl23:s390x. 441s (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 ... 95245 files and directories currently installed.) 441s Preparing to unpack .../00-libisl23_0.26-3_s390x.deb ... 441s Unpacking libisl23:s390x (0.26-3) ... 441s Selecting previously unselected package libmpc3:s390x. 441s Preparing to unpack .../01-libmpc3_1.3.1-1_s390x.deb ... 441s Unpacking libmpc3:s390x (1.3.1-1) ... 441s Selecting previously unselected package cpp-13-s390x-linux-gnu. 441s Preparing to unpack .../02-cpp-13-s390x-linux-gnu_13.2.0-21ubuntu1_s390x.deb ... 441s Unpacking cpp-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 442s Selecting previously unselected package cpp-13. 442s Preparing to unpack .../03-cpp-13_13.2.0-21ubuntu1_s390x.deb ... 442s Unpacking cpp-13 (13.2.0-21ubuntu1) ... 442s Selecting previously unselected package cpp-s390x-linux-gnu. 442s Preparing to unpack .../04-cpp-s390x-linux-gnu_4%3a13.2.0-7ubuntu1_s390x.deb ... 442s Unpacking cpp-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 442s Selecting previously unselected package cpp. 442s Preparing to unpack .../05-cpp_4%3a13.2.0-7ubuntu1_s390x.deb ... 442s Unpacking cpp (4:13.2.0-7ubuntu1) ... 442s Selecting previously unselected package libcc1-0:s390x. 442s Preparing to unpack .../06-libcc1-0_14-20240315-1ubuntu1_s390x.deb ... 442s Unpacking libcc1-0:s390x (14-20240315-1ubuntu1) ... 442s Selecting previously unselected package libitm1:s390x. 442s Preparing to unpack .../07-libitm1_14-20240315-1ubuntu1_s390x.deb ... 442s Unpacking libitm1:s390x (14-20240315-1ubuntu1) ... 442s Selecting previously unselected package libatomic1:s390x. 442s Preparing to unpack .../08-libatomic1_14-20240315-1ubuntu1_s390x.deb ... 442s Unpacking libatomic1:s390x (14-20240315-1ubuntu1) ... 442s Selecting previously unselected package libasan8:s390x. 442s Preparing to unpack .../09-libasan8_14-20240315-1ubuntu1_s390x.deb ... 442s Unpacking libasan8:s390x (14-20240315-1ubuntu1) ... 442s Selecting previously unselected package libubsan1:s390x. 442s Preparing to unpack .../10-libubsan1_14-20240315-1ubuntu1_s390x.deb ... 442s Unpacking libubsan1:s390x (14-20240315-1ubuntu1) ... 442s Selecting previously unselected package libgcc-13-dev:s390x. 442s Preparing to unpack .../11-libgcc-13-dev_13.2.0-21ubuntu1_s390x.deb ... 442s Unpacking libgcc-13-dev:s390x (13.2.0-21ubuntu1) ... 442s Selecting previously unselected package gcc-13-s390x-linux-gnu. 442s Preparing to unpack .../12-gcc-13-s390x-linux-gnu_13.2.0-21ubuntu1_s390x.deb ... 442s Unpacking gcc-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 442s Selecting previously unselected package gcc-13. 442s Preparing to unpack .../13-gcc-13_13.2.0-21ubuntu1_s390x.deb ... 442s Unpacking gcc-13 (13.2.0-21ubuntu1) ... 442s Selecting previously unselected package gcc-s390x-linux-gnu. 442s Preparing to unpack .../14-gcc-s390x-linux-gnu_4%3a13.2.0-7ubuntu1_s390x.deb ... 442s Unpacking gcc-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 442s Selecting previously unselected package gcc. 442s Preparing to unpack .../15-gcc_4%3a13.2.0-7ubuntu1_s390x.deb ... 442s Unpacking gcc (4:13.2.0-7ubuntu1) ... 442s Selecting previously unselected package libstdc++-13-dev:s390x. 442s Preparing to unpack .../16-libstdc++-13-dev_13.2.0-21ubuntu1_s390x.deb ... 442s Unpacking libstdc++-13-dev:s390x (13.2.0-21ubuntu1) ... 443s Selecting previously unselected package g++-13-s390x-linux-gnu. 443s Preparing to unpack .../17-g++-13-s390x-linux-gnu_13.2.0-21ubuntu1_s390x.deb ... 443s Unpacking g++-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 443s Selecting previously unselected package g++-13. 443s Preparing to unpack .../18-g++-13_13.2.0-21ubuntu1_s390x.deb ... 443s Unpacking g++-13 (13.2.0-21ubuntu1) ... 443s Selecting previously unselected package g++-s390x-linux-gnu. 443s Preparing to unpack .../19-g++-s390x-linux-gnu_4%3a13.2.0-7ubuntu1_s390x.deb ... 443s Unpacking g++-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 443s Selecting previously unselected package g++. 443s Preparing to unpack .../20-g++_4%3a13.2.0-7ubuntu1_s390x.deb ... 443s Unpacking g++ (4:13.2.0-7ubuntu1) ... 443s Selecting previously unselected package build-essential. 443s Preparing to unpack .../21-build-essential_12.10ubuntu1_s390x.deb ... 443s Unpacking build-essential (12.10ubuntu1) ... 443s Selecting previously unselected package dctrl-tools. 443s Preparing to unpack .../22-dctrl-tools_2.24-3build2_s390x.deb ... 443s Unpacking dctrl-tools (2.24-3build2) ... 443s Selecting previously unselected package libgfortran-13-dev:s390x. 443s Preparing to unpack .../23-libgfortran-13-dev_13.2.0-21ubuntu1_s390x.deb ... 443s Unpacking libgfortran-13-dev:s390x (13.2.0-21ubuntu1) ... 443s Selecting previously unselected package gfortran-13-s390x-linux-gnu. 443s Preparing to unpack .../24-gfortran-13-s390x-linux-gnu_13.2.0-21ubuntu1_s390x.deb ... 443s Unpacking gfortran-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 443s Selecting previously unselected package gfortran-13. 443s Preparing to unpack .../25-gfortran-13_13.2.0-21ubuntu1_s390x.deb ... 443s Unpacking gfortran-13 (13.2.0-21ubuntu1) ... 443s Selecting previously unselected package gfortran-s390x-linux-gnu. 443s Preparing to unpack .../26-gfortran-s390x-linux-gnu_4%3a13.2.0-7ubuntu1_s390x.deb ... 443s Unpacking gfortran-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 443s Selecting previously unselected package gfortran. 443s Preparing to unpack .../27-gfortran_4%3a13.2.0-7ubuntu1_s390x.deb ... 443s Unpacking gfortran (4:13.2.0-7ubuntu1) ... 443s Selecting previously unselected package icu-devtools. 443s Preparing to unpack .../28-icu-devtools_74.2-1ubuntu1_s390x.deb ... 443s Unpacking icu-devtools (74.2-1ubuntu1) ... 443s Selecting previously unselected package libblas-dev:s390x. 443s Preparing to unpack .../29-libblas-dev_3.12.0-3_s390x.deb ... 443s Unpacking libblas-dev:s390x (3.12.0-3) ... 443s Selecting previously unselected package libbz2-dev:s390x. 443s Preparing to unpack .../30-libbz2-dev_1.0.8-5ubuntu1_s390x.deb ... 443s Unpacking libbz2-dev:s390x (1.0.8-5ubuntu1) ... 443s Selecting previously unselected package libicu-dev:s390x. 443s Preparing to unpack .../31-libicu-dev_74.2-1ubuntu1_s390x.deb ... 443s Unpacking libicu-dev:s390x (74.2-1ubuntu1) ... 444s Selecting previously unselected package libjpeg-turbo8-dev:s390x. 444s Preparing to unpack .../32-libjpeg-turbo8-dev_2.1.5-2ubuntu1_s390x.deb ... 444s Unpacking libjpeg-turbo8-dev:s390x (2.1.5-2ubuntu1) ... 444s Selecting previously unselected package libjpeg8-dev:s390x. 444s Preparing to unpack .../33-libjpeg8-dev_8c-2ubuntu11_s390x.deb ... 444s Unpacking libjpeg8-dev:s390x (8c-2ubuntu11) ... 444s Selecting previously unselected package libjpeg-dev:s390x. 444s Preparing to unpack .../34-libjpeg-dev_8c-2ubuntu11_s390x.deb ... 444s Unpacking libjpeg-dev:s390x (8c-2ubuntu11) ... 444s Selecting previously unselected package liblapack-dev:s390x. 444s Preparing to unpack .../35-liblapack-dev_3.12.0-3_s390x.deb ... 444s Unpacking liblapack-dev:s390x (3.12.0-3) ... 444s Selecting previously unselected package libncurses-dev:s390x. 444s Preparing to unpack .../36-libncurses-dev_6.4+20240113-1ubuntu1_s390x.deb ... 444s Unpacking libncurses-dev:s390x (6.4+20240113-1ubuntu1) ... 444s Selecting previously unselected package libpcre2-16-0:s390x. 444s Preparing to unpack .../37-libpcre2-16-0_10.42-4ubuntu1_s390x.deb ... 444s Unpacking libpcre2-16-0:s390x (10.42-4ubuntu1) ... 444s Selecting previously unselected package libpcre2-32-0:s390x. 444s Preparing to unpack .../38-libpcre2-32-0_10.42-4ubuntu1_s390x.deb ... 444s Unpacking libpcre2-32-0:s390x (10.42-4ubuntu1) ... 444s Selecting previously unselected package libpcre2-posix3:s390x. 444s Preparing to unpack .../39-libpcre2-posix3_10.42-4ubuntu1_s390x.deb ... 444s Unpacking libpcre2-posix3:s390x (10.42-4ubuntu1) ... 444s Selecting previously unselected package libpcre2-dev:s390x. 444s Preparing to unpack .../40-libpcre2-dev_10.42-4ubuntu1_s390x.deb ... 444s Unpacking libpcre2-dev:s390x (10.42-4ubuntu1) ... 444s Selecting previously unselected package libpkgconf3:s390x. 444s Preparing to unpack .../41-libpkgconf3_1.8.1-2_s390x.deb ... 444s Unpacking libpkgconf3:s390x (1.8.1-2) ... 444s Selecting previously unselected package zlib1g-dev:s390x. 444s Preparing to unpack .../42-zlib1g-dev_1%3a1.3.dfsg-3.1ubuntu1_s390x.deb ... 444s Unpacking zlib1g-dev:s390x (1:1.3.dfsg-3.1ubuntu1) ... 444s Selecting previously unselected package libpng-dev:s390x. 444s Preparing to unpack .../43-libpng-dev_1.6.43-3_s390x.deb ... 444s Unpacking libpng-dev:s390x (1.6.43-3) ... 444s Selecting previously unselected package libreadline-dev:s390x. 444s Preparing to unpack .../44-libreadline-dev_8.2-4_s390x.deb ... 444s Unpacking libreadline-dev:s390x (8.2-4) ... 444s Selecting previously unselected package pkgconf-bin. 444s Preparing to unpack .../45-pkgconf-bin_1.8.1-2_s390x.deb ... 444s Unpacking pkgconf-bin (1.8.1-2) ... 444s Selecting previously unselected package pkgconf:s390x. 444s Preparing to unpack .../46-pkgconf_1.8.1-2_s390x.deb ... 444s Unpacking pkgconf:s390x (1.8.1-2) ... 444s Selecting previously unselected package pkg-config:s390x. 444s Preparing to unpack .../47-pkg-config_1.8.1-2_s390x.deb ... 444s Unpacking pkg-config:s390x (1.8.1-2) ... 444s Selecting previously unselected package liblzma-dev:s390x. 444s Preparing to unpack .../48-liblzma-dev_5.6.0-0.2_s390x.deb ... 444s Unpacking liblzma-dev:s390x (5.6.0-0.2) ... 444s Selecting previously unselected package r-base-dev. 444s Preparing to unpack .../49-r-base-dev_4.3.3-2build1_all.deb ... 444s Unpacking r-base-dev (4.3.3-2build1) ... 444s Selecting previously unselected package pkg-r-autopkgtest. 444s Preparing to unpack .../50-pkg-r-autopkgtest_20231212ubuntu1_all.deb ... 444s Unpacking pkg-r-autopkgtest (20231212ubuntu1) ... 444s Selecting previously unselected package autopkgtest-satdep. 444s Preparing to unpack .../51-2-autopkgtest-satdep.deb ... 444s Unpacking autopkgtest-satdep (0) ... 444s Setting up libjpeg-turbo8-dev:s390x (2.1.5-2ubuntu1) ... 444s Setting up libncurses-dev:s390x (6.4+20240113-1ubuntu1) ... 444s Setting up libreadline-dev:s390x (8.2-4) ... 444s Setting up libpcre2-16-0:s390x (10.42-4ubuntu1) ... 444s Setting up libpcre2-32-0:s390x (10.42-4ubuntu1) ... 444s Setting up libpkgconf3:s390x (1.8.1-2) ... 444s Setting up libmpc3:s390x (1.3.1-1) ... 444s Setting up libatomic1:s390x (14-20240315-1ubuntu1) ... 444s Setting up icu-devtools (74.2-1ubuntu1) ... 444s Setting up pkgconf-bin (1.8.1-2) ... 444s Setting up liblzma-dev:s390x (5.6.0-0.2) ... 444s Setting up libubsan1:s390x (14-20240315-1ubuntu1) ... 444s Setting up zlib1g-dev:s390x (1:1.3.dfsg-3.1ubuntu1) ... 444s Setting up libpcre2-posix3:s390x (10.42-4ubuntu1) ... 444s Setting up libasan8:s390x (14-20240315-1ubuntu1) ... 444s Setting up libjpeg8-dev:s390x (8c-2ubuntu11) ... 444s Setting up libisl23:s390x (0.26-3) ... 444s Setting up libicu-dev:s390x (74.2-1ubuntu1) ... 444s Setting up libcc1-0:s390x (14-20240315-1ubuntu1) ... 444s Setting up libblas-dev:s390x (3.12.0-3) ... 444s update-alternatives: using /usr/lib/s390x-linux-gnu/blas/libblas.so to provide /usr/lib/s390x-linux-gnu/libblas.so (libblas.so-s390x-linux-gnu) in auto mode 444s Setting up dctrl-tools (2.24-3build2) ... 444s Setting up libitm1:s390x (14-20240315-1ubuntu1) ... 444s Setting up libbz2-dev:s390x (1.0.8-5ubuntu1) ... 444s Setting up libpcre2-dev:s390x (10.42-4ubuntu1) ... 444s Setting up libpng-dev:s390x (1.6.43-3) ... 444s Setting up libjpeg-dev:s390x (8c-2ubuntu11) ... 444s Setting up pkgconf:s390x (1.8.1-2) ... 444s Setting up cpp-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 444s Setting up liblapack-dev:s390x (3.12.0-3) ... 444s update-alternatives: using /usr/lib/s390x-linux-gnu/lapack/liblapack.so to provide /usr/lib/s390x-linux-gnu/liblapack.so (liblapack.so-s390x-linux-gnu) in auto mode 444s Setting up pkg-config:s390x (1.8.1-2) ... 444s Setting up libgcc-13-dev:s390x (13.2.0-21ubuntu1) ... 444s Setting up libgfortran-13-dev:s390x (13.2.0-21ubuntu1) ... 444s Setting up libstdc++-13-dev:s390x (13.2.0-21ubuntu1) ... 444s Setting up cpp-13 (13.2.0-21ubuntu1) ... 444s Setting up cpp-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 444s Setting up gcc-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 444s Setting up gcc-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 444s Setting up g++-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 444s Setting up gcc-13 (13.2.0-21ubuntu1) ... 444s Setting up cpp (4:13.2.0-7ubuntu1) ... 444s Setting up gfortran-13-s390x-linux-gnu (13.2.0-21ubuntu1) ... 444s Setting up g++-13 (13.2.0-21ubuntu1) ... 444s Setting up gfortran-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 444s Setting up g++-s390x-linux-gnu (4:13.2.0-7ubuntu1) ... 444s Setting up gcc (4:13.2.0-7ubuntu1) ... 444s Setting up gfortran-13 (13.2.0-21ubuntu1) ... 444s Setting up g++ (4:13.2.0-7ubuntu1) ... 444s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 444s Setting up build-essential (12.10ubuntu1) ... 444s Setting up gfortran (4:13.2.0-7ubuntu1) ... 444s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode 444s update-alternatives: warning: skip creation of /usr/share/man/man1/f95.1.gz because associated file /usr/share/man/man1/gfortran.1.gz (of link group f95) doesn't exist 444s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode 444s update-alternatives: warning: skip creation of /usr/share/man/man1/f77.1.gz because associated file /usr/share/man/man1/gfortran.1.gz (of link group f77) doesn't exist 444s Setting up r-base-dev (4.3.3-2build1) ... 444s Setting up pkg-r-autopkgtest (20231212ubuntu1) ... 444s Setting up autopkgtest-satdep (0) ... 444s Processing triggers for man-db (2.12.0-3build4) ... 445s Processing triggers for install-info (7.1-3build1) ... 445s Processing triggers for libc-bin (2.39-0ubuntu6) ... 448s (Reading database ... 97075 files and directories currently installed.) 448s Removing autopkgtest-satdep (0) ... 449s autopkgtest [23:32:54]: test pkg-r-autopkgtest: /usr/share/dh-r/pkg-r-autopkgtest 449s autopkgtest [23:32:54]: test pkg-r-autopkgtest: [----------------------- 449s Test: Try to load the R library unitizer 449s 449s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 449s Copyright (C) 2024 The R Foundation for Statistical Computing 449s Platform: s390x-ibm-linux-gnu (64-bit) 449s 449s R is free software and comes with ABSOLUTELY NO WARRANTY. 449s You are welcome to redistribute it under certain conditions. 449s Type 'license()' or 'licence()' for distribution details. 449s 449s R is a collaborative project with many contributors. 449s Type 'contributors()' for more information and 449s 'citation()' on how to cite R or R packages in publications. 449s 449s Type 'demo()' for some demos, 'help()' for on-line help, or 449s 'help.start()' for an HTML browser interface to help. 449s Type 'q()' to quit R. 449s 449s > library('unitizer') 449s State tracking is disabled by default to comply with CRAN policies. Add `options(unitizer.state='suggested')` to your 'Rprofile' file to enable, or `options(unitizer.state='off')` to quash this message without enabling. Prior to enabling, be sure to read > 449s `?unitizerState`,in particular the 'CRAN non-compliance' section. 449s > 449s Other tests are currently unsupported! 449s They will be progressively added. 450s autopkgtest [23:32:55]: test pkg-r-autopkgtest: -----------------------] 450s pkg-r-autopkgtest PASS 450s autopkgtest [23:32:55]: test pkg-r-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 451s autopkgtest [23:32:56]: @@@@@@@@@@@@@@@@@@@@ summary 451s run-unit-test PASS 451s pkg-r-autopkgtest PASS 462s Creating nova instance adt-noble-s390x-r-cran-unitizer-20240326-232525-juju-7f2275-prod-proposed-migration-environment-3-47e20f7b-1633-4e2f-94b0-9758f9fd7af0 from image adt/ubuntu-noble-s390x-server-20240326.img (UUID c527e0e4-2e65-4e86-ad63-05d7f665f2fb)...