0s autopkgtest [02:07:19]: starting date and time: 2024-03-23 02:07:19+0000 0s autopkgtest [02:07:19]: git checkout: 4a1cd702 l/adt_testbed: don't blame the testbed for unsolvable build deps 0s autopkgtest [02:07:19]: host juju-7f2275-prod-proposed-migration-environment-4; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.ua6wfmow/out --timeout-copy=6000 --setup-commands 'ln -s /dev/null /etc/systemd/system/bluetooth.service; printf "http_proxy=http://squid.internal:3128\nhttps_proxy=http://squid.internal:3128\nno_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\n" >> /etc/environment' --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 -- lxd -r lxd-armhf-10.145.243.179 lxd-armhf-10.145.243.179:autopkgtest/ubuntu/noble/armhf 24s autopkgtest [02:07:43]: testbed dpkg architecture: armhf 26s autopkgtest [02:07:45]: testbed apt version: 2.7.12 26s autopkgtest [02:07:45]: @@@@@@@@@@@@@@@@@@@@ test bed setup 33s Get:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease [117 kB] 34s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/universe Sources [4035 kB] 34s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/multiverse Sources [57.7 kB] 34s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main Sources [496 kB] 34s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/restricted Sources [6540 B] 34s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main armhf Packages [637 kB] 34s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main armhf c-n-f Metadata [2492 B] 34s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/restricted armhf Packages [1372 B] 34s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/restricted armhf c-n-f Metadata [116 B] 34s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf Packages [4061 kB] 34s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf c-n-f Metadata [7776 B] 34s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/multiverse armhf Packages [49.1 kB] 34s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/multiverse armhf c-n-f Metadata [116 B] 37s Fetched 9471 kB in 2s (5487 kB/s) 37s Reading package lists... 46s tee: /proc/self/fd/2: Permission denied 67s Hit:1 http://ftpmaster.internal/ubuntu noble-proposed InRelease 67s Hit:2 http://ftpmaster.internal/ubuntu noble InRelease 67s Hit:3 http://ftpmaster.internal/ubuntu noble-updates InRelease 67s Hit:4 http://ftpmaster.internal/ubuntu noble-security InRelease 69s Reading package lists... 69s Reading package lists... 69s Building dependency tree... 69s Reading state information... 70s Calculating upgrade... 70s The following packages were automatically installed and are no longer required: 70s linux-headers-6.8.0-11 python3-lib2to3 70s Use 'apt autoremove' to remove them. 70s The following packages will be REMOVED: 70s libapt-pkg6.0 libarchive13 libatm1 libcurl3-gnutls libcurl4 libdb5.3 libelf1 70s libext2fs2 libgdbm-compat4 libgdbm6 libglib2.0-0 libgnutls30 libgpgme11 70s libhogweed6 libmagic1 libnetplan0 libnettle8 libnpth0 libnvme1 libparted2 70s libpcap0.8 libperl5.38 libpng16-16 libpsl5 libreadline8 libreiserfscore0 70s libssl3 libtirpc3 libuv1 linux-headers-6.8.0-11-generic python3-distutils 70s The following NEW packages will be installed: 70s libapt-pkg6.0t64 libarchive13t64 libatm1t64 libcurl3t64-gnutls libcurl4t64 70s libdb5.3t64 libelf1t64 libext2fs2t64 libgdbm-compat4t64 libgdbm6t64 70s libglib2.0-0t64 libgnutls30t64 libgpgme11t64 libhogweed6t64 libmagic1t64 71s libnetplan1 libnettle8t64 libnpth0t64 libnvme1t64 libparted2t64 71s libpcap0.8t64 libperl5.38t64 libpng16-16t64 libpsl5t64 libreadline8t64 71s libreiserfscore0t64 libssl3t64 libtirpc3t64 libuv1t64 linux-headers-6.8.0-20 71s linux-headers-6.8.0-20-generic xdg-user-dirs 71s The following packages have been kept back: 71s multipath-tools 71s The following packages will be upgraded: 71s apparmor apt apt-utils bind9-dnsutils bind9-host bind9-libs binutils 71s binutils-arm-linux-gnueabihf binutils-common bolt bsdextrautils bsdutils 71s btrfs-progs coreutils cryptsetup-bin curl dbus dbus-bin dbus-daemon 71s dbus-session-bus-common dbus-system-bus-common dbus-user-session dhcpcd-base 71s dirmngr dmsetup dpkg dpkg-dev e2fsprogs e2fsprogs-l10n eject fdisk file ftp 71s fwupd gawk gcc-13-base gcc-14-base gir1.2-girepository-2.0 gir1.2-glib-2.0 71s gnupg gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpgconf gpgsm gpgv 71s groff-base ibverbs-providers inetutils-telnet info initramfs-tools 71s initramfs-tools-bin initramfs-tools-core install-info iproute2 jq keyboxd 71s kmod kpartx krb5-locales libapparmor1 libaudit-common libaudit1 libbinutils 71s libblkid1 libblockdev-crypto3 libblockdev-fs3 libblockdev-loop3 71s libblockdev-mdraid3 libblockdev-nvme3 libblockdev-part3 libblockdev-swap3 71s libblockdev-utils3 libblockdev3 libbpf1 libbrotli1 libc-bin libc6 libcap-ng0 71s libcom-err2 libcryptsetup12 libctf-nobfd0 libctf0 libdbus-1-3 71s libdebconfclient0 libdevmapper1.02.1 libdpkg-perl libevent-core-2.1-7 71s libexpat1 libfdisk1 libfido2-1 libftdi1-2 libfwupd2 libgcc-s1 71s libgirepository-1.0-1 libglib2.0-data libgssapi-krb5-2 libgudev-1.0-0 71s libgusb2 libibverbs1 libjcat1 libjq1 libjson-glib-1.0-0 71s libjson-glib-1.0-common libk5crypto3 libkmod2 libkrb5-3 libkrb5support0 71s libldap-common libldap2 liblocale-gettext-perl liblzma5 libmagic-mgc 71s libmbim-glib4 libmbim-proxy libmm-glib0 libmount1 libnghttp2-14 libnsl2 71s libnss-systemd libpam-modules libpam-modules-bin libpam-runtime 71s libpam-systemd libpam0g libplymouth5 libpolkit-agent-1-0 71s libpolkit-gobject-1-0 libprotobuf-c1 libpython3-stdlib libpython3.11-minimal 71s libpython3.11-stdlib libpython3.12-minimal libpython3.12-stdlib libqmi-glib5 71s libqmi-proxy libqrtr-glib0 librtmp1 libsasl2-2 libsasl2-modules 71s libsasl2-modules-db libseccomp2 libselinux1 libsemanage-common libsemanage2 71s libsframe1 libslang2 libsmartcols1 libsqlite3-0 libss2 libssh-4 libstdc++6 71s libsystemd-shared libsystemd0 libtext-charwidth-perl libtext-iconv-perl 71s libtirpc-common libudev1 libudisks2-0 libusb-1.0-0 libuuid1 libvolume-key1 71s libxml2 libxmlb2 libxmuu1 linux-headers-generic locales logsave lshw lsof 71s man-db mount mtr-tiny netplan-generator netplan.io openssh-client 71s openssh-server openssh-sftp-server openssl parted perl perl-base 71s perl-modules-5.38 pinentry-curses plymouth plymouth-theme-ubuntu-text psmisc 71s python-apt-common python3 python3-apt python3-cryptography python3-dbus 71s python3-gdbm python3-gi python3-lib2to3 python3-minimal python3-netplan 71s python3-pkg-resources python3-pyrsistent python3-setuptools 71s python3-typing-extensions python3-yaml python3.11 python3.11-minimal 71s python3.12 python3.12-minimal readline-common rsync shared-mime-info sudo 71s systemd systemd-dev systemd-resolved systemd-sysv systemd-timesyncd tcpdump 71s telnet tnftp ubuntu-pro-client ubuntu-pro-client-l10n udev udisks2 usb.ids 71s util-linux uuid-runtime vim-common vim-tiny wget xxd xz-utils zlib1g 71s 233 upgraded, 32 newly installed, 31 to remove and 1 not upgraded. 71s Need to get 106 MB of archives. 71s After this operation, 84.4 MB of additional disk space will be used. 71s Get:1 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bsdutils armhf 1:2.39.3-9ubuntu2 [102 kB] 71s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-14-base armhf 14-20240315-1ubuntu1 [47.0 kB] 71s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgcc-s1 armhf 14-20240315-1ubuntu1 [41.5 kB] 71s Get:4 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libstdc++6 armhf 14-20240315-1ubuntu1 [714 kB] 71s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libc6 armhf 2.39-0ubuntu6 [2827 kB] 71s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libbrotli1 armhf 1.1.0-2build1 [319 kB] 71s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgssapi-krb5-2 armhf 1.20.1-5.1ubuntu1 [119 kB] 71s Get:8 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libkrb5-3 armhf 1.20.1-5.1ubuntu1 [321 kB] 71s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libkrb5support0 armhf 1.20.1-5.1ubuntu1 [31.4 kB] 71s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libk5crypto3 armhf 1.20.1-5.1ubuntu1 [78.6 kB] 71s Get:11 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcom-err2 armhf 1.47.0-2.4~exp1ubuntu2 [21.9 kB] 71s Get:12 http://ftpmaster.internal/ubuntu noble-proposed/main armhf zlib1g armhf 1:1.3.dfsg-3.1ubuntu1 [49.2 kB] 71s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main armhf librtmp1 armhf 2.4+20151223.gitfa8646d.1-2build6 [51.3 kB] 71s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main armhf udisks2 armhf 2.10.1-6 [276 kB] 71s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libudisks2-0 armhf 2.10.1-6 [143 kB] 71s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblkid1 armhf 2.39.3-9ubuntu2 [160 kB] 71s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main armhf liblzma5 armhf 5.6.0-0.2 [117 kB] 71s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main armhf kmod armhf 31+20240202-2ubuntu4 [91.8 kB] 71s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libkmod2 armhf 31+20240202-2ubuntu4 [44.9 kB] 71s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-dev all 255.4-1ubuntu5 [103 kB] 71s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-timesyncd armhf 255.4-1ubuntu5 [36.0 kB] 71s Get:22 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-session-bus-common all 1.14.10-4ubuntu2 [80.3 kB] 71s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libaudit-common all 1:3.1.2-2.1 [5674 B] 71s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcap-ng0 armhf 0.8.4-2build1 [13.5 kB] 71s Get:25 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libaudit1 armhf 1:3.1.2-2.1 [44.3 kB] 71s Get:26 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam0g armhf 1.5.3-5ubuntu3 [62.0 kB] 71s Get:27 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libselinux1 armhf 3.5-2ubuntu1 [70.9 kB] 72s Get:28 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcurl4t64 armhf 8.5.0-2ubuntu7 [296 kB] 72s Get:29 http://ftpmaster.internal/ubuntu noble-proposed/main armhf curl armhf 8.5.0-2ubuntu7 [219 kB] 72s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpsl5t64 armhf 0.21.2-1.1 [55.7 kB] 72s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main armhf wget armhf 1.21.4-1ubuntu2 [317 kB] 72s Get:32 http://ftpmaster.internal/ubuntu noble-proposed/main armhf tnftp armhf 20230507-2build1 [98.6 kB] 72s Get:33 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpcap0.8t64 armhf 1.10.4-4.1ubuntu1 [137 kB] 72s Get:34 http://ftpmaster.internal/ubuntu noble-proposed/main armhf tcpdump armhf 4.99.4-3ubuntu2 [425 kB] 72s Get:35 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsystemd-shared armhf 255.4-1ubuntu5 [2009 kB] 72s Get:36 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-resolved armhf 255.4-1ubuntu5 [289 kB] 72s Get:37 http://ftpmaster.internal/ubuntu noble-proposed/main armhf sudo armhf 1.9.15p5-3ubuntu3 [936 kB] 72s Get:38 http://ftpmaster.internal/ubuntu noble-proposed/main armhf rsync armhf 3.2.7-1build1 [413 kB] 72s Get:39 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-cryptography armhf 41.0.7-4build2 [788 kB] 72s Get:40 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssl armhf 3.0.13-0ubuntu2 [975 kB] 72s Get:41 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssh-sftp-server armhf 1:9.6p1-3ubuntu11 [35.5 kB] 72s Get:42 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssh-client armhf 1:9.6p1-3ubuntu11 [890 kB] 72s Get:43 http://ftpmaster.internal/ubuntu noble-proposed/main armhf openssh-server armhf 1:9.6p1-3ubuntu11 [503 kB] 72s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-headers-6.8.0-20 all 6.8.0-20.20 [13.6 MB] 72s Get:45 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-headers-6.8.0-20-generic armhf 6.8.0-20.20 [1287 kB] 72s Get:46 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-headers-generic armhf 6.8.0-20.20+1 [9610 B] 72s Get:47 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libssl3t64 armhf 3.0.13-0ubuntu2 [1558 kB] 72s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnss-systemd armhf 255.4-1ubuntu5 [148 kB] 72s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libudev1 armhf 255.4-1ubuntu5 [166 kB] 72s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd armhf 255.4-1ubuntu5 [3502 kB] 72s Get:51 http://ftpmaster.internal/ubuntu noble-proposed/main armhf udev armhf 255.4-1ubuntu5 [1852 kB] 72s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main armhf systemd-sysv armhf 255.4-1ubuntu5 [11.9 kB] 72s Get:53 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-systemd armhf 255.4-1ubuntu5 [216 kB] 72s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsystemd0 armhf 255.4-1ubuntu5 [410 kB] 72s Get:55 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-modules-bin armhf 1.5.3-5ubuntu3 [47.0 kB] 72s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-modules armhf 1.5.3-5ubuntu3 [261 kB] 72s Get:57 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpam-runtime all 1.5.3-5ubuntu3 [40.8 kB] 72s Get:58 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-user-session armhf 1.14.10-4ubuntu2 [9962 B] 72s Get:59 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libapparmor1 armhf 4.0.0-beta3-0ubuntu2 [45.0 kB] 72s Get:60 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libexpat1 armhf 2.6.1-2 [65.9 kB] 72s Get:61 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-system-bus-common all 1.14.10-4ubuntu2 [81.5 kB] 72s Get:62 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-bin armhf 1.14.10-4ubuntu2 [37.1 kB] 72s Get:63 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus armhf 1.14.10-4ubuntu2 [28.1 kB] 72s Get:64 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dbus-daemon armhf 1.14.10-4ubuntu2 [109 kB] 72s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdbus-1-3 armhf 1.14.10-4ubuntu2 [190 kB] 72s Get:66 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmount1 armhf 2.39.3-9ubuntu2 [171 kB] 72s Get:67 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libseccomp2 armhf 2.5.5-1ubuntu2 [49.5 kB] 72s Get:68 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdevmapper1.02.1 armhf 2:1.02.185-3ubuntu2 [135 kB] 72s Get:69 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libuuid1 armhf 2.39.3-9ubuntu2 [34.4 kB] 72s Get:70 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcryptsetup12 armhf 2:2.7.0-1ubuntu2 [238 kB] 72s Get:71 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfdisk1 armhf 2.39.3-9ubuntu2 [196 kB] 72s Get:72 http://ftpmaster.internal/ubuntu noble-proposed/main armhf mount armhf 2.39.3-9ubuntu2 [134 kB] 72s Get:73 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-utils3 armhf 3.1.0-1build1 [16.9 kB] 73s Get:74 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libvolume-key1 armhf 0.3.12-7build1 [38.4 kB] 73s Get:75 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjcat1 armhf 0.2.0-2build2 [30.4 kB] 73s Get:76 http://ftpmaster.internal/ubuntu noble-proposed/main armhf parted armhf 3.6-3.1build2 [39.4 kB] 73s Get:77 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libparted2t64 armhf 3.6-3.1build2 [143 kB] 73s Get:78 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.12 armhf 3.12.2-4build3 [645 kB] 73s Get:79 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.12-minimal armhf 3.12.2-4build3 [1942 kB] 73s Get:80 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.12-stdlib armhf 3.12.2-4build3 [1906 kB] 73s Get:81 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.12-minimal armhf 3.12.2-4build3 [816 kB] 73s Get:82 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsasl2-modules-db armhf 2.1.28+dfsg1-5ubuntu1 [19.0 kB] 73s Get:83 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.11 armhf 3.11.8-1build4 [589 kB] 73s Get:84 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3.11-minimal armhf 3.11.8-1build4 [1795 kB] 73s Get:85 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.11-stdlib armhf 3.11.8-1build4 [1810 kB] 73s Get:86 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3.11-minimal armhf 3.11.8-1build4 [826 kB] 73s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsqlite3-0 armhf 3.45.1-1ubuntu1 [599 kB] 73s Get:88 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtext-iconv-perl armhf 1.7-8build2 [12.7 kB] 73s Get:89 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtext-charwidth-perl armhf 0.04-11build2 [8962 B] 73s Get:90 http://ftpmaster.internal/ubuntu noble-proposed/main armhf perl-modules-5.38 all 5.38.2-3.2 [3110 kB] 73s Get:91 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdb5.3t64 armhf 5.3.28+dfsg2-6 [661 kB] 73s Get:92 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-gdbm armhf 3.12.2-3ubuntu2 [17.1 kB] 73s Get:93 http://ftpmaster.internal/ubuntu noble-proposed/main armhf man-db armhf 2.12.0-3build4 [1196 kB] 73s Get:94 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgdbm6t64 armhf 1.23-5.1 [30.3 kB] 73s Get:95 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgdbm-compat4t64 armhf 1.23-5.1 [6208 B] 73s Get:96 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libperl5.38t64 armhf 5.38.2-3.2 [4101 kB] 73s Get:97 http://ftpmaster.internal/ubuntu noble-proposed/main armhf perl armhf 5.38.2-3.2 [231 kB] 73s Get:98 http://ftpmaster.internal/ubuntu noble-proposed/main armhf perl-base armhf 5.38.2-3.2 [1671 kB] 73s Get:99 http://ftpmaster.internal/ubuntu noble-proposed/main armhf liblocale-gettext-perl armhf 1.07-6ubuntu4 [15.0 kB] 73s Get:100 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnettle8t64 armhf 3.9.1-2.2 [187 kB] 73s Get:101 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libhogweed6t64 armhf 3.9.1-2.2 [187 kB] 73s Get:102 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgnutls30t64 armhf 3.8.3-1.1ubuntu2 [1046 kB] 74s Get:103 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libldap2 armhf 2.6.7+dfsg-1~exp1ubuntu6 [172 kB] 74s Get:104 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcurl3t64-gnutls armhf 8.5.0-2ubuntu7 [290 kB] 74s Get:105 http://ftpmaster.internal/ubuntu noble-proposed/main armhf shared-mime-info armhf 2.4-1build1 [470 kB] 74s Get:106 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gir1.2-girepository-2.0 armhf 1.79.1-1ubuntu6 [24.8 kB] 74s Get:107 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gir1.2-glib-2.0 armhf 2.79.3-3ubuntu5 [182 kB] 74s Get:108 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgirepository-1.0-1 armhf 1.79.1-1ubuntu6 [106 kB] 74s Get:109 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-gi armhf 3.47.0-3build1 [219 kB] 74s Get:110 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-dbus armhf 1.3.2-5build2 [94.7 kB] 74s Get:111 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnetplan1 armhf 1.0-1 [113 kB] 74s Get:112 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-netplan armhf 1.0-1 [22.5 kB] 74s Get:113 http://ftpmaster.internal/ubuntu noble-proposed/main armhf netplan-generator armhf 1.0-1 [58.7 kB] 74s Get:114 http://ftpmaster.internal/ubuntu noble-proposed/main armhf initramfs-tools-bin armhf 0.142ubuntu23 [20.3 kB] 74s Get:115 http://ftpmaster.internal/ubuntu noble-proposed/main armhf initramfs-tools-core all 0.142ubuntu23 [50.1 kB] 74s Get:116 http://ftpmaster.internal/ubuntu noble-proposed/main armhf initramfs-tools all 0.142ubuntu23 [9058 B] 74s Get:117 http://ftpmaster.internal/ubuntu noble-proposed/main armhf netplan.io armhf 1.0-1 [64.3 kB] 74s Get:118 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxmlb2 armhf 0.3.15-1build1 [57.0 kB] 74s Get:119 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libqrtr-glib0 armhf 1.2.2-1ubuntu3 [15.4 kB] 74s Get:120 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libqmi-glib5 armhf 1.35.2-0ubuntu1 [908 kB] 74s Get:121 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libqmi-proxy armhf 1.35.2-0ubuntu1 [5732 B] 74s Get:122 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpolkit-agent-1-0 armhf 124-1ubuntu1 [15.3 kB] 74s Get:123 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpolkit-gobject-1-0 armhf 124-1ubuntu1 [44.1 kB] 74s Get:124 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libglib2.0-0t64 armhf 2.79.3-3ubuntu5 [1414 kB] 74s Get:125 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfwupd2 armhf 1.9.15-1 [123 kB] 74s Get:126 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libarchive13t64 armhf 3.7.2-1.1ubuntu2 [330 kB] 74s Get:127 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fwupd armhf 1.9.15-1 [4349 kB] 74s Get:128 http://ftpmaster.internal/ubuntu noble-proposed/main armhf apt-utils armhf 2.7.14 [210 kB] 74s Get:129 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libapt-pkg6.0t64 armhf 2.7.14 [986 kB] 74s Get:130 http://ftpmaster.internal/ubuntu noble-proposed/main armhf apt armhf 2.7.14 [1368 kB] 74s Get:131 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ubuntu-pro-client-l10n armhf 31.2.1 [19.4 kB] 74s Get:132 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ubuntu-pro-client armhf 31.2.1 [216 kB] 74s Get:133 http://ftpmaster.internal/ubuntu noble-proposed/main armhf keyboxd armhf 2.4.4-2ubuntu15 [111 kB] 74s Get:134 http://ftpmaster.internal/ubuntu noble/main armhf libnpth0t64 armhf 1.6-3.1 [6940 B] 74s Get:135 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpgv armhf 2.4.4-2ubuntu15 [224 kB] 74s Get:136 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpg armhf 2.4.4-2ubuntu15 [524 kB] 74s Get:137 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpg-wks-client armhf 2.4.4-2ubuntu15 [87.4 kB] 74s Get:138 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gnupg-utils armhf 2.4.4-2ubuntu15 [158 kB] 74s Get:139 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpg-agent armhf 2.4.4-2ubuntu15 [235 kB] 74s Get:140 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpgsm armhf 2.4.4-2ubuntu15 [241 kB] 74s Get:141 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libreadline8t64 armhf 8.2-3.1build1 [129 kB] 74s Get:142 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gawk armhf 1:5.2.1-2build2 [415 kB] 74s Get:143 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fdisk armhf 2.39.3-9ubuntu2 [135 kB] 74s Get:144 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gpgconf armhf 2.4.4-2ubuntu15 [115 kB] 74s Get:145 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dirmngr armhf 2.4.4-2ubuntu15 [346 kB] 74s Get:146 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gnupg all 2.4.4-2ubuntu15 [359 kB] 74s Get:147 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-apt armhf 2.7.6build1 [162 kB] 74s Get:148 http://ftpmaster.internal/ubuntu noble-proposed/main armhf pinentry-curses armhf 1.2.1-3ubuntu4 [36.7 kB] 74s Get:149 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-yaml armhf 6.0.1-2build1 [117 kB] 74s Get:150 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python-apt-common all 2.7.6build1 [19.8 kB] 74s Get:151 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-setuptools all 68.1.2-2ubuntu1 [396 kB] 74s Get:152 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-pkg-resources all 68.1.2-2ubuntu1 [168 kB] 74s Get:153 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dpkg armhf 1.22.6ubuntu4 [1229 kB] 74s Get:154 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-minimal armhf 3.12.2-0ubuntu1 [27.1 kB] 74s Get:155 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3 armhf 3.12.2-0ubuntu1 [24.1 kB] 74s Get:156 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpython3-stdlib armhf 3.12.2-0ubuntu1 [9802 B] 74s Get:157 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsmartcols1 armhf 2.39.3-9ubuntu2 [117 kB] 74s Get:158 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bsdextrautils armhf 2.39.3-9ubuntu2 [78.7 kB] 74s Get:159 http://ftpmaster.internal/ubuntu noble-proposed/main armhf groff-base armhf 1.23.0-3build1 [946 kB] 75s Get:160 http://ftpmaster.internal/ubuntu noble-proposed/main armhf readline-common all 8.2-3.1build1 [56.5 kB] 75s Get:161 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgpgme11t64 armhf 1.18.0-4.1ubuntu3 [120 kB] 75s Get:162 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-crypto3 armhf 3.1.0-1build1 [20.3 kB] 75s Get:163 http://ftpmaster.internal/ubuntu noble-proposed/main armhf e2fsprogs-l10n all 1.47.0-2.4~exp1ubuntu2 [5996 B] 75s Get:164 http://ftpmaster.internal/ubuntu noble-proposed/main armhf logsave armhf 1.47.0-2.4~exp1ubuntu2 [21.9 kB] 75s Get:165 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dhcpcd-base armhf 1:10.0.6-1ubuntu2 [186 kB] 75s Get:166 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-fs3 armhf 3.1.0-1build1 [34.4 kB] 75s Get:167 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libreiserfscore0t64 armhf 1:3.6.27-7.1 [66.2 kB] 75s Get:168 http://ftpmaster.internal/ubuntu noble-proposed/main armhf btrfs-progs armhf 6.6.3-1.1build1 [852 kB] 75s Get:169 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libext2fs2t64 armhf 1.47.0-2.4~exp1ubuntu2 [201 kB] 75s Get:170 http://ftpmaster.internal/ubuntu noble-proposed/main armhf e2fsprogs armhf 1.47.0-2.4~exp1ubuntu2 [571 kB] 75s Get:171 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-loop3 armhf 3.1.0-1build1 [6502 B] 75s Get:172 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-mdraid3 armhf 3.1.0-1build1 [13.3 kB] 75s Get:173 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-nvme3 armhf 3.1.0-1build1 [17.5 kB] 75s Get:174 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnvme1t64 armhf 1.8-3 [67.5 kB] 75s Get:175 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-part3 armhf 3.1.0-1build1 [16.4 kB] 75s Get:176 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev-swap3 armhf 3.1.0-1build1 [8894 B] 75s Get:177 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libblockdev3 armhf 3.1.0-1build1 [42.9 kB] 75s Get:178 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgudev-1.0-0 armhf 1:238-3ubuntu2 [13.6 kB] 75s Get:179 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxml2 armhf 2.9.14+dfsg-1.3ubuntu2 [595 kB] 75s Get:180 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libbpf1 armhf 1:1.3.0-2build1 [146 kB] 75s Get:181 http://ftpmaster.internal/ubuntu noble-proposed/main armhf iproute2 armhf 6.1.0-1ubuntu5 [1060 kB] 75s Get:182 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libelf1t64 armhf 0.190-1.1build2 [49.9 kB] 75s Get:183 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtirpc-common all 1.3.4+ds-1.1 [8018 B] 75s Get:184 http://ftpmaster.internal/ubuntu noble-proposed/main armhf lsof armhf 4.95.0-1build2 [248 kB] 75s Get:185 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnsl2 armhf 1.3.0-3build2 [36.5 kB] 75s Get:186 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtirpc3t64 armhf 1.3.4+ds-1.1 [73.2 kB] 75s Get:187 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmbim-proxy armhf 1.31.2-0ubuntu2 [5748 B] 75s Get:188 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmbim-glib4 armhf 1.31.2-0ubuntu2 [216 kB] 75s Get:189 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjson-glib-1.0-common all 1.8.0-2build1 [4210 B] 75s Get:190 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjson-glib-1.0-0 armhf 1.8.0-2build1 [61.2 kB] 75s Get:191 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libnghttp2-14 armhf 1.59.0-1build1 [68.1 kB] 75s Get:192 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libssh-4 armhf 0.10.6-2build1 [169 kB] 75s Get:193 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libusb-1.0-0 armhf 2:1.0.27-1 [48.7 kB] 75s Get:194 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgusb2 armhf 0.4.8-1build1 [34.6 kB] 75s Get:195 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmm-glib0 armhf 1.23.4-0ubuntu1 [214 kB] 75s Get:196 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libprotobuf-c1 armhf 1.4.1-1ubuntu3 [17.7 kB] 75s Get:197 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsasl2-2 armhf 2.1.28+dfsg1-5ubuntu1 [49.7 kB] 75s Get:198 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libibverbs1 armhf 50.0-2build1 [57.9 kB] 75s Get:199 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfido2-1 armhf 1.14.0-1build1 [75.8 kB] 75s Get:200 http://ftpmaster.internal/ubuntu noble-proposed/main armhf coreutils armhf 9.4-3ubuntu3 [1280 kB] 75s Get:201 http://ftpmaster.internal/ubuntu noble-proposed/main armhf util-linux armhf 2.39.3-9ubuntu2 [1216 kB] 75s Get:202 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libc-bin armhf 2.39-0ubuntu6 [530 kB] 75s Get:203 http://ftpmaster.internal/ubuntu noble-proposed/main armhf file armhf 1:5.45-3 [21.1 kB] 75s Get:204 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmagic-mgc armhf 1:5.45-3 [307 kB] 76s Get:205 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libmagic1t64 armhf 1:5.45-3 [81.4 kB] 76s Get:206 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libplymouth5 armhf 24.004.60-1ubuntu6 [140 kB] 76s Get:207 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpng16-16t64 armhf 1.6.43-3 [166 kB] 76s Get:208 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bind9-host armhf 1:9.18.24-0ubuntu3 [47.4 kB] 76s Get:209 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bind9-dnsutils armhf 1:9.18.24-0ubuntu3 [149 kB] 76s Get:210 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bind9-libs armhf 1:9.18.24-0ubuntu3 [1148 kB] 76s Get:211 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libuv1t64 armhf 1.48.0-1.1 [82.9 kB] 76s Get:212 http://ftpmaster.internal/ubuntu noble-proposed/main armhf uuid-runtime armhf 2.39.3-9ubuntu2 [41.7 kB] 76s Get:213 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdebconfclient0 armhf 0.271ubuntu2 [10.8 kB] 76s Get:214 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsemanage-common all 3.5-1build4 [10.1 kB] 76s Get:215 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsemanage2 armhf 3.5-1build4 [84.5 kB] 76s Get:216 http://ftpmaster.internal/ubuntu noble-proposed/main armhf install-info armhf 7.1-3build1 [60.5 kB] 76s Get:217 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-13-base armhf 13.2.0-19ubuntu1 [47.7 kB] 76s Get:218 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libss2 armhf 1.47.0-2.4~exp1ubuntu2 [14.7 kB] 76s Get:219 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dmsetup armhf 2:1.02.185-3ubuntu2 [81.1 kB] 76s Get:220 http://ftpmaster.internal/ubuntu noble-proposed/main armhf eject armhf 2.39.3-9ubuntu2 [43.2 kB] 76s Get:221 http://ftpmaster.internal/ubuntu noble-proposed/main armhf krb5-locales all 1.20.1-5.1ubuntu1 [13.9 kB] 76s Get:222 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libglib2.0-data all 2.79.3-3ubuntu5 [46.6 kB] 76s Get:223 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libslang2 armhf 2.3.3-3build1 [478 kB] 76s Get:224 http://ftpmaster.internal/ubuntu noble-proposed/main armhf locales all 2.39-0ubuntu6 [4232 kB] 76s Get:225 http://ftpmaster.internal/ubuntu noble-proposed/main armhf vim-tiny armhf 2:9.1.0016-1ubuntu5 [665 kB] 76s Get:226 http://ftpmaster.internal/ubuntu noble-proposed/main armhf vim-common all 2:9.1.0016-1ubuntu5 [385 kB] 76s Get:227 http://ftpmaster.internal/ubuntu noble/main armhf xdg-user-dirs armhf 0.18-1 [17.3 kB] 76s Get:228 http://ftpmaster.internal/ubuntu noble-proposed/main armhf xxd armhf 2:9.1.0016-1ubuntu5 [62.4 kB] 76s Get:229 http://ftpmaster.internal/ubuntu noble-proposed/main armhf apparmor armhf 4.0.0-beta3-0ubuntu2 [562 kB] 76s Get:230 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ftp all 20230507-2build1 [4724 B] 76s Get:231 http://ftpmaster.internal/ubuntu noble-proposed/main armhf inetutils-telnet armhf 2:2.5-3ubuntu3 [90.7 kB] 76s Get:232 http://ftpmaster.internal/ubuntu noble-proposed/main armhf info armhf 7.1-3build1 [127 kB] 76s Get:233 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxmuu1 armhf 2:1.1.3-3build1 [8004 B] 76s Get:234 http://ftpmaster.internal/ubuntu noble-proposed/main armhf lshw armhf 02.19.git.2021.06.19.996aaad9c7-2build2 [310 kB] 76s Get:235 http://ftpmaster.internal/ubuntu noble-proposed/main armhf mtr-tiny armhf 0.95-1.1build1 [51.7 kB] 76s Get:236 http://ftpmaster.internal/ubuntu noble-proposed/main armhf plymouth-theme-ubuntu-text armhf 24.004.60-1ubuntu6 [9818 B] 76s Get:237 http://ftpmaster.internal/ubuntu noble-proposed/main armhf plymouth armhf 24.004.60-1ubuntu6 [142 kB] 76s Get:238 http://ftpmaster.internal/ubuntu noble-proposed/main armhf psmisc armhf 23.7-1 [176 kB] 76s Get:239 http://ftpmaster.internal/ubuntu noble-proposed/main armhf telnet all 0.17+2.5-3ubuntu3 [3682 B] 76s Get:240 http://ftpmaster.internal/ubuntu noble-proposed/main armhf usb.ids all 2024.03.18-1 [223 kB] 76s Get:241 http://ftpmaster.internal/ubuntu noble-proposed/main armhf xz-utils armhf 5.6.0-0.2 [271 kB] 76s Get:242 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libctf0 armhf 2.42-4ubuntu1 [87.7 kB] 76s Get:243 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libctf-nobfd0 armhf 2.42-4ubuntu1 [88.0 kB] 76s Get:244 http://ftpmaster.internal/ubuntu noble-proposed/main armhf binutils-arm-linux-gnueabihf armhf 2.42-4ubuntu1 [2925 kB] 76s Get:245 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libbinutils armhf 2.42-4ubuntu1 [464 kB] 76s Get:246 http://ftpmaster.internal/ubuntu noble-proposed/main armhf binutils armhf 2.42-4ubuntu1 [3078 B] 76s Get:247 http://ftpmaster.internal/ubuntu noble-proposed/main armhf binutils-common armhf 2.42-4ubuntu1 [217 kB] 76s Get:248 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsframe1 armhf 2.42-4ubuntu1 [13.1 kB] 76s Get:249 http://ftpmaster.internal/ubuntu noble-proposed/main armhf bolt armhf 0.9.6-2build1 [138 kB] 76s Get:250 http://ftpmaster.internal/ubuntu noble-proposed/main armhf cryptsetup-bin armhf 2:2.7.0-1ubuntu2 [214 kB] 76s Get:251 http://ftpmaster.internal/ubuntu noble-proposed/main armhf dpkg-dev all 1.22.6ubuntu4 [1074 kB] 76s Get:252 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libdpkg-perl all 1.22.6ubuntu4 [268 kB] 76s Get:253 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gnupg-l10n all 2.4.4-2ubuntu15 [65.8 kB] 76s Get:254 http://ftpmaster.internal/ubuntu noble-proposed/main armhf ibverbs-providers armhf 50.0-2build1 [27.4 kB] 76s Get:255 http://ftpmaster.internal/ubuntu noble-proposed/main armhf jq armhf 1.7.1-3 [65.2 kB] 76s Get:256 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libjq1 armhf 1.7.1-3 [156 kB] 76s Get:257 http://ftpmaster.internal/ubuntu noble/main armhf libatm1t64 armhf 1:2.5.1-5.1 [20.0 kB] 76s Get:258 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libevent-core-2.1-7 armhf 2.1.12-stable-9build1 [82.3 kB] 76s Get:259 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libftdi1-2 armhf 1.5-6build4 [25.7 kB] 76s Get:260 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libldap-common all 2.6.7+dfsg-1~exp1ubuntu6 [31.3 kB] 76s Get:261 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsasl2-modules armhf 2.1.28+dfsg1-5ubuntu1 [61.3 kB] 76s Get:262 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-lib2to3 all 3.12.2-3ubuntu2 [79.3 kB] 76s Get:263 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-pyrsistent armhf 0.20.0-1build1 [53.0 kB] 76s Get:264 http://ftpmaster.internal/ubuntu noble-proposed/main armhf python3-typing-extensions all 4.10.0-1 [60.7 kB] 76s Get:265 http://ftpmaster.internal/ubuntu noble-proposed/main armhf kpartx armhf 0.9.4-5ubuntu6 [31.5 kB] 77s Preconfiguring packages ... 77s Fetched 106 MB in 6s (18.0 MB/s) 78s (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 ... 58619 files and directories currently installed.) 78s Preparing to unpack .../bsdutils_1%3a2.39.3-9ubuntu2_armhf.deb ... 78s Unpacking bsdutils (1:2.39.3-9ubuntu2) over (1:2.39.3-6ubuntu2) ... 78s Setting up bsdutils (1:2.39.3-9ubuntu2) ... 78s (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 ... 58619 files and directories currently installed.) 78s Preparing to unpack .../gcc-14-base_14-20240315-1ubuntu1_armhf.deb ... 78s Unpacking gcc-14-base:armhf (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 78s Setting up gcc-14-base:armhf (14-20240315-1ubuntu1) ... 78s (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 ... 58619 files and directories currently installed.) 78s Preparing to unpack .../libgcc-s1_14-20240315-1ubuntu1_armhf.deb ... 78s Unpacking libgcc-s1:armhf (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 78s Setting up libgcc-s1:armhf (14-20240315-1ubuntu1) ... 78s (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 ... 58619 files and directories currently installed.) 78s Preparing to unpack .../libstdc++6_14-20240315-1ubuntu1_armhf.deb ... 78s Unpacking libstdc++6:armhf (14-20240315-1ubuntu1) over (14-20240303-1ubuntu1) ... 78s Setting up libstdc++6:armhf (14-20240315-1ubuntu1) ... 78s (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 ... 58619 files and directories currently installed.) 78s Preparing to unpack .../libc6_2.39-0ubuntu6_armhf.deb ... 78s Unpacking libc6:armhf (2.39-0ubuntu6) over (2.39-0ubuntu2) ... 78s Setting up libc6:armhf (2.39-0ubuntu6) ... 79s (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 ... 58619 files and directories currently installed.) 79s Preparing to unpack .../0-libbrotli1_1.1.0-2build1_armhf.deb ... 79s Unpacking libbrotli1:armhf (1.1.0-2build1) over (1.1.0-2) ... 79s Preparing to unpack .../1-libgssapi-krb5-2_1.20.1-5.1ubuntu1_armhf.deb ... 79s Unpacking libgssapi-krb5-2:armhf (1.20.1-5.1ubuntu1) over (1.20.1-5build1) ... 79s Preparing to unpack .../2-libkrb5-3_1.20.1-5.1ubuntu1_armhf.deb ... 79s Unpacking libkrb5-3:armhf (1.20.1-5.1ubuntu1) over (1.20.1-5build1) ... 79s Preparing to unpack .../3-libkrb5support0_1.20.1-5.1ubuntu1_armhf.deb ... 79s Unpacking libkrb5support0:armhf (1.20.1-5.1ubuntu1) over (1.20.1-5build1) ... 79s Preparing to unpack .../4-libk5crypto3_1.20.1-5.1ubuntu1_armhf.deb ... 79s Unpacking libk5crypto3:armhf (1.20.1-5.1ubuntu1) over (1.20.1-5build1) ... 79s Preparing to unpack .../5-libcom-err2_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 79s Unpacking libcom-err2:armhf (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 79s Preparing to unpack .../6-zlib1g_1%3a1.3.dfsg-3.1ubuntu1_armhf.deb ... 79s Unpacking zlib1g:armhf (1:1.3.dfsg-3.1ubuntu1) over (1:1.3.dfsg-3ubuntu1) ... 79s Setting up zlib1g:armhf (1:1.3.dfsg-3.1ubuntu1) ... 79s (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 ... 58619 files and directories currently installed.) 79s Preparing to unpack .../librtmp1_2.4+20151223.gitfa8646d.1-2build6_armhf.deb ... 79s Unpacking librtmp1:armhf (2.4+20151223.gitfa8646d.1-2build6) over (2.4+20151223.gitfa8646d.1-2build4) ... 79s Preparing to unpack .../udisks2_2.10.1-6_armhf.deb ... 79s Unpacking udisks2 (2.10.1-6) over (2.10.1-1ubuntu2) ... 79s Preparing to unpack .../libudisks2-0_2.10.1-6_armhf.deb ... 79s Unpacking libudisks2-0:armhf (2.10.1-6) over (2.10.1-1ubuntu2) ... 79s Preparing to unpack .../libblkid1_2.39.3-9ubuntu2_armhf.deb ... 79s Unpacking libblkid1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 79s Setting up libblkid1:armhf (2.39.3-9ubuntu2) ... 79s (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 ... 58619 files and directories currently installed.) 79s Preparing to unpack .../liblzma5_5.6.0-0.2_armhf.deb ... 79s Unpacking liblzma5:armhf (5.6.0-0.2) over (5.4.5-0.3) ... 79s Setting up liblzma5:armhf (5.6.0-0.2) ... 79s (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 ... 58619 files and directories currently installed.) 79s Preparing to unpack .../0-kmod_31+20240202-2ubuntu4_armhf.deb ... 79s Unpacking kmod (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 80s dpkg: warning: unable to delete old directory '/lib/modprobe.d': Directory not empty 80s Preparing to unpack .../1-libkmod2_31+20240202-2ubuntu4_armhf.deb ... 80s Unpacking libkmod2:armhf (31+20240202-2ubuntu4) over (30+20230601-2ubuntu1) ... 80s Preparing to unpack .../2-systemd-dev_255.4-1ubuntu5_all.deb ... 80s Unpacking systemd-dev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 80s Preparing to unpack .../3-systemd-timesyncd_255.4-1ubuntu5_armhf.deb ... 80s Unpacking systemd-timesyncd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 80s Preparing to unpack .../4-dbus-session-bus-common_1.14.10-4ubuntu2_all.deb ... 80s Unpacking dbus-session-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 80s Preparing to unpack .../5-libaudit-common_1%3a3.1.2-2.1_all.deb ... 80s Unpacking libaudit-common (1:3.1.2-2.1) over (1:3.1.2-2) ... 80s Setting up libaudit-common (1:3.1.2-2.1) ... 80s (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 ... 58618 files and directories currently installed.) 80s Preparing to unpack .../libcap-ng0_0.8.4-2build1_armhf.deb ... 80s Unpacking libcap-ng0:armhf (0.8.4-2build1) over (0.8.4-2) ... 80s Setting up libcap-ng0:armhf (0.8.4-2build1) ... 80s (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 ... 58618 files and directories currently installed.) 80s Preparing to unpack .../libaudit1_1%3a3.1.2-2.1_armhf.deb ... 80s Unpacking libaudit1:armhf (1:3.1.2-2.1) over (1:3.1.2-2) ... 80s Setting up libaudit1:armhf (1:3.1.2-2.1) ... 80s (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 ... 58618 files and directories currently installed.) 80s Preparing to unpack .../libpam0g_1.5.3-5ubuntu3_armhf.deb ... 80s Unpacking libpam0g:armhf (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 80s Setting up libpam0g:armhf (1.5.3-5ubuntu3) ... 80s (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 ... 58618 files and directories currently installed.) 80s Preparing to unpack .../libselinux1_3.5-2ubuntu1_armhf.deb ... 80s Unpacking libselinux1:armhf (3.5-2ubuntu1) over (3.5-2build1) ... 80s Setting up libselinux1:armhf (3.5-2ubuntu1) ... 80s dpkg: libcurl4:armhf: dependency problems, but removing anyway as you requested: 80s curl depends on libcurl4 (= 8.5.0-2ubuntu2). 80s 80s (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 ... 58618 files and directories currently installed.) 80s Removing libcurl4:armhf (8.5.0-2ubuntu2) ... 80s Selecting previously unselected package libcurl4t64:armhf. 80s (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 ... 58613 files and directories currently installed.) 80s Preparing to unpack .../libcurl4t64_8.5.0-2ubuntu7_armhf.deb ... 80s Unpacking libcurl4t64:armhf (8.5.0-2ubuntu7) ... 80s Preparing to unpack .../curl_8.5.0-2ubuntu7_armhf.deb ... 80s Unpacking curl (8.5.0-2ubuntu7) over (8.5.0-2ubuntu2) ... 80s dpkg: libpsl5:armhf: dependency problems, but removing anyway as you requested: 80s wget depends on libpsl5 (>= 0.16.0). 80s libcurl3-gnutls:armhf depends on libpsl5 (>= 0.16.0). 80s 80s (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 ... 58619 files and directories currently installed.) 80s Removing libpsl5:armhf (0.21.2-1build1) ... 80s Selecting previously unselected package libpsl5t64:armhf. 80s (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 ... 58614 files and directories currently installed.) 80s Preparing to unpack .../libpsl5t64_0.21.2-1.1_armhf.deb ... 80s Unpacking libpsl5t64:armhf (0.21.2-1.1) ... 80s Preparing to unpack .../wget_1.21.4-1ubuntu2_armhf.deb ... 80s Unpacking wget (1.21.4-1ubuntu2) over (1.21.4-1ubuntu1) ... 81s Preparing to unpack .../tnftp_20230507-2build1_armhf.deb ... 81s Unpacking tnftp (20230507-2build1) over (20230507-2) ... 81s dpkg: libpcap0.8:armhf: dependency problems, but removing anyway as you requested: 81s tcpdump depends on libpcap0.8 (>= 1.9.1). 81s 81s (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 ... 58620 files and directories currently installed.) 81s Removing libpcap0.8:armhf (1.10.4-4ubuntu3) ... 81s Selecting previously unselected package libpcap0.8t64:armhf. 81s (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 ... 58609 files and directories currently installed.) 81s Preparing to unpack .../00-libpcap0.8t64_1.10.4-4.1ubuntu1_armhf.deb ... 81s Unpacking libpcap0.8t64:armhf (1.10.4-4.1ubuntu1) ... 81s Preparing to unpack .../01-tcpdump_4.99.4-3ubuntu2_armhf.deb ... 81s Unpacking tcpdump (4.99.4-3ubuntu2) over (4.99.4-3ubuntu1) ... 81s Preparing to unpack .../02-libsystemd-shared_255.4-1ubuntu5_armhf.deb ... 81s Unpacking libsystemd-shared:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 81s Preparing to unpack .../03-systemd-resolved_255.4-1ubuntu5_armhf.deb ... 81s Unpacking systemd-resolved (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 81s Preparing to unpack .../04-sudo_1.9.15p5-3ubuntu3_armhf.deb ... 81s Unpacking sudo (1.9.15p5-3ubuntu3) over (1.9.15p5-3ubuntu1) ... 81s Preparing to unpack .../05-rsync_3.2.7-1build1_armhf.deb ... 81s Unpacking rsync (3.2.7-1build1) over (3.2.7-1) ... 81s Preparing to unpack .../06-python3-cryptography_41.0.7-4build2_armhf.deb ... 81s Unpacking python3-cryptography (41.0.7-4build2) over (41.0.7-3) ... 81s Preparing to unpack .../07-openssl_3.0.13-0ubuntu2_armhf.deb ... 81s Unpacking openssl (3.0.13-0ubuntu2) over (3.0.10-1ubuntu4) ... 81s Preparing to unpack .../08-openssh-sftp-server_1%3a9.6p1-3ubuntu11_armhf.deb ... 81s Unpacking openssh-sftp-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 81s Preparing to unpack .../09-openssh-client_1%3a9.6p1-3ubuntu11_armhf.deb ... 81s Unpacking openssh-client (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 81s Preparing to unpack .../10-openssh-server_1%3a9.6p1-3ubuntu11_armhf.deb ... 81s Unpacking openssh-server (1:9.6p1-3ubuntu11) over (1:9.6p1-3ubuntu2) ... 82s Selecting previously unselected package linux-headers-6.8.0-20. 82s Preparing to unpack .../11-linux-headers-6.8.0-20_6.8.0-20.20_all.deb ... 82s Unpacking linux-headers-6.8.0-20 (6.8.0-20.20) ... 85s Selecting previously unselected package linux-headers-6.8.0-20-generic. 85s Preparing to unpack .../12-linux-headers-6.8.0-20-generic_6.8.0-20.20_armhf.deb ... 85s Unpacking linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 87s Preparing to unpack .../13-linux-headers-generic_6.8.0-20.20+1_armhf.deb ... 87s Unpacking linux-headers-generic (6.8.0-20.20+1) over (6.8.0-11.11+1) ... 87s (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 ... 89772 files and directories currently installed.) 87s Removing linux-headers-6.8.0-11-generic (6.8.0-11.11) ... 87s dpkg: libssl3:armhf: dependency problems, but removing anyway as you requested: 87s systemd depends on libssl3 (>= 3.0.0). 87s libssh-4:armhf depends on libssl3 (>= 3.0.0). 87s libsasl2-modules:armhf depends on libssl3 (>= 3.0.0). 87s libsasl2-2:armhf depends on libssl3 (>= 3.0.0). 87s libpython3.12-minimal:armhf depends on libssl3 (>= 3.0.0). 87s libpython3.11-minimal:armhf depends on libssl3 (>= 3.0.0). 87s libnvme1 depends on libssl3 (>= 3.0.0). 87s libfido2-1:armhf depends on libssl3 (>= 3.0.0). 87s libcryptsetup12:armhf depends on libssl3 (>= 3.0.0). 87s dhcpcd-base depends on libssl3 (>= 3.0.0). 87s bind9-libs:armhf depends on libssl3 (>= 3.0.0). 87s 87s Removing libssl3:armhf (3.0.10-1ubuntu4) ... 87s Selecting previously unselected package libssl3t64:armhf. 87s (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 ... 78622 files and directories currently installed.) 87s Preparing to unpack .../libssl3t64_3.0.13-0ubuntu2_armhf.deb ... 87s Unpacking libssl3t64:armhf (3.0.13-0ubuntu2) ... 88s Setting up libssl3t64:armhf (3.0.13-0ubuntu2) ... 88s (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 ... 78635 files and directories currently installed.) 88s Preparing to unpack .../libnss-systemd_255.4-1ubuntu5_armhf.deb ... 88s Unpacking libnss-systemd:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 88s Preparing to unpack .../libudev1_255.4-1ubuntu5_armhf.deb ... 88s Unpacking libudev1:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 88s Setting up libudev1:armhf (255.4-1ubuntu5) ... 88s (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 ... 78635 files and directories currently installed.) 88s Preparing to unpack .../systemd_255.4-1ubuntu5_armhf.deb ... 88s Unpacking systemd (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 89s Preparing to unpack .../udev_255.4-1ubuntu5_armhf.deb ... 89s Unpacking udev (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 89s Preparing to unpack .../libsystemd0_255.4-1ubuntu5_armhf.deb ... 89s Unpacking libsystemd0:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 89s Setting up libsystemd0:armhf (255.4-1ubuntu5) ... 89s Setting up libkmod2:armhf (31+20240202-2ubuntu4) ... 89s Setting up libsystemd-shared:armhf (255.4-1ubuntu5) ... 89s Setting up systemd-dev (255.4-1ubuntu5) ... 89s Setting up systemd (255.4-1ubuntu5) ... 90s (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 ... 78635 files and directories currently installed.) 90s Preparing to unpack .../systemd-sysv_255.4-1ubuntu5_armhf.deb ... 90s Unpacking systemd-sysv (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 90s Preparing to unpack .../libpam-systemd_255.4-1ubuntu5_armhf.deb ... 90s Unpacking libpam-systemd:armhf (255.4-1ubuntu5) over (255.2-3ubuntu2) ... 90s Preparing to unpack .../libpam-modules-bin_1.5.3-5ubuntu3_armhf.deb ... 90s Unpacking libpam-modules-bin (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 90s Setting up libpam-modules-bin (1.5.3-5ubuntu3) ... 90s pam_namespace.service is a disabled or a static unit not running, not starting it. 90s (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 ... 78635 files and directories currently installed.) 90s Preparing to unpack .../libpam-modules_1.5.3-5ubuntu3_armhf.deb ... 90s Unpacking libpam-modules:armhf (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 90s Setting up libpam-modules:armhf (1.5.3-5ubuntu3) ... 90s Installing new version of config file /etc/security/namespace.init ... 90s (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 ... 78633 files and directories currently installed.) 90s Preparing to unpack .../libpam-runtime_1.5.3-5ubuntu3_all.deb ... 90s Unpacking libpam-runtime (1.5.3-5ubuntu3) over (1.5.2-9.1ubuntu3) ... 90s Setting up libpam-runtime (1.5.3-5ubuntu3) ... 91s (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 ... 78633 files and directories currently installed.) 91s Preparing to unpack .../0-dbus-user-session_1.14.10-4ubuntu2_armhf.deb ... 91s Unpacking dbus-user-session (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 91s Preparing to unpack .../1-libapparmor1_4.0.0-beta3-0ubuntu2_armhf.deb ... 91s Unpacking libapparmor1:armhf (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 91s Preparing to unpack .../2-libexpat1_2.6.1-2_armhf.deb ... 91s Unpacking libexpat1:armhf (2.6.1-2) over (2.6.0-1) ... 91s Preparing to unpack .../3-dbus-system-bus-common_1.14.10-4ubuntu2_all.deb ... 91s Unpacking dbus-system-bus-common (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 91s Preparing to unpack .../4-dbus-bin_1.14.10-4ubuntu2_armhf.deb ... 91s Unpacking dbus-bin (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 91s Preparing to unpack .../5-dbus_1.14.10-4ubuntu2_armhf.deb ... 91s Unpacking dbus (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 91s Preparing to unpack .../6-dbus-daemon_1.14.10-4ubuntu2_armhf.deb ... 91s Unpacking dbus-daemon (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 91s Preparing to unpack .../7-libdbus-1-3_1.14.10-4ubuntu2_armhf.deb ... 91s Unpacking libdbus-1-3:armhf (1.14.10-4ubuntu2) over (1.14.10-4ubuntu1) ... 91s Preparing to unpack .../8-libmount1_2.39.3-9ubuntu2_armhf.deb ... 91s Unpacking libmount1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 91s Setting up libmount1:armhf (2.39.3-9ubuntu2) ... 91s (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 ... 78633 files and directories currently installed.) 91s Preparing to unpack .../libseccomp2_2.5.5-1ubuntu2_armhf.deb ... 91s Unpacking libseccomp2:armhf (2.5.5-1ubuntu2) over (2.5.5-1ubuntu1) ... 91s Setting up libseccomp2:armhf (2.5.5-1ubuntu2) ... 91s (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 ... 78633 files and directories currently installed.) 91s Preparing to unpack .../libdevmapper1.02.1_2%3a1.02.185-3ubuntu2_armhf.deb ... 91s Unpacking libdevmapper1.02.1:armhf (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 91s Preparing to unpack .../libuuid1_2.39.3-9ubuntu2_armhf.deb ... 91s Unpacking libuuid1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 91s Setting up libuuid1:armhf (2.39.3-9ubuntu2) ... 91s (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 ... 78633 files and directories currently installed.) 91s Preparing to unpack .../0-libcryptsetup12_2%3a2.7.0-1ubuntu2_armhf.deb ... 91s Unpacking libcryptsetup12:armhf (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 91s Preparing to unpack .../1-libfdisk1_2.39.3-9ubuntu2_armhf.deb ... 91s Unpacking libfdisk1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 91s Preparing to unpack .../2-mount_2.39.3-9ubuntu2_armhf.deb ... 91s Unpacking mount (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 91s Preparing to unpack .../3-libblockdev-utils3_3.1.0-1build1_armhf.deb ... 91s Unpacking libblockdev-utils3:armhf (3.1.0-1build1) over (3.1.0-1) ... 91s Preparing to unpack .../4-libvolume-key1_0.3.12-7build1_armhf.deb ... 91s Unpacking libvolume-key1:armhf (0.3.12-7build1) over (0.3.12-5build2) ... 91s Preparing to unpack .../5-libjcat1_0.2.0-2build2_armhf.deb ... 91s Unpacking libjcat1:armhf (0.2.0-2build2) over (0.2.0-2) ... 91s (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 ... 78633 files and directories currently installed.) 91s Removing libgpgme11:armhf (1.18.0-4ubuntu1) ... 92s (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 ... 78627 files and directories currently installed.) 92s Preparing to unpack .../parted_3.6-3.1build2_armhf.deb ... 92s Unpacking parted (3.6-3.1build2) over (3.6-3) ... 92s (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 ... 78627 files and directories currently installed.) 92s Removing libparted2:armhf (3.6-3) ... 92s Selecting previously unselected package libparted2t64:armhf. 92s (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 ... 78621 files and directories currently installed.) 92s Preparing to unpack .../00-libparted2t64_3.6-3.1build2_armhf.deb ... 92s Unpacking libparted2t64:armhf (3.6-3.1build2) ... 92s Preparing to unpack .../01-python3.12_3.12.2-4build3_armhf.deb ... 92s Unpacking python3.12 (3.12.2-4build3) over (3.12.2-1) ... 92s Preparing to unpack .../02-python3.12-minimal_3.12.2-4build3_armhf.deb ... 92s Unpacking python3.12-minimal (3.12.2-4build3) over (3.12.2-1) ... 92s Preparing to unpack .../03-libpython3.12-stdlib_3.12.2-4build3_armhf.deb ... 92s Unpacking libpython3.12-stdlib:armhf (3.12.2-4build3) over (3.12.2-1) ... 93s Preparing to unpack .../04-libpython3.12-minimal_3.12.2-4build3_armhf.deb ... 93s Unpacking libpython3.12-minimal:armhf (3.12.2-4build3) over (3.12.2-1) ... 93s Preparing to unpack .../05-libsasl2-modules-db_2.1.28+dfsg1-5ubuntu1_armhf.deb ... 93s Unpacking libsasl2-modules-db:armhf (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 93s Preparing to unpack .../06-python3.11_3.11.8-1build4_armhf.deb ... 93s Unpacking python3.11 (3.11.8-1build4) over (3.11.8-1) ... 93s Preparing to unpack .../07-python3.11-minimal_3.11.8-1build4_armhf.deb ... 93s Unpacking python3.11-minimal (3.11.8-1build4) over (3.11.8-1) ... 93s Preparing to unpack .../08-libpython3.11-stdlib_3.11.8-1build4_armhf.deb ... 93s Unpacking libpython3.11-stdlib:armhf (3.11.8-1build4) over (3.11.8-1) ... 93s Preparing to unpack .../09-libpython3.11-minimal_3.11.8-1build4_armhf.deb ... 93s Unpacking libpython3.11-minimal:armhf (3.11.8-1build4) over (3.11.8-1) ... 93s Preparing to unpack .../10-libsqlite3-0_3.45.1-1ubuntu1_armhf.deb ... 93s Unpacking libsqlite3-0:armhf (3.45.1-1ubuntu1) over (3.45.1-1) ... 94s Preparing to unpack .../11-libtext-iconv-perl_1.7-8build2_armhf.deb ... 94s Unpacking libtext-iconv-perl:armhf (1.7-8build2) over (1.7-8build1) ... 94s Preparing to unpack .../12-libtext-charwidth-perl_0.04-11build2_armhf.deb ... 94s Unpacking libtext-charwidth-perl:armhf (0.04-11build2) over (0.04-11build1) ... 94s Preparing to unpack .../13-perl-modules-5.38_5.38.2-3.2_all.deb ... 94s Unpacking perl-modules-5.38 (5.38.2-3.2) over (5.38.2-3) ... 95s dpkg: libperl5.38:armhf: dependency problems, but removing anyway as you requested: 95s perl depends on libperl5.38 (= 5.38.2-3). 95s 95s (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 ... 78624 files and directories currently installed.) 95s Removing libperl5.38:armhf (5.38.2-3) ... 95s dpkg: libdb5.3:armhf: dependency problems, but removing anyway as you requested: 95s iproute2 depends on libdb5.3. 95s apt-utils depends on libdb5.3. 95s 95s Removing libdb5.3:armhf (5.3.28+dfsg2-4) ... 95s Selecting previously unselected package libdb5.3t64:armhf. 95s (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 ... 78099 files and directories currently installed.) 95s Preparing to unpack .../libdb5.3t64_5.3.28+dfsg2-6_armhf.deb ... 95s Unpacking libdb5.3t64:armhf (5.3.28+dfsg2-6) ... 95s Preparing to unpack .../python3-gdbm_3.12.2-3ubuntu2_armhf.deb ... 95s Unpacking python3-gdbm:armhf (3.12.2-3ubuntu2) over (3.11.5-1) ... 95s Preparing to unpack .../man-db_2.12.0-3build4_armhf.deb ... 95s Unpacking man-db (2.12.0-3build4) over (2.12.0-3) ... 95s (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 ... 78105 files and directories currently installed.) 95s Removing libgdbm-compat4:armhf (1.23-5) ... 95s Removing libgdbm6:armhf (1.23-5) ... 95s Selecting previously unselected package libgdbm6t64:armhf. 95s (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 ... 78095 files and directories currently installed.) 95s Preparing to unpack .../libgdbm6t64_1.23-5.1_armhf.deb ... 95s Unpacking libgdbm6t64:armhf (1.23-5.1) ... 95s Selecting previously unselected package libgdbm-compat4t64:armhf. 95s Preparing to unpack .../libgdbm-compat4t64_1.23-5.1_armhf.deb ... 95s Unpacking libgdbm-compat4t64:armhf (1.23-5.1) ... 95s Selecting previously unselected package libperl5.38t64:armhf. 95s Preparing to unpack .../libperl5.38t64_5.38.2-3.2_armhf.deb ... 95s Unpacking libperl5.38t64:armhf (5.38.2-3.2) ... 96s Preparing to unpack .../perl_5.38.2-3.2_armhf.deb ... 96s Unpacking perl (5.38.2-3.2) over (5.38.2-3) ... 96s Preparing to unpack .../perl-base_5.38.2-3.2_armhf.deb ... 96s Unpacking perl-base (5.38.2-3.2) over (5.38.2-3) ... 96s Setting up perl-base (5.38.2-3.2) ... 96s (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 ... 78626 files and directories currently installed.) 96s Preparing to unpack .../liblocale-gettext-perl_1.07-6ubuntu4_armhf.deb ... 96s Unpacking liblocale-gettext-perl (1.07-6ubuntu4) over (1.07-6build1) ... 96s dpkg: libnettle8:armhf: dependency problems, but removing anyway as you requested: 96s libhogweed6:armhf depends on libnettle8. 96s libgnutls30:armhf depends on libnettle8 (>= 3.9~). 96s libcurl3-gnutls:armhf depends on libnettle8. 96s libarchive13:armhf depends on libnettle8. 96s 96s (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 ... 78626 files and directories currently installed.) 96s Removing libnettle8:armhf (3.9.1-2) ... 96s Selecting previously unselected package libnettle8t64:armhf. 97s (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 ... 78619 files and directories currently installed.) 97s Preparing to unpack .../libnettle8t64_3.9.1-2.2_armhf.deb ... 97s Unpacking libnettle8t64:armhf (3.9.1-2.2) ... 97s Setting up libnettle8t64:armhf (3.9.1-2.2) ... 97s dpkg: libhogweed6:armhf: dependency problems, but removing anyway as you requested: 97s libgnutls30:armhf depends on libhogweed6 (>= 3.6). 97s 97s (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 ... 78627 files and directories currently installed.) 97s Removing libhogweed6:armhf (3.9.1-2) ... 97s Selecting previously unselected package libhogweed6t64:armhf. 97s (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 ... 78622 files and directories currently installed.) 97s Preparing to unpack .../libhogweed6t64_3.9.1-2.2_armhf.deb ... 97s Unpacking libhogweed6t64:armhf (3.9.1-2.2) ... 97s Setting up libhogweed6t64:armhf (3.9.1-2.2) ... 97s dpkg: libgnutls30:armhf: dependency problems, but removing anyway as you requested: 97s libldap2:armhf depends on libgnutls30 (>= 3.8.2). 97s libcurl3-gnutls:armhf depends on libgnutls30 (>= 3.8.2). 97s fwupd depends on libgnutls30 (>= 3.7.3). 97s dirmngr depends on libgnutls30 (>= 3.8.1). 97s apt depends on libgnutls30 (>= 3.8.1). 97s 97s (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 ... 78628 files and directories currently installed.) 97s Removing libgnutls30:armhf (3.8.3-1ubuntu1) ... 97s Selecting previously unselected package libgnutls30t64:armhf. 97s (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 ... 78619 files and directories currently installed.) 97s Preparing to unpack .../libgnutls30t64_3.8.3-1.1ubuntu2_armhf.deb ... 97s Unpacking libgnutls30t64:armhf (3.8.3-1.1ubuntu2) ... 97s Setting up libgnutls30t64:armhf (3.8.3-1.1ubuntu2) ... 97s (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 ... 78647 files and directories currently installed.) 97s Preparing to unpack .../libldap2_2.6.7+dfsg-1~exp1ubuntu6_armhf.deb ... 97s Unpacking libldap2:armhf (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 97s dpkg: libcurl3-gnutls:armhf: dependency problems, but removing anyway as you requested: 97s libfwupd2:armhf depends on libcurl3-gnutls (>= 7.63.0). 97s fwupd depends on libcurl3-gnutls (>= 7.63.0). 97s 97s (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 ... 78647 files and directories currently installed.) 97s Removing libcurl3-gnutls:armhf (8.5.0-2ubuntu2) ... 97s Selecting previously unselected package libcurl3t64-gnutls:armhf. 97s (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 ... 78640 files and directories currently installed.) 97s Preparing to unpack .../00-libcurl3t64-gnutls_8.5.0-2ubuntu7_armhf.deb ... 97s Unpacking libcurl3t64-gnutls:armhf (8.5.0-2ubuntu7) ... 97s Preparing to unpack .../01-shared-mime-info_2.4-1build1_armhf.deb ... 97s Unpacking shared-mime-info (2.4-1build1) over (2.4-1) ... 97s Preparing to unpack .../02-gir1.2-girepository-2.0_1.79.1-1ubuntu6_armhf.deb ... 97s Unpacking gir1.2-girepository-2.0:armhf (1.79.1-1ubuntu6) over (1.79.1-1) ... 97s Preparing to unpack .../03-gir1.2-glib-2.0_2.79.3-3ubuntu5_armhf.deb ... 97s Unpacking gir1.2-glib-2.0:armhf (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 97s Preparing to unpack .../04-libgirepository-1.0-1_1.79.1-1ubuntu6_armhf.deb ... 98s Unpacking libgirepository-1.0-1:armhf (1.79.1-1ubuntu6) over (1.79.1-1) ... 98s Preparing to unpack .../05-python3-gi_3.47.0-3build1_armhf.deb ... 98s Unpacking python3-gi (3.47.0-3build1) over (3.47.0-3) ... 98s Preparing to unpack .../06-python3-dbus_1.3.2-5build2_armhf.deb ... 98s Unpacking python3-dbus (1.3.2-5build2) over (1.3.2-5build1) ... 98s Selecting previously unselected package libnetplan1:armhf. 98s Preparing to unpack .../07-libnetplan1_1.0-1_armhf.deb ... 98s Unpacking libnetplan1:armhf (1.0-1) ... 98s Preparing to unpack .../08-python3-netplan_1.0-1_armhf.deb ... 98s Unpacking python3-netplan (1.0-1) over (0.107.1-3) ... 98s Preparing to unpack .../09-netplan-generator_1.0-1_armhf.deb ... 98s Adding 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 98s Unpacking netplan-generator (1.0-1) over (0.107.1-3) ... 98s Preparing to unpack .../10-initramfs-tools-bin_0.142ubuntu23_armhf.deb ... 98s Unpacking initramfs-tools-bin (0.142ubuntu23) over (0.142ubuntu20) ... 98s Preparing to unpack .../11-initramfs-tools-core_0.142ubuntu23_all.deb ... 98s Unpacking initramfs-tools-core (0.142ubuntu23) over (0.142ubuntu20) ... 98s Preparing to unpack .../12-initramfs-tools_0.142ubuntu23_all.deb ... 98s Unpacking initramfs-tools (0.142ubuntu23) over (0.142ubuntu20) ... 98s Preparing to unpack .../13-netplan.io_1.0-1_armhf.deb ... 98s Unpacking netplan.io (1.0-1) over (0.107.1-3) ... 98s Preparing to unpack .../14-libxmlb2_0.3.15-1build1_armhf.deb ... 98s Unpacking libxmlb2:armhf (0.3.15-1build1) over (0.3.15-1) ... 99s Preparing to unpack .../15-libqrtr-glib0_1.2.2-1ubuntu3_armhf.deb ... 99s Unpacking libqrtr-glib0:armhf (1.2.2-1ubuntu3) over (1.2.2-1ubuntu2) ... 99s Preparing to unpack .../16-libqmi-glib5_1.35.2-0ubuntu1_armhf.deb ... 99s Unpacking libqmi-glib5:armhf (1.35.2-0ubuntu1) over (1.34.0-2) ... 99s Preparing to unpack .../17-libqmi-proxy_1.35.2-0ubuntu1_armhf.deb ... 99s Unpacking libqmi-proxy (1.35.2-0ubuntu1) over (1.34.0-2) ... 99s Preparing to unpack .../18-libpolkit-agent-1-0_124-1ubuntu1_armhf.deb ... 99s Unpacking libpolkit-agent-1-0:armhf (124-1ubuntu1) over (124-1) ... 99s Preparing to unpack .../19-libpolkit-gobject-1-0_124-1ubuntu1_armhf.deb ... 99s Unpacking libpolkit-gobject-1-0:armhf (124-1ubuntu1) over (124-1) ... 99s (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 ... 78651 files and directories currently installed.) 99s Removing libnetplan0:armhf (0.107.1-3) ... 99s dpkg: libglib2.0-0:armhf: dependency problems, but removing anyway as you requested: 99s libmm-glib0:armhf depends on libglib2.0-0 (>= 2.62.0). 99s libmbim-proxy depends on libglib2.0-0 (>= 2.56). 99s libmbim-glib4:armhf depends on libglib2.0-0 (>= 2.56). 99s libjson-glib-1.0-0:armhf depends on libglib2.0-0 (>= 2.75.3). 99s libgusb2:armhf depends on libglib2.0-0 (>= 2.75.3). 99s libgudev-1.0-0:armhf depends on libglib2.0-0 (>= 2.38.0). 99s libfwupd2:armhf depends on libglib2.0-0 (>= 2.79.0). 99s libblockdev3:armhf depends on libglib2.0-0 (>= 2.42.2). 99s libblockdev-swap3:armhf depends on libglib2.0-0 (>= 2.42.2). 99s libblockdev-part3:armhf depends on libglib2.0-0 (>= 2.42.2). 99s libblockdev-nvme3:armhf depends on libglib2.0-0 (>= 2.42.2). 99s libblockdev-mdraid3:armhf depends on libglib2.0-0 (>= 2.42.2). 99s libblockdev-loop3:armhf depends on libglib2.0-0 (>= 2.42.2). 99s libblockdev-fs3:armhf depends on libglib2.0-0 (>= 2.42.2). 99s libblockdev-crypto3:armhf depends on libglib2.0-0 (>= 2.42.2). 99s fwupd depends on libglib2.0-0 (>= 2.79.0). 99s bolt depends on libglib2.0-0 (>= 2.56.0). 99s 99s Removing libglib2.0-0:armhf (2.79.2-1~ubuntu1) ... 99s Selecting previously unselected package libglib2.0-0t64:armhf. 99s (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 ... 78622 files and directories currently installed.) 99s Preparing to unpack .../libglib2.0-0t64_2.79.3-3ubuntu5_armhf.deb ... 99s libglib2.0-0t64.preinst: Removing /var/lib/dpkg/info/libglib2.0-0:armhf.postrm to avoid loss of /usr/share/glib-2.0/schemas/gschemas.compiled... 99s removed '/var/lib/dpkg/info/libglib2.0-0:armhf.postrm' 99s Unpacking libglib2.0-0t64:armhf (2.79.3-3ubuntu5) ... 99s Preparing to unpack .../libfwupd2_1.9.15-1_armhf.deb ... 99s Unpacking libfwupd2:armhf (1.9.15-1) over (1.9.14-1) ... 99s dpkg: libarchive13:armhf: dependency problems, but removing anyway as you requested: 99s fwupd depends on libarchive13 (>= 3.2.1). 99s 99s (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 ... 78647 files and directories currently installed.) 99s Removing libarchive13:armhf (3.7.2-1ubuntu2) ... 99s Selecting previously unselected package libarchive13t64:armhf. 99s (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 ... 78641 files and directories currently installed.) 99s Preparing to unpack .../libarchive13t64_3.7.2-1.1ubuntu2_armhf.deb ... 99s Unpacking libarchive13t64:armhf (3.7.2-1.1ubuntu2) ... 99s Preparing to unpack .../fwupd_1.9.15-1_armhf.deb ... 99s Unpacking fwupd (1.9.15-1) over (1.9.14-1) ... 99s Preparing to unpack .../apt-utils_2.7.14_armhf.deb ... 99s Unpacking apt-utils (2.7.14) over (2.7.12) ... 100s dpkg: libapt-pkg6.0:armhf: dependency problems, but removing anyway as you requested: 100s ubuntu-pro-client depends on libapt-pkg6.0 (>= 1.9~). 100s python3-apt depends on libapt-pkg6.0 (>= 2.7.11). 100s apt depends on libapt-pkg6.0 (>= 2.7.12). 100s 100s (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 ... 78648 files and directories currently installed.) 100s Removing libapt-pkg6.0:armhf (2.7.12) ... 100s Selecting previously unselected package libapt-pkg6.0t64:armhf. 100s (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 ... 78599 files and directories currently installed.) 100s Preparing to unpack .../libapt-pkg6.0t64_2.7.14_armhf.deb ... 100s Unpacking libapt-pkg6.0t64:armhf (2.7.14) ... 100s Setting up libapt-pkg6.0t64:armhf (2.7.14) ... 100s (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 ... 78649 files and directories currently installed.) 100s Preparing to unpack .../archives/apt_2.7.14_armhf.deb ... 100s Unpacking apt (2.7.14) over (2.7.12) ... 100s Setting up apt (2.7.14) ... 101s (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 ... 78649 files and directories currently installed.) 101s Preparing to unpack .../ubuntu-pro-client-l10n_31.2.1_armhf.deb ... 101s Unpacking ubuntu-pro-client-l10n (31.2.1) over (31.1) ... 101s Preparing to unpack .../ubuntu-pro-client_31.2.1_armhf.deb ... 101s Unpacking ubuntu-pro-client (31.2.1) over (31.1) ... 101s Preparing to unpack .../keyboxd_2.4.4-2ubuntu15_armhf.deb ... 101s Unpacking keyboxd (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 101s dpkg: libnpth0:armhf: dependency problems, but removing anyway as you requested: 101s gpgv depends on libnpth0 (>= 0.90). 101s gpgsm depends on libnpth0 (>= 0.90). 101s gpg-agent depends on libnpth0 (>= 0.90). 101s gpg depends on libnpth0 (>= 0.90). 101s dirmngr depends on libnpth0 (>= 0.90). 101s 101s (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 ... 78649 files and directories currently installed.) 101s Removing libnpth0:armhf (1.6-3build2) ... 101s Selecting previously unselected package libnpth0t64:armhf. 101s (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 ... 78644 files and directories currently installed.) 101s Preparing to unpack .../libnpth0t64_1.6-3.1_armhf.deb ... 101s Unpacking libnpth0t64:armhf (1.6-3.1) ... 101s Setting up libnpth0t64:armhf (1.6-3.1) ... 101s (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 ... 78650 files and directories currently installed.) 101s Preparing to unpack .../gpgv_2.4.4-2ubuntu15_armhf.deb ... 101s Unpacking gpgv (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 101s Setting up gpgv (2.4.4-2ubuntu15) ... 101s (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 ... 78650 files and directories currently installed.) 101s Preparing to unpack .../gpg_2.4.4-2ubuntu15_armhf.deb ... 101s Unpacking gpg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 101s Preparing to unpack .../gpg-wks-client_2.4.4-2ubuntu15_armhf.deb ... 101s Unpacking gpg-wks-client (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 101s Preparing to unpack .../gnupg-utils_2.4.4-2ubuntu15_armhf.deb ... 101s Unpacking gnupg-utils (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 102s Preparing to unpack .../gpg-agent_2.4.4-2ubuntu15_armhf.deb ... 102s Unpacking gpg-agent (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 102s Preparing to unpack .../gpgsm_2.4.4-2ubuntu15_armhf.deb ... 102s Unpacking gpgsm (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 102s dpkg: libreadline8:armhf: dependency problems, but removing anyway as you requested: 102s gpgconf depends on libreadline8 (>= 6.0). 102s gawk depends on libreadline8 (>= 6.0). 102s fdisk depends on libreadline8 (>= 6.0). 102s 102s (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 ... 78650 files and directories currently installed.) 102s Removing libreadline8:armhf (8.2-3) ... 102s Selecting previously unselected package libreadline8t64:armhf. 102s (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 ... 78638 files and directories currently installed.) 102s Preparing to unpack .../libreadline8t64_8.2-3.1build1_armhf.deb ... 102s Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8 to /lib/arm-linux-gnueabihf/libhistory.so.8.usr-is-merged by libreadline8t64' 102s Adding 'diversion of /lib/arm-linux-gnueabihf/libhistory.so.8.2 to /lib/arm-linux-gnueabihf/libhistory.so.8.2.usr-is-merged by libreadline8t64' 102s Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8 to /lib/arm-linux-gnueabihf/libreadline.so.8.usr-is-merged by libreadline8t64' 102s Adding 'diversion of /lib/arm-linux-gnueabihf/libreadline.so.8.2 to /lib/arm-linux-gnueabihf/libreadline.so.8.2.usr-is-merged by libreadline8t64' 102s Unpacking libreadline8t64:armhf (8.2-3.1build1) ... 102s Setting up libreadline8t64:armhf (8.2-3.1build1) ... 102s (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 ... 78658 files and directories currently installed.) 102s Preparing to unpack .../00-gawk_1%3a5.2.1-2build2_armhf.deb ... 102s Unpacking gawk (1:5.2.1-2build2) over (1:5.2.1-2) ... 102s Preparing to unpack .../01-fdisk_2.39.3-9ubuntu2_armhf.deb ... 102s Unpacking fdisk (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 102s Preparing to unpack .../02-gpgconf_2.4.4-2ubuntu15_armhf.deb ... 102s Unpacking gpgconf (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 102s Preparing to unpack .../03-dirmngr_2.4.4-2ubuntu15_armhf.deb ... 102s Unpacking dirmngr (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 102s Preparing to unpack .../04-gnupg_2.4.4-2ubuntu15_all.deb ... 102s Unpacking gnupg (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 102s Preparing to unpack .../05-python3-apt_2.7.6build1_armhf.deb ... 102s Unpacking python3-apt (2.7.6build1) over (2.7.6) ... 103s Preparing to unpack .../06-pinentry-curses_1.2.1-3ubuntu4_armhf.deb ... 103s Unpacking pinentry-curses (1.2.1-3ubuntu4) over (1.2.1-3ubuntu1) ... 103s Preparing to unpack .../07-python3-yaml_6.0.1-2build1_armhf.deb ... 103s Unpacking python3-yaml (6.0.1-2build1) over (6.0.1-2) ... 103s Preparing to unpack .../08-python-apt-common_2.7.6build1_all.deb ... 103s Unpacking python-apt-common (2.7.6build1) over (2.7.6) ... 103s Preparing to unpack .../09-python3-setuptools_68.1.2-2ubuntu1_all.deb ... 103s Unpacking python3-setuptools (68.1.2-2ubuntu1) over (68.1.2-2) ... 103s Preparing to unpack .../10-python3-pkg-resources_68.1.2-2ubuntu1_all.deb ... 103s Unpacking python3-pkg-resources (68.1.2-2ubuntu1) over (68.1.2-2) ... 104s Preparing to unpack .../11-dpkg_1.22.6ubuntu4_armhf.deb ... 104s Unpacking dpkg (1.22.6ubuntu4) over (1.22.4ubuntu5) ... 104s Setting up dpkg (1.22.6ubuntu4) ... 104s Setting up libpython3.12-minimal:armhf (3.12.2-4build3) ... 104s Setting up libexpat1:armhf (2.6.1-2) ... 104s Setting up python3.12-minimal (3.12.2-4build3) ... 106s (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 ... 78655 files and directories currently installed.) 106s Preparing to unpack .../python3-minimal_3.12.2-0ubuntu1_armhf.deb ... 106s Unpacking python3-minimal (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 106s Setting up python3-minimal (3.12.2-0ubuntu1) ... 106s (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 ... 78655 files and directories currently installed.) 106s Preparing to unpack .../python3_3.12.2-0ubuntu1_armhf.deb ... 106s Unpacking python3 (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 106s Preparing to unpack .../libpython3-stdlib_3.12.2-0ubuntu1_armhf.deb ... 106s Unpacking libpython3-stdlib:armhf (3.12.2-0ubuntu1) over (3.12.1-0ubuntu2) ... 106s Preparing to unpack .../libsmartcols1_2.39.3-9ubuntu2_armhf.deb ... 106s Unpacking libsmartcols1:armhf (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 106s Setting up libsmartcols1:armhf (2.39.3-9ubuntu2) ... 106s (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 ... 78655 files and directories currently installed.) 106s Preparing to unpack .../0-bsdextrautils_2.39.3-9ubuntu2_armhf.deb ... 106s Unpacking bsdextrautils (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 106s Preparing to unpack .../1-groff-base_1.23.0-3build1_armhf.deb ... 106s Unpacking groff-base (1.23.0-3build1) over (1.23.0-3) ... 107s Preparing to unpack .../2-readline-common_8.2-3.1build1_all.deb ... 107s Unpacking readline-common (8.2-3.1build1) over (8.2-3) ... 107s Selecting previously unselected package libgpgme11t64:armhf. 107s Preparing to unpack .../3-libgpgme11t64_1.18.0-4.1ubuntu3_armhf.deb ... 107s Unpacking libgpgme11t64:armhf (1.18.0-4.1ubuntu3) ... 107s Preparing to unpack .../4-libblockdev-crypto3_3.1.0-1build1_armhf.deb ... 107s Unpacking libblockdev-crypto3:armhf (3.1.0-1build1) over (3.1.0-1) ... 107s Preparing to unpack .../5-e2fsprogs-l10n_1.47.0-2.4~exp1ubuntu2_all.deb ... 107s Unpacking e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 107s Preparing to unpack .../6-logsave_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 107s Unpacking logsave (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 107s Preparing to unpack .../7-dhcpcd-base_1%3a10.0.6-1ubuntu2_armhf.deb ... 107s Unpacking dhcpcd-base (1:10.0.6-1ubuntu2) over (1:10.0.6-1ubuntu1) ... 107s Preparing to unpack .../8-libblockdev-fs3_3.1.0-1build1_armhf.deb ... 107s Unpacking libblockdev-fs3:armhf (3.1.0-1build1) over (3.1.0-1) ... 107s dpkg: libreiserfscore0: dependency problems, but removing anyway as you requested: 107s btrfs-progs depends on libreiserfscore0 (>= 1:3.6.27). 107s 107s (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 ... 78662 files and directories currently installed.) 107s Removing libreiserfscore0 (1:3.6.27-7) ... 107s Selecting previously unselected package libreiserfscore0t64. 107s (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 ... 78657 files and directories currently installed.) 107s Preparing to unpack .../libreiserfscore0t64_1%3a3.6.27-7.1_armhf.deb ... 107s Unpacking libreiserfscore0t64 (1:3.6.27-7.1) ... 107s Preparing to unpack .../btrfs-progs_6.6.3-1.1build1_armhf.deb ... 107s Unpacking btrfs-progs (6.6.3-1.1build1) over (6.6.3-1.1) ... 107s dpkg: libext2fs2:armhf: dependency problems, but removing anyway as you requested: 107s e2fsprogs depends on libext2fs2 (= 1.47.0-2ubuntu1). 107s 107s (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 ... 78663 files and directories currently installed.) 107s Removing libext2fs2:armhf (1.47.0-2ubuntu1) ... 107s Selecting previously unselected package libext2fs2t64:armhf. 107s (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 ... 78656 files and directories currently installed.) 107s Preparing to unpack .../libext2fs2t64_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 107s Adding 'diversion of /lib/arm-linux-gnueabihf/libe2p.so.2 to /lib/arm-linux-gnueabihf/libe2p.so.2.usr-is-merged by libext2fs2t64' 107s Adding 'diversion of /lib/arm-linux-gnueabihf/libe2p.so.2.3 to /lib/arm-linux-gnueabihf/libe2p.so.2.3.usr-is-merged by libext2fs2t64' 107s Adding 'diversion of /lib/arm-linux-gnueabihf/libext2fs.so.2 to /lib/arm-linux-gnueabihf/libext2fs.so.2.usr-is-merged by libext2fs2t64' 108s Adding 'diversion of /lib/arm-linux-gnueabihf/libext2fs.so.2.4 to /lib/arm-linux-gnueabihf/libext2fs.so.2.4.usr-is-merged by libext2fs2t64' 108s Unpacking libext2fs2t64:armhf (1.47.0-2.4~exp1ubuntu2) ... 108s Setting up libcom-err2:armhf (1.47.0-2.4~exp1ubuntu2) ... 108s Setting up libext2fs2t64:armhf (1.47.0-2.4~exp1ubuntu2) ... 108s (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 ... 78672 files and directories currently installed.) 108s Preparing to unpack .../e2fsprogs_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 108s Unpacking e2fsprogs (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 108s Preparing to unpack .../libblockdev-loop3_3.1.0-1build1_armhf.deb ... 108s Unpacking libblockdev-loop3:armhf (3.1.0-1build1) over (3.1.0-1) ... 108s Preparing to unpack .../libblockdev-mdraid3_3.1.0-1build1_armhf.deb ... 108s Unpacking libblockdev-mdraid3:armhf (3.1.0-1build1) over (3.1.0-1) ... 108s Preparing to unpack .../libblockdev-nvme3_3.1.0-1build1_armhf.deb ... 108s Unpacking libblockdev-nvme3:armhf (3.1.0-1build1) over (3.1.0-1) ... 108s (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 ... 78672 files and directories currently installed.) 108s Removing libnvme1 (1.8-2) ... 108s Selecting previously unselected package libnvme1t64. 108s (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 ... 78665 files and directories currently installed.) 108s Preparing to unpack .../0-libnvme1t64_1.8-3_armhf.deb ... 108s Unpacking libnvme1t64 (1.8-3) ... 108s Preparing to unpack .../1-libblockdev-part3_3.1.0-1build1_armhf.deb ... 108s Unpacking libblockdev-part3:armhf (3.1.0-1build1) over (3.1.0-1) ... 108s Preparing to unpack .../2-libblockdev-swap3_3.1.0-1build1_armhf.deb ... 108s Unpacking libblockdev-swap3:armhf (3.1.0-1build1) over (3.1.0-1) ... 108s Preparing to unpack .../3-libblockdev3_3.1.0-1build1_armhf.deb ... 108s Unpacking libblockdev3:armhf (3.1.0-1build1) over (3.1.0-1) ... 108s Preparing to unpack .../4-libgudev-1.0-0_1%3a238-3ubuntu2_armhf.deb ... 108s Unpacking libgudev-1.0-0:armhf (1:238-3ubuntu2) over (1:238-3) ... 108s Preparing to unpack .../5-libxml2_2.9.14+dfsg-1.3ubuntu2_armhf.deb ... 108s Unpacking libxml2:armhf (2.9.14+dfsg-1.3ubuntu2) over (2.9.14+dfsg-1.3ubuntu1) ... 108s Preparing to unpack .../6-libbpf1_1%3a1.3.0-2build1_armhf.deb ... 108s Unpacking libbpf1:armhf (1:1.3.0-2build1) over (1:1.3.0-2) ... 108s Preparing to unpack .../7-iproute2_6.1.0-1ubuntu5_armhf.deb ... 108s Unpacking iproute2 (6.1.0-1ubuntu5) over (6.1.0-1ubuntu2) ... 108s (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 ... 78673 files and directories currently installed.) 108s Removing libelf1:armhf (0.190-1) ... 109s Selecting previously unselected package libelf1t64:armhf. 109s (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 ... 78668 files and directories currently installed.) 109s Preparing to unpack .../libelf1t64_0.190-1.1build2_armhf.deb ... 109s Unpacking libelf1t64:armhf (0.190-1.1build2) ... 109s Preparing to unpack .../libtirpc-common_1.3.4+ds-1.1_all.deb ... 109s Unpacking libtirpc-common (1.3.4+ds-1.1) over (1.3.4+ds-1build1) ... 109s Preparing to unpack .../lsof_4.95.0-1build2_armhf.deb ... 109s Unpacking lsof (4.95.0-1build2) over (4.95.0-1build1) ... 109s Preparing to unpack .../libnsl2_1.3.0-3build2_armhf.deb ... 109s Unpacking libnsl2:armhf (1.3.0-3build2) over (1.3.0-3) ... 109s (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 ... 78673 files and directories currently installed.) 109s Removing libtirpc3:armhf (1.3.4+ds-1build1) ... 109s Selecting previously unselected package libtirpc3t64:armhf. 109s (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 ... 78667 files and directories currently installed.) 109s Preparing to unpack .../00-libtirpc3t64_1.3.4+ds-1.1_armhf.deb ... 109s Adding 'diversion of /lib/arm-linux-gnueabihf/libtirpc.so.3 to /lib/arm-linux-gnueabihf/libtirpc.so.3.usr-is-merged by libtirpc3t64' 109s Adding 'diversion of /lib/arm-linux-gnueabihf/libtirpc.so.3.0.0 to /lib/arm-linux-gnueabihf/libtirpc.so.3.0.0.usr-is-merged by libtirpc3t64' 109s Unpacking libtirpc3t64:armhf (1.3.4+ds-1.1) ... 109s Preparing to unpack .../01-libmbim-proxy_1.31.2-0ubuntu2_armhf.deb ... 109s Unpacking libmbim-proxy (1.31.2-0ubuntu2) over (1.30.0-1) ... 109s Preparing to unpack .../02-libmbim-glib4_1.31.2-0ubuntu2_armhf.deb ... 109s Unpacking libmbim-glib4:armhf (1.31.2-0ubuntu2) over (1.30.0-1) ... 109s Preparing to unpack .../03-libjson-glib-1.0-common_1.8.0-2build1_all.deb ... 109s Unpacking libjson-glib-1.0-common (1.8.0-2build1) over (1.8.0-2) ... 109s Preparing to unpack .../04-libjson-glib-1.0-0_1.8.0-2build1_armhf.deb ... 109s Unpacking libjson-glib-1.0-0:armhf (1.8.0-2build1) over (1.8.0-2) ... 109s Preparing to unpack .../05-libnghttp2-14_1.59.0-1build1_armhf.deb ... 109s Unpacking libnghttp2-14:armhf (1.59.0-1build1) over (1.59.0-1) ... 109s Preparing to unpack .../06-libssh-4_0.10.6-2build1_armhf.deb ... 109s Unpacking libssh-4:armhf (0.10.6-2build1) over (0.10.6-2) ... 109s Preparing to unpack .../07-libusb-1.0-0_2%3a1.0.27-1_armhf.deb ... 109s Unpacking libusb-1.0-0:armhf (2:1.0.27-1) over (2:1.0.26-1) ... 109s Preparing to unpack .../08-libgusb2_0.4.8-1build1_armhf.deb ... 109s Unpacking libgusb2:armhf (0.4.8-1build1) over (0.4.8-1) ... 109s Preparing to unpack .../09-libmm-glib0_1.23.4-0ubuntu1_armhf.deb ... 109s Unpacking libmm-glib0:armhf (1.23.4-0ubuntu1) over (1.22.0-3) ... 109s Preparing to unpack .../10-libprotobuf-c1_1.4.1-1ubuntu3_armhf.deb ... 109s Unpacking libprotobuf-c1:armhf (1.4.1-1ubuntu3) over (1.4.1-1ubuntu2) ... 109s Preparing to unpack .../11-libsasl2-2_2.1.28+dfsg1-5ubuntu1_armhf.deb ... 109s Unpacking libsasl2-2:armhf (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 109s Preparing to unpack .../12-libibverbs1_50.0-2build1_armhf.deb ... 109s Unpacking libibverbs1:armhf (50.0-2build1) over (50.0-2) ... 110s Preparing to unpack .../13-libfido2-1_1.14.0-1build1_armhf.deb ... 110s Unpacking libfido2-1:armhf (1.14.0-1build1) over (1.14.0-1) ... 110s Preparing to unpack .../14-coreutils_9.4-3ubuntu3_armhf.deb ... 110s Unpacking coreutils (9.4-3ubuntu3) over (9.4-2ubuntu4) ... 110s Setting up coreutils (9.4-3ubuntu3) ... 110s (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 ... 78678 files and directories currently installed.) 110s Preparing to unpack .../util-linux_2.39.3-9ubuntu2_armhf.deb ... 110s Unpacking util-linux (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 110s Setting up util-linux (2.39.3-9ubuntu2) ... 111s fstrim.service is a disabled or a static unit not running, not starting it. 111s (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 ... 78678 files and directories currently installed.) 111s Preparing to unpack .../libc-bin_2.39-0ubuntu6_armhf.deb ... 111s Unpacking libc-bin (2.39-0ubuntu6) over (2.39-0ubuntu2) ... 111s Setting up libc-bin (2.39-0ubuntu6) ... 111s (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 ... 78678 files and directories currently installed.) 111s Removing libatm1:armhf (1:2.5.1-5) ... 111s (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 ... 78673 files and directories currently installed.) 111s Preparing to unpack .../file_1%3a5.45-3_armhf.deb ... 111s Unpacking file (1:5.45-3) over (1:5.45-2) ... 111s (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 ... 78673 files and directories currently installed.) 111s Removing libmagic1:armhf (1:5.45-2) ... 111s (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 ... 78663 files and directories currently installed.) 111s Preparing to unpack .../libmagic-mgc_1%3a5.45-3_armhf.deb ... 111s Unpacking libmagic-mgc (1:5.45-3) over (1:5.45-2) ... 111s Selecting previously unselected package libmagic1t64:armhf. 111s Preparing to unpack .../libmagic1t64_1%3a5.45-3_armhf.deb ... 111s Unpacking libmagic1t64:armhf (1:5.45-3) ... 112s Preparing to unpack .../libplymouth5_24.004.60-1ubuntu6_armhf.deb ... 112s Unpacking libplymouth5:armhf (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 112s (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 ... 78674 files and directories currently installed.) 112s Removing libpng16-16:armhf (1.6.43-1) ... 112s Selecting previously unselected package libpng16-16t64:armhf. 112s (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 ... 78664 files and directories currently installed.) 112s Preparing to unpack .../libpng16-16t64_1.6.43-3_armhf.deb ... 112s Unpacking libpng16-16t64:armhf (1.6.43-3) ... 112s Preparing to unpack .../bind9-host_1%3a9.18.24-0ubuntu3_armhf.deb ... 112s Unpacking bind9-host (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 112s Preparing to unpack .../bind9-dnsutils_1%3a9.18.24-0ubuntu3_armhf.deb ... 112s Unpacking bind9-dnsutils (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 112s Preparing to unpack .../bind9-libs_1%3a9.18.24-0ubuntu3_armhf.deb ... 112s Unpacking bind9-libs:armhf (1:9.18.24-0ubuntu3) over (1:9.18.21-0ubuntu1) ... 112s (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 ... 78675 files and directories currently installed.) 112s Removing libuv1:armhf (1.48.0-1) ... 113s Selecting previously unselected package libuv1t64:armhf. 113s (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 ... 78670 files and directories currently installed.) 113s Preparing to unpack .../libuv1t64_1.48.0-1.1_armhf.deb ... 113s Unpacking libuv1t64:armhf (1.48.0-1.1) ... 113s (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 ... 78676 files and directories currently installed.) 113s Removing python3-distutils (3.11.5-1) ... 113s (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 ... 78621 files and directories currently installed.) 113s Preparing to unpack .../uuid-runtime_2.39.3-9ubuntu2_armhf.deb ... 113s Unpacking uuid-runtime (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 113s Preparing to unpack .../libdebconfclient0_0.271ubuntu2_armhf.deb ... 113s Unpacking libdebconfclient0:armhf (0.271ubuntu2) over (0.271ubuntu1) ... 113s Setting up libdebconfclient0:armhf (0.271ubuntu2) ... 113s (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 ... 78621 files and directories currently installed.) 113s Preparing to unpack .../libsemanage-common_3.5-1build4_all.deb ... 113s Unpacking libsemanage-common (3.5-1build4) over (3.5-1build2) ... 113s Setting up libsemanage-common (3.5-1build4) ... 113s (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 ... 78621 files and directories currently installed.) 113s Preparing to unpack .../libsemanage2_3.5-1build4_armhf.deb ... 113s Unpacking libsemanage2:armhf (3.5-1build4) over (3.5-1build2) ... 113s Setting up libsemanage2:armhf (3.5-1build4) ... 113s (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 ... 78621 files and directories currently installed.) 113s Preparing to unpack .../install-info_7.1-3build1_armhf.deb ... 113s Unpacking install-info (7.1-3build1) over (7.1-3) ... 113s Setting up install-info (7.1-3build1) ... 114s (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 ... 78621 files and directories currently installed.) 114s Preparing to unpack .../00-gcc-13-base_13.2.0-19ubuntu1_armhf.deb ... 114s Unpacking gcc-13-base:armhf (13.2.0-19ubuntu1) over (13.2.0-17ubuntu2) ... 114s Preparing to unpack .../01-libss2_1.47.0-2.4~exp1ubuntu2_armhf.deb ... 114s Unpacking libss2:armhf (1.47.0-2.4~exp1ubuntu2) over (1.47.0-2ubuntu1) ... 114s Preparing to unpack .../02-dmsetup_2%3a1.02.185-3ubuntu2_armhf.deb ... 114s Unpacking dmsetup (2:1.02.185-3ubuntu2) over (2:1.02.185-3ubuntu1) ... 114s Preparing to unpack .../03-eject_2.39.3-9ubuntu2_armhf.deb ... 114s Unpacking eject (2.39.3-9ubuntu2) over (2.39.3-6ubuntu2) ... 114s Preparing to unpack .../04-krb5-locales_1.20.1-5.1ubuntu1_all.deb ... 114s Unpacking krb5-locales (1.20.1-5.1ubuntu1) over (1.20.1-5build1) ... 114s Preparing to unpack .../05-libglib2.0-data_2.79.3-3ubuntu5_all.deb ... 114s Unpacking libglib2.0-data (2.79.3-3ubuntu5) over (2.79.2-1~ubuntu1) ... 114s Preparing to unpack .../06-libslang2_2.3.3-3build1_armhf.deb ... 114s Unpacking libslang2:armhf (2.3.3-3build1) over (2.3.3-3) ... 114s Preparing to unpack .../07-locales_2.39-0ubuntu6_all.deb ... 114s Unpacking locales (2.39-0ubuntu6) over (2.39-0ubuntu2) ... 115s Preparing to unpack .../08-vim-tiny_2%3a9.1.0016-1ubuntu5_armhf.deb ... 115s Unpacking vim-tiny (2:9.1.0016-1ubuntu5) over (2:9.1.0016-1ubuntu2) ... 115s Preparing to unpack .../09-vim-common_2%3a9.1.0016-1ubuntu5_all.deb ... 115s Unpacking vim-common (2:9.1.0016-1ubuntu5) over (2:9.1.0016-1ubuntu2) ... 115s Selecting previously unselected package xdg-user-dirs. 115s Preparing to unpack .../10-xdg-user-dirs_0.18-1_armhf.deb ... 115s Unpacking xdg-user-dirs (0.18-1) ... 115s Preparing to unpack .../11-xxd_2%3a9.1.0016-1ubuntu5_armhf.deb ... 115s Unpacking xxd (2:9.1.0016-1ubuntu5) over (2:9.1.0016-1ubuntu2) ... 115s Preparing to unpack .../12-apparmor_4.0.0-beta3-0ubuntu2_armhf.deb ... 116s Unpacking apparmor (4.0.0-beta3-0ubuntu2) over (4.0.0~alpha4-0ubuntu1) ... 116s Preparing to unpack .../13-ftp_20230507-2build1_all.deb ... 116s Unpacking ftp (20230507-2build1) over (20230507-2) ... 116s Preparing to unpack .../14-inetutils-telnet_2%3a2.5-3ubuntu3_armhf.deb ... 117s Unpacking inetutils-telnet (2:2.5-3ubuntu3) over (2:2.5-3ubuntu1) ... 117s Preparing to unpack .../15-info_7.1-3build1_armhf.deb ... 117s Unpacking info (7.1-3build1) over (7.1-3) ... 117s Preparing to unpack .../16-libxmuu1_2%3a1.1.3-3build1_armhf.deb ... 117s Unpacking libxmuu1:armhf (2:1.1.3-3build1) over (2:1.1.3-3) ... 117s Preparing to unpack .../17-lshw_02.19.git.2021.06.19.996aaad9c7-2build2_armhf.deb ... 117s Unpacking lshw (02.19.git.2021.06.19.996aaad9c7-2build2) over (02.19.git.2021.06.19.996aaad9c7-2build1) ... 117s Preparing to unpack .../18-mtr-tiny_0.95-1.1build1_armhf.deb ... 117s Unpacking mtr-tiny (0.95-1.1build1) over (0.95-1.1) ... 117s Preparing to unpack .../19-plymouth-theme-ubuntu-text_24.004.60-1ubuntu6_armhf.deb ... 117s Unpacking plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 117s Preparing to unpack .../20-plymouth_24.004.60-1ubuntu6_armhf.deb ... 117s Unpacking plymouth (24.004.60-1ubuntu6) over (24.004.60-1ubuntu3) ... 117s Preparing to unpack .../21-psmisc_23.7-1_armhf.deb ... 117s Unpacking psmisc (23.7-1) over (23.6-2) ... 117s Preparing to unpack .../22-telnet_0.17+2.5-3ubuntu3_all.deb ... 117s Unpacking telnet (0.17+2.5-3ubuntu3) over (0.17+2.5-3ubuntu1) ... 117s Preparing to unpack .../23-usb.ids_2024.03.18-1_all.deb ... 117s Unpacking usb.ids (2024.03.18-1) over (2024.01.30-1) ... 117s Preparing to unpack .../24-xz-utils_5.6.0-0.2_armhf.deb ... 117s Unpacking xz-utils (5.6.0-0.2) over (5.4.5-0.3) ... 117s Preparing to unpack .../25-libctf0_2.42-4ubuntu1_armhf.deb ... 117s Unpacking libctf0:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 117s Preparing to unpack .../26-libctf-nobfd0_2.42-4ubuntu1_armhf.deb ... 117s Unpacking libctf-nobfd0:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 117s Preparing to unpack .../27-binutils-arm-linux-gnueabihf_2.42-4ubuntu1_armhf.deb ... 117s Unpacking binutils-arm-linux-gnueabihf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 118s Preparing to unpack .../28-libbinutils_2.42-4ubuntu1_armhf.deb ... 118s Unpacking libbinutils:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 118s Preparing to unpack .../29-binutils_2.42-4ubuntu1_armhf.deb ... 118s Unpacking binutils (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 118s Preparing to unpack .../30-binutils-common_2.42-4ubuntu1_armhf.deb ... 118s Unpacking binutils-common:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 118s Preparing to unpack .../31-libsframe1_2.42-4ubuntu1_armhf.deb ... 118s Unpacking libsframe1:armhf (2.42-4ubuntu1) over (2.42-3ubuntu1) ... 118s Preparing to unpack .../32-bolt_0.9.6-2build1_armhf.deb ... 118s Unpacking bolt (0.9.6-2build1) over (0.9.6-2) ... 118s Preparing to unpack .../33-cryptsetup-bin_2%3a2.7.0-1ubuntu2_armhf.deb ... 118s Unpacking cryptsetup-bin (2:2.7.0-1ubuntu2) over (2:2.7.0-1ubuntu1) ... 118s Preparing to unpack .../34-dpkg-dev_1.22.6ubuntu4_all.deb ... 118s Unpacking dpkg-dev (1.22.6ubuntu4) over (1.22.4ubuntu5) ... 118s Preparing to unpack .../35-libdpkg-perl_1.22.6ubuntu4_all.deb ... 118s Unpacking libdpkg-perl (1.22.6ubuntu4) over (1.22.4ubuntu5) ... 118s Preparing to unpack .../36-gnupg-l10n_2.4.4-2ubuntu15_all.deb ... 118s Unpacking gnupg-l10n (2.4.4-2ubuntu15) over (2.4.4-2ubuntu7) ... 118s Preparing to unpack .../37-ibverbs-providers_50.0-2build1_armhf.deb ... 118s Unpacking ibverbs-providers:armhf (50.0-2build1) over (50.0-2) ... 118s Preparing to unpack .../38-jq_1.7.1-3_armhf.deb ... 118s Unpacking jq (1.7.1-3) over (1.7.1-2) ... 118s Preparing to unpack .../39-libjq1_1.7.1-3_armhf.deb ... 118s Unpacking libjq1:armhf (1.7.1-3) over (1.7.1-2) ... 118s Selecting previously unselected package libatm1t64:armhf. 118s Preparing to unpack .../40-libatm1t64_1%3a2.5.1-5.1_armhf.deb ... 118s Unpacking libatm1t64:armhf (1:2.5.1-5.1) ... 119s Preparing to unpack .../41-libevent-core-2.1-7_2.1.12-stable-9build1_armhf.deb ... 119s Unpacking libevent-core-2.1-7:armhf (2.1.12-stable-9build1) over (2.1.12-stable-9) ... 119s Preparing to unpack .../42-libftdi1-2_1.5-6build4_armhf.deb ... 119s Unpacking libftdi1-2:armhf (1.5-6build4) over (1.5-6build3) ... 119s Preparing to unpack .../43-libldap-common_2.6.7+dfsg-1~exp1ubuntu6_all.deb ... 119s Unpacking libldap-common (2.6.7+dfsg-1~exp1ubuntu6) over (2.6.7+dfsg-1~exp1ubuntu1) ... 119s Preparing to unpack .../44-libsasl2-modules_2.1.28+dfsg1-5ubuntu1_armhf.deb ... 119s Unpacking libsasl2-modules:armhf (2.1.28+dfsg1-5ubuntu1) over (2.1.28+dfsg1-4) ... 119s Preparing to unpack .../45-python3-lib2to3_3.12.2-3ubuntu2_all.deb ... 119s Unpacking python3-lib2to3 (3.12.2-3ubuntu2) over (3.11.5-1) ... 119s Preparing to unpack .../46-python3-pyrsistent_0.20.0-1build1_armhf.deb ... 119s Unpacking python3-pyrsistent:armhf (0.20.0-1build1) over (0.20.0-1) ... 119s Preparing to unpack .../47-python3-typing-extensions_4.10.0-1_all.deb ... 119s Unpacking python3-typing-extensions (4.10.0-1) over (4.9.0-1) ... 119s Preparing to unpack .../48-kpartx_0.9.4-5ubuntu6_armhf.deb ... 119s Unpacking kpartx (0.9.4-5ubuntu6) over (0.9.4-5ubuntu3) ... 119s Setting up pinentry-curses (1.2.1-3ubuntu4) ... 119s Setting up libtext-iconv-perl:armhf (1.7-8build2) ... 119s Setting up libtext-charwidth-perl:armhf (0.04-11build2) ... 119s Setting up libibverbs1:armhf (50.0-2build1) ... 119s Setting up systemd-sysv (255.4-1ubuntu5) ... 120s Setting up libapparmor1:armhf (4.0.0-beta3-0ubuntu2) ... 120s Setting up libatm1t64:armhf (1:2.5.1-5.1) ... 120s Setting up libgdbm6t64:armhf (1.23-5.1) ... 120s Setting up bsdextrautils (2.39.3-9ubuntu2) ... 120s Setting up libgdbm-compat4t64:armhf (1.23-5.1) ... 120s Setting up xdg-user-dirs (0.18-1) ... 120s Setting up ibverbs-providers:armhf (50.0-2build1) ... 120s Setting up linux-headers-6.8.0-20 (6.8.0-20.20) ... 120s Setting up libmagic-mgc (1:5.45-3) ... 120s Setting up gawk (1:5.2.1-2build2) ... 120s Setting up psmisc (23.7-1) ... 120s Setting up libjq1:armhf (1.7.1-3) ... 120s Setting up libtirpc-common (1.3.4+ds-1.1) ... 120s Setting up libbrotli1:armhf (1.1.0-2build1) ... 120s Setting up libsqlite3-0:armhf (3.45.1-1ubuntu1) ... 120s Setting up libsasl2-modules:armhf (2.1.28+dfsg1-5ubuntu1) ... 120s Setting up libuv1t64:armhf (1.48.0-1.1) ... 120s Setting up libmagic1t64:armhf (1:5.45-3) ... 120s Setting up binutils-common:armhf (2.42-4ubuntu1) ... 120s Setting up libpsl5t64:armhf (0.21.2-1.1) ... 120s Setting up libnghttp2-14:armhf (1.59.0-1build1) ... 120s Setting up libreiserfscore0t64 (1:3.6.27-7.1) ... 120s Setting up libctf-nobfd0:armhf (2.42-4ubuntu1) ... 120s Setting up libnss-systemd:armhf (255.4-1ubuntu5) ... 120s Setting up krb5-locales (1.20.1-5.1ubuntu1) ... 120s Setting up file (1:5.45-3) ... 120s Setting up kmod (31+20240202-2ubuntu4) ... 120s Setting up lshw (02.19.git.2021.06.19.996aaad9c7-2build2) ... 120s Setting up locales (2.39-0ubuntu6) ... 121s Generating locales (this might take a while)... 123s en_US.UTF-8... done 123s Generation complete. 123s Setting up libldap-common (2.6.7+dfsg-1~exp1ubuntu6) ... 123s Setting up libprotobuf-c1:armhf (1.4.1-1ubuntu3) ... 123s Setting up xxd (2:9.1.0016-1ubuntu5) ... 123s Setting up libsframe1:armhf (2.42-4ubuntu1) ... 123s Setting up libelf1t64:armhf (0.190-1.1build2) ... 123s Setting up libkrb5support0:armhf (1.20.1-5.1ubuntu1) ... 123s Setting up linux-headers-6.8.0-20-generic (6.8.0-20.20) ... 123s Setting up eject (2.39.3-9ubuntu2) ... 123s Setting up apparmor (4.0.0-beta3-0ubuntu2) ... 123s Installing new version of config file /etc/apparmor.d/abstractions/authentication ... 123s Installing new version of config file /etc/apparmor.d/abstractions/crypto ... 123s Installing new version of config file /etc/apparmor.d/abstractions/kde-open5 ... 123s Installing new version of config file /etc/apparmor.d/abstractions/openssl ... 123s Installing new version of config file /etc/apparmor.d/code ... 123s Installing new version of config file /etc/apparmor.d/firefox ... 124s apparmor_parser: Unable to replace "lsb_release". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s apparmor_parser: Unable to replace "kmod". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s apparmor_parser: Unable to replace "nvidia_modprobe". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s sysctl: cannot stat /proc/sys/kernel/apparmor_restrict_unprivileged_userns: No such file or directory 124s Reloading AppArmor profiles 124s /sbin/apparmor_parser: Unable to replace "1password". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s /sbin/apparmor_parser: Unable to replace "Discord". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s /sbin/apparmor_parser: Unable to replace "QtWebEngineProcess". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s /sbin/apparmor_parser: Unable to replace "MongoDB Compass". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s /sbin/apparmor_parser: Unable to replace "brave". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s /sbin/apparmor_parser: Unable to replace "buildah". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s /sbin/apparmor_parser: Unable to replace "busybox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s /sbin/apparmor_parser: Unable to replace "ch-run". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 124s /sbin/apparmor_parser: Unable to replace "cam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 124s 125s /sbin/apparmor_parser: Unable to replace "chrome". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "vscode". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "element-desktop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "devhelp". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "epiphany". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "crun". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "evolution". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "firefox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "flatpak". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "geary". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "github-desktop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "ch-checkns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "goldendict". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "kchmviewer". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "keybase". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "lc-compliance". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "libcamerify". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "loupe". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "lxc-attach". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "ipa_verify". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "lxc-create". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "lxc-stop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "lxc-execute". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "lxc-unshare". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "lxc-usernsexec". /sbin/apparmor_parser: Unable to replace "mmdebstrap". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "msedge". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "linux-sandbox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "nautilus". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "notepadqq". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "obsidian". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "lxc-destroy". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "opera". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "pageedit". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "podman". /sbin/apparmor_parser: Unable to replace "opam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "polypane". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "privacybrowser". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "qcam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "qmapshack". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "rpm". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "qutebrowser". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "rootlesskit". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "runc". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-abort". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "rssguard". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-apt". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-checkpackages". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-createchroot". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-destroychroot". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-adduser". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-distupgrade". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-hold". /sbin/apparmor_parser: Unable to replace "sbuild-shell". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-clean". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-update". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-upgrade". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "scide". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "sbuild-unhold". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "slirp4netns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "steam". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "slack". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "stress-ng". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "surfshark". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "systemd-coredump". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "signal-desktop". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "toybox". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "QtWebEngineProcess". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "plasmashell". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "trinity". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "tup". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "lsb_release". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "thunderbird". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "tuxedo-control-center". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "unprivileged_userns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "userbindmount". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "uwsgi-core". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "kmod". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "nvidia_modprobe". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "virtiofsd". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "vivaldi-bin". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "vpnns". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "wpcom". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "vdens". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "rsyslogd". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "/usr/bin/man". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "unix-chkpwd". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "ubuntu_pro_apt_news". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s /sbin/apparmor_parser: Unable to replace "tcpdump". /sbin/apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 125s 125s Error: At least one profile failed to load 125s Setting up libglib2.0-0t64:armhf (2.79.3-3ubuntu5) ... 125s No schema files found: doing nothing. 125s Setting up libglib2.0-data (2.79.3-3ubuntu5) ... 125s Setting up vim-common (2:9.1.0016-1ubuntu5) ... 125s Setting up gcc-13-base:armhf (13.2.0-19ubuntu1) ... 125s Setting up libqrtr-glib0:armhf (1.2.2-1ubuntu3) ... 125s Setting up libslang2:armhf (2.3.3-3build1) ... 125s Setting up libnvme1t64 (1.8-3) ... 125s Setting up mtr-tiny (0.95-1.1build1) ... 125s Setting up gnupg-l10n (2.4.4-2ubuntu15) ... 125s Setting up librtmp1:armhf (2.4+20151223.gitfa8646d.1-2build6) ... 125s Setting up libdbus-1-3:armhf (1.14.10-4ubuntu2) ... 125s Setting up xz-utils (5.6.0-0.2) ... 125s Setting up perl-modules-5.38 (5.38.2-3.2) ... 125s Setting up libblockdev-utils3:armhf (3.1.0-1build1) ... 125s Setting up libpng16-16t64:armhf (1.6.43-3) ... 125s Setting up systemd-timesyncd (255.4-1ubuntu5) ... 125s Setting up libevent-core-2.1-7:armhf (2.1.12-stable-9build1) ... 125s Setting up udev (255.4-1ubuntu5) ... 126s Setting up libss2:armhf (1.47.0-2.4~exp1ubuntu2) ... 126s Setting up usb.ids (2024.03.18-1) ... 126s Setting up sudo (1.9.15p5-3ubuntu3) ... 126s Setting up dhcpcd-base (1:10.0.6-1ubuntu2) ... 126s Setting up gir1.2-glib-2.0:armhf (2.79.3-3ubuntu5) ... 126s Setting up libk5crypto3:armhf (1.20.1-5.1ubuntu1) ... 126s Setting up logsave (1.47.0-2.4~exp1ubuntu2) ... 126s Setting up libfdisk1:armhf (2.39.3-9ubuntu2) ... 126s Setting up libdb5.3t64:armhf (5.3.28+dfsg2-6) ... 126s Setting up libblockdev-nvme3:armhf (3.1.0-1build1) ... 126s Setting up libdevmapper1.02.1:armhf (2:1.02.185-3ubuntu2) ... 126s Setting up libblockdev-fs3:armhf (3.1.0-1build1) ... 126s Setting up python-apt-common (2.7.6build1) ... 126s Setting up mount (2.39.3-9ubuntu2) ... 126s Setting up dmsetup (2:1.02.185-3ubuntu2) ... 126s Setting up uuid-runtime (2.39.3-9ubuntu2) ... 127s uuidd.service is a disabled or a static unit not running, not starting it. 127s Setting up libmm-glib0:armhf (1.23.4-0ubuntu1) ... 127s Setting up groff-base (1.23.0-3build1) ... 127s Setting up libplymouth5:armhf (24.004.60-1ubuntu6) ... 127s Setting up dbus-session-bus-common (1.14.10-4ubuntu2) ... 127s Setting up kpartx (0.9.4-5ubuntu6) ... 127s Setting up jq (1.7.1-3) ... 127s Setting up gpgconf (2.4.4-2ubuntu15) ... 127s Setting up libpcap0.8t64:armhf (1.10.4-4.1ubuntu1) ... 127s Setting up libcryptsetup12:armhf (2:2.7.0-1ubuntu2) ... 127s Setting up libgirepository-1.0-1:armhf (1.79.1-1ubuntu6) ... 127s Setting up libjson-glib-1.0-common (1.8.0-2build1) ... 127s Setting up libkrb5-3:armhf (1.20.1-5.1ubuntu1) ... 127s Setting up libpython3.11-minimal:armhf (3.11.8-1build4) ... 127s Setting up libusb-1.0-0:armhf (2:1.0.27-1) ... 127s Setting up libperl5.38t64:armhf (5.38.2-3.2) ... 127s Setting up tnftp (20230507-2build1) ... 127s Setting up libbinutils:armhf (2.42-4ubuntu1) ... 127s Setting up dbus-system-bus-common (1.14.10-4ubuntu2) ... 127s Setting up libfido2-1:armhf (1.14.0-1build1) ... 127s Setting up openssl (3.0.13-0ubuntu2) ... 127s Setting up readline-common (8.2-3.1build1) ... 127s Setting up libxml2:armhf (2.9.14+dfsg-1.3ubuntu2) ... 127s Setting up libxmuu1:armhf (2:1.1.3-3build1) ... 127s Setting up dbus-bin (1.14.10-4ubuntu2) ... 127s Setting up info (7.1-3build1) ... 127s Setting up liblocale-gettext-perl (1.07-6ubuntu4) ... 127s Setting up gpg (2.4.4-2ubuntu15) ... 127s Setting up libgudev-1.0-0:armhf (1:238-3ubuntu2) ... 127s Setting up libpolkit-gobject-1-0:armhf (124-1ubuntu1) ... 127s Setting up libbpf1:armhf (1:1.3.0-2build1) ... 127s Setting up libmbim-glib4:armhf (1.31.2-0ubuntu2) ... 127s Setting up rsync (3.2.7-1build1) ... 128s rsync.service is a disabled or a static unit not running, not starting it. 128s Setting up libudisks2-0:armhf (2.10.1-6) ... 128s Setting up bolt (0.9.6-2build1) ... 128s bolt.service is a disabled or a static unit not running, not starting it. 128s Setting up gnupg-utils (2.4.4-2ubuntu15) ... 128s Setting up initramfs-tools-bin (0.142ubuntu23) ... 128s Setting up libctf0:armhf (2.42-4ubuntu1) ... 128s Setting up cryptsetup-bin (2:2.7.0-1ubuntu2) ... 128s Setting up python3.11-minimal (3.11.8-1build4) ... 130s Setting up tcpdump (4.99.4-3ubuntu2) ... 130s apparmor_parser: Unable to replace "tcpdump". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 130s 130s Setting up apt-utils (2.7.14) ... 130s Setting up gpg-agent (2.4.4-2ubuntu15) ... 130s Setting up libpython3.12-stdlib:armhf (3.12.2-4build3) ... 130s Setting up libblockdev-mdraid3:armhf (3.1.0-1build1) ... 130s Setting up wget (1.21.4-1ubuntu2) ... 130s Setting up libblockdev-swap3:armhf (3.1.0-1build1) ... 130s Setting up plymouth (24.004.60-1ubuntu6) ... 130s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 130s update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults 131s Setting up libxmlb2:armhf (0.3.15-1build1) ... 131s Setting up btrfs-progs (6.6.3-1.1build1) ... 131s Setting up libpython3.11-stdlib:armhf (3.11.8-1build4) ... 131s Setting up python3.12 (3.12.2-4build3) ... 132s Setting up libblockdev-loop3:armhf (3.1.0-1build1) ... 132s Setting up gpgsm (2.4.4-2ubuntu15) ... 132s Setting up inetutils-telnet (2:2.5-3ubuntu3) ... 132s Setting up e2fsprogs (1.47.0-2.4~exp1ubuntu2) ... 132s update-initramfs: deferring update (trigger activated) 133s e2scrub_all.service is a disabled or a static unit not running, not starting it. 133s Setting up libparted2t64:armhf (3.6-3.1build2) ... 133s Setting up linux-headers-generic (6.8.0-20.20+1) ... 133s Setting up dbus-daemon (1.14.10-4ubuntu2) ... 133s Setting up libmbim-proxy (1.31.2-0ubuntu2) ... 133s Setting up vim-tiny (2:9.1.0016-1ubuntu5) ... 133s Setting up libnetplan1:armhf (1.0-1) ... 133s Setting up man-db (2.12.0-3build4) ... 133s Updating database of manual pages ... 134s apparmor_parser: Unable to replace "/usr/bin/man". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 134s 134s man-db.service is a disabled or a static unit not running, not starting it. 135s Setting up libblockdev3:armhf (3.1.0-1build1) ... 135s Setting up fdisk (2.39.3-9ubuntu2) ... 135s Setting up libjson-glib-1.0-0:armhf (1.8.0-2build1) ... 135s Setting up libblockdev-part3:armhf (3.1.0-1build1) ... 135s Setting up libsasl2-modules-db:armhf (2.1.28+dfsg1-5ubuntu1) ... 135s Setting up libftdi1-2:armhf (1.5-6build4) ... 135s Setting up perl (5.38.2-3.2) ... 135s Setting up plymouth-theme-ubuntu-text (24.004.60-1ubuntu6) ... 135s update-initramfs: deferring update (trigger activated) 135s Setting up gir1.2-girepository-2.0:armhf (1.79.1-1ubuntu6) ... 135s Setting up dbus (1.14.10-4ubuntu2) ... 135s A reboot is required to replace the running dbus-daemon. 135s Please reboot the system when convenient. 135s Setting up shared-mime-info (2.4-1build1) ... 135s Setting up libgssapi-krb5-2:armhf (1.20.1-5.1ubuntu1) ... 135s Setting up ftp (20230507-2build1) ... 135s Setting up keyboxd (2.4.4-2ubuntu15) ... 135s Setting up libdpkg-perl (1.22.6ubuntu4) ... 135s Setting up libsasl2-2:armhf (2.1.28+dfsg1-5ubuntu1) ... 135s Setting up libssh-4:armhf (0.10.6-2build1) ... 135s Setting up libpam-systemd:armhf (255.4-1ubuntu5) ... 136s Setting up libpolkit-agent-1-0:armhf (124-1ubuntu1) ... 136s Setting up libgpgme11t64:armhf (1.18.0-4.1ubuntu3) ... 136s Setting up netplan-generator (1.0-1) ... 136s Removing 'diversion of /lib/systemd/system-generators/netplan to /lib/systemd/system-generators/netplan.usr-is-merged by netplan-generator' 136s Setting up initramfs-tools-core (0.142ubuntu23) ... 136s Setting up binutils-arm-linux-gnueabihf (2.42-4ubuntu1) ... 136s Setting up libarchive13t64:armhf (3.7.2-1.1ubuntu2) ... 136s Setting up libldap2:armhf (2.6.7+dfsg-1~exp1ubuntu6) ... 136s Setting up libpython3-stdlib:armhf (3.12.2-0ubuntu1) ... 136s Setting up systemd-resolved (255.4-1ubuntu5) ... 136s Setting up python3.11 (3.11.8-1build4) ... 137s Setting up telnet (0.17+2.5-3ubuntu3) ... 137s Setting up initramfs-tools (0.142ubuntu23) ... 137s update-initramfs: deferring update (trigger activated) 137s Setting up libcurl4t64:armhf (8.5.0-2ubuntu7) ... 137s Setting up bind9-libs:armhf (1:9.18.24-0ubuntu3) ... 137s Setting up libtirpc3t64:armhf (1.3.4+ds-1.1) ... 137s Setting up e2fsprogs-l10n (1.47.0-2.4~exp1ubuntu2) ... 137s Setting up iproute2 (6.1.0-1ubuntu5) ... 137s Setting up openssh-client (1:9.6p1-3ubuntu11) ... 137s Setting up libgusb2:armhf (0.4.8-1build1) ... 137s Setting up libcurl3t64-gnutls:armhf (8.5.0-2ubuntu7) ... 137s Setting up parted (3.6-3.1build2) ... 137s Setting up libqmi-glib5:armhf (1.35.2-0ubuntu1) ... 137s Setting up python3 (3.12.2-0ubuntu1) ... 138s Setting up binutils (2.42-4ubuntu1) ... 138s Setting up libjcat1:armhf (0.2.0-2build2) ... 138s Setting up dpkg-dev (1.22.6ubuntu4) ... 138s Setting up dirmngr (2.4.4-2ubuntu15) ... 138s Setting up dbus-user-session (1.14.10-4ubuntu2) ... 138s Setting up python3-cryptography (41.0.7-4build2) ... 138s Setting up python3-gi (3.47.0-3build1) ... 138s Setting up python3-typing-extensions (4.10.0-1) ... 139s Setting up lsof (4.95.0-1build2) ... 139s Setting up python3-pyrsistent:armhf (0.20.0-1build1) ... 139s Setting up libnsl2:armhf (1.3.0-3build2) ... 139s Setting up gnupg (2.4.4-2ubuntu15) ... 139s Setting up python3-netplan (1.0-1) ... 139s Setting up curl (8.5.0-2ubuntu7) ... 139s Setting up libvolume-key1:armhf (0.3.12-7build1) ... 139s Setting up bind9-host (1:9.18.24-0ubuntu3) ... 139s Setting up python3-lib2to3 (3.12.2-3ubuntu2) ... 139s Setting up python3-pkg-resources (68.1.2-2ubuntu1) ... 139s Setting up openssh-sftp-server (1:9.6p1-3ubuntu11) ... 139s Setting up python3-dbus (1.3.2-5build2) ... 140s Setting up python3-setuptools (68.1.2-2ubuntu1) ... 140s Setting up gpg-wks-client (2.4.4-2ubuntu15) ... 140s Setting up openssh-server (1:9.6p1-3ubuntu11) ... 140s Replacing config file /etc/ssh/sshd_config with new version 142s Created symlink /etc/systemd/system/ssh.service.requires/ssh.socket → /usr/lib/systemd/system/ssh.socket. 143s Setting up libblockdev-crypto3:armhf (3.1.0-1build1) ... 143s Setting up python3-gdbm:armhf (3.12.2-3ubuntu2) ... 143s Setting up python3-apt (2.7.6build1) ... 143s Setting up libfwupd2:armhf (1.9.15-1) ... 143s Setting up python3-yaml (6.0.1-2build1) ... 143s Setting up libqmi-proxy (1.35.2-0ubuntu1) ... 143s Setting up netplan.io (1.0-1) ... 143s Setting up bind9-dnsutils (1:9.18.24-0ubuntu3) ... 143s Setting up ubuntu-pro-client (31.2.1) ... 143s apparmor_parser: Unable to replace "ubuntu_pro_apt_news". apparmor_parser: Access denied. You need policy admin privileges to manage profiles. 143s 145s Setting up fwupd (1.9.15-1) ... 145s fwupd-offline-update.service is a disabled or a static unit not running, not starting it. 145s fwupd-refresh.service is a disabled or a static unit not running, not starting it. 145s fwupd.service is a disabled or a static unit not running, not starting it. 145s Setting up ubuntu-pro-client-l10n (31.2.1) ... 145s Setting up udisks2 (2.10.1-6) ... 145s vda: Failed to write 'change' to '/sys/devices/pci0000:00/0000:00:01.3/0000:04:00.0/virtio2/block/vda/uevent': Permission denied 145s vda1: Failed to write 'change' to '/sys/devices/pci0000:00/0000:00:01.3/0000:04:00.0/virtio2/block/vda/vda1/uevent': Permission denied 145s vda15: Failed to write 'change' to '/sys/devices/pci0000:00/0000:00:01.3/0000:04:00.0/virtio2/block/vda/vda15/uevent': Permission denied 145s vda2: Failed to write 'change' to '/sys/devices/pci0000:00/0000:00:01.3/0000:04:00.0/virtio2/block/vda/vda2/uevent': Permission denied 145s loop0: Failed to write 'change' to '/sys/devices/virtual/block/loop0/uevent': Permission denied 145s loop1: Failed to write 'change' to '/sys/devices/virtual/block/loop1/uevent': Permission denied 145s loop2: Failed to write 'change' to '/sys/devices/virtual/block/loop2/uevent': Permission denied 145s loop3: Failed to write 'change' to '/sys/devices/virtual/block/loop3/uevent': Permission denied 145s loop4: Failed to write 'change' to '/sys/devices/virtual/block/loop4/uevent': Permission denied 145s loop5: Failed to write 'change' to '/sys/devices/virtual/block/loop5/uevent': Permission denied 145s loop6: Failed to write 'change' to '/sys/devices/virtual/block/loop6/uevent': Permission denied 145s loop7: Failed to write 'change' to '/sys/devices/virtual/block/loop7/uevent': Permission denied 146s Processing triggers for ufw (0.36.2-5) ... 146s Processing triggers for systemd (255.4-1ubuntu5) ... 146s Processing triggers for install-info (7.1-3build1) ... 146s Processing triggers for libc-bin (2.39-0ubuntu6) ... 146s Processing triggers for initramfs-tools (0.142ubuntu23) ... 147s Reading package lists... 148s Building dependency tree... 148s Reading state information... 148s The following packages will be REMOVED: 148s linux-headers-6.8.0-11* python3-lib2to3* 149s 0 upgraded, 0 newly installed, 2 to remove and 1 not upgraded. 149s After this operation, 85.8 MB disk space will be freed. 149s (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 ... 78592 files and directories currently installed.) 149s Removing linux-headers-6.8.0-11 (6.8.0-11.11) ... 150s Removing python3-lib2to3 (3.12.2-3ubuntu2) ... 152s autopkgtest [02:09:51]: rebooting testbed after setup commands that affected boot 191s autopkgtest [02:10:30]: testbed running kernel: Linux 5.15.0-101-generic #111-Ubuntu SMP Wed Mar 6 18:01:01 UTC 2024 216s autopkgtest [02:10:55]: @@@@@@@@@@@@@@@@@@@@ apt-source r-cran-unitizer 226s Get:1 http://ftpmaster.internal/ubuntu noble/universe r-cran-unitizer 1.4.20-1 (dsc) [2167 B] 226s Get:2 http://ftpmaster.internal/ubuntu noble/universe r-cran-unitizer 1.4.20-1 (tar) [609 kB] 226s Get:3 http://ftpmaster.internal/ubuntu noble/universe r-cran-unitizer 1.4.20-1 (diff) [3464 B] 226s gpgv: Signature made Fri Oct 27 13:07:12 2023 UTC 226s gpgv: using RSA key F1F007320A035541F0A663CA578A0494D1C646D1 226s gpgv: issuer "tille@debian.org" 226s gpgv: Can't check signature: No public key 226s dpkg-source: warning: cannot verify inline signature for ./r-cran-unitizer_1.4.20-1.dsc: no acceptable signature found 226s autopkgtest [02:11:05]: testing package r-cran-unitizer version 1.4.20-1 228s autopkgtest [02:11:07]: build not needed 231s autopkgtest [02:11:10]: test run-unit-test: preparing testbed 240s Reading package lists... 240s Building dependency tree... 240s Reading state information... 241s Starting pkgProblemResolver with broken count: 0 241s Starting 2 pkgProblemResolver with broken count: 0 241s Done 241s The following additional packages will be installed: 241s fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-mono 241s fonts-font-awesome fonts-glyphicons-halflings fonts-mathjax 241s javascript-common libblas3 libcairo2 libdatrie1 libdeflate0 libfontconfig1 241s libfreetype6 libgfortran5 libgomp1 libgraphite2-3 libharfbuzz0b libice6 241s libjbig0 libjpeg-turbo8 libjpeg8 libjs-bootstrap libjs-bootstrap4 libjs-d3 241s libjs-es5-shim libjs-highlight.js libjs-jquery libjs-jquery-datatables 241s libjs-jquery-selectize.js libjs-jquery-ui libjs-json libjs-mathjax 241s libjs-microplugin.js libjs-modernizr libjs-popper.js libjs-prettify 241s libjs-sifter.js libjs-twitter-bootstrap-datepicker liblapack3 liblerc4 241s liblua5.4-0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 241s libpaper-utils libpaper1 libpixman-1-0 libsharpyuv0 libsm6 libtcl8.6 241s libthai-data libthai0 libtiff6 libtk8.6 libwebp7 libxcb-render0 libxcb-shm0 242s libxft2 libxrender1 libxss1 libxt6t64 littler node-bootstrap-sass 242s node-html5shiv node-normalize.css pandoc pandoc-data r-base-core 242s r-cran-base64enc r-cran-bslib r-cran-cachem r-cran-cli r-cran-commonmark 242s r-cran-crayon r-cran-diffobj r-cran-digest r-cran-ellipsis r-cran-evaluate 242s r-cran-fastmap r-cran-fontawesome r-cran-fs r-cran-glue r-cran-highr 242s r-cran-htmltools r-cran-httpuv r-cran-jquerylib r-cran-jsonlite r-cran-knitr 242s r-cran-later r-cran-lifecycle r-cran-littler r-cran-magrittr r-cran-memoise 242s r-cran-mime r-cran-pkgkitten r-cran-promises r-cran-r6 r-cran-rappdirs 242s r-cran-rcpp r-cran-rlang r-cran-rmarkdown r-cran-sass r-cran-shiny 242s r-cran-sourcetools r-cran-stringi r-cran-stringr r-cran-tinytex 242s r-cran-unitizer r-cran-vctrs r-cran-withr r-cran-xfun r-cran-xtable 242s r-cran-yaml unzip x11-common xdg-utils zip 242s Suggested packages: 242s apache2 | lighttpd | httpd libjs-jquery-ui-docs fonts-mathjax-extras 242s fonts-stix libjs-mathjax-doc tcl8.6 tk8.6 nodejs texlive-latex-recommended 242s texlive-xetex texlive-luatex pandoc-citeproc texlive-latex-extra context 242s wkhtmltopdf librsvg2-bin groff ghc php python ruby libjs-katex 242s citation-style-language-styles elpa-ess r-doc-info | r-doc-pdf r-mathlib 242s r-base-html r-cran-rstudioapi r-cran-markdown r-cran-testthat r-cran-getopt 242s r-cran-covr r-cran-httr r-cran-roxygen2 r-cran-inline r-cran-plm r-cran-zoo 242s r-cran-survival 242s Recommended packages: 242s node-jquery r-recommended r-base-dev r-doc-html r-cran-curl r-cran-ggplot2 242s r-cran-testthat r-cran-thematic r-cran-callr r-cran-covr r-cran-htmlwidgets 242s r-cran-mockery r-cran-processx r-cran-ps r-cran-rprojroot r-cran-rstudioapi 242s r-cran-tibble r-cran-whoami r-cran-xml2 r-cran-lattice r-cran-dplyr 242s r-cran-rsvg r-cran-pillar r-cran-spelling r-cran-dbi r-cran-rsqlite 242s r-cran-waldo r-cran-testit r-cran-cairo r-cran-markdown r-cran-ragg 242s r-cran-httr r-cran-r.rsp r-cran-sf r-cran-codetools r-cran-formatr 242s r-cran-gridsvg r-cran-jpeg r-cran-magick r-cran-png r-cran-reticulate 242s r-cran-rgl r-cran-tikzdevice r-cran-webshot r-cran-svglite node-highlight.js 242s r-cran-lintr r-cran-tidyverse r-cran-future r-cran-purrr r-cran-usethis 242s r-cran-dygraphs r-cran-rsconnect r-cran-downlit r-cran-bit64 r-cran-generics 242s r-cran-pkgdown r-cran-zeallot r-cran-remotes r-cran-renv r-cran-runit 242s libfile-mimeinfo-perl libnet-dbus-perl libx11-protocol-perl x11-utils 242s x11-xserver-utils 242s The following NEW packages will be installed: 242s autopkgtest-satdep fontconfig fontconfig-config fonts-dejavu-core 242s fonts-dejavu-mono fonts-font-awesome fonts-glyphicons-halflings 242s fonts-mathjax javascript-common libblas3 libcairo2 libdatrie1 libdeflate0 242s libfontconfig1 libfreetype6 libgfortran5 libgomp1 libgraphite2-3 242s libharfbuzz0b libice6 libjbig0 libjpeg-turbo8 libjpeg8 libjs-bootstrap 242s libjs-bootstrap4 libjs-d3 libjs-es5-shim libjs-highlight.js libjs-jquery 242s libjs-jquery-datatables libjs-jquery-selectize.js libjs-jquery-ui libjs-json 242s libjs-mathjax libjs-microplugin.js libjs-modernizr libjs-popper.js 242s libjs-prettify libjs-sifter.js libjs-twitter-bootstrap-datepicker liblapack3 242s liblerc4 liblua5.4-0 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 242s libpaper-utils libpaper1 libpixman-1-0 libsharpyuv0 libsm6 libtcl8.6 242s libthai-data libthai0 libtiff6 libtk8.6 libwebp7 libxcb-render0 libxcb-shm0 242s libxft2 libxrender1 libxss1 libxt6t64 littler node-bootstrap-sass 242s node-html5shiv node-normalize.css pandoc pandoc-data r-base-core 242s r-cran-base64enc r-cran-bslib r-cran-cachem r-cran-cli r-cran-commonmark 242s r-cran-crayon r-cran-diffobj r-cran-digest r-cran-ellipsis r-cran-evaluate 242s r-cran-fastmap r-cran-fontawesome r-cran-fs r-cran-glue r-cran-highr 242s r-cran-htmltools r-cran-httpuv r-cran-jquerylib r-cran-jsonlite r-cran-knitr 242s r-cran-later r-cran-lifecycle r-cran-littler r-cran-magrittr r-cran-memoise 242s r-cran-mime r-cran-pkgkitten r-cran-promises r-cran-r6 r-cran-rappdirs 242s r-cran-rcpp r-cran-rlang r-cran-rmarkdown r-cran-sass r-cran-shiny 242s r-cran-sourcetools r-cran-stringi r-cran-stringr r-cran-tinytex 242s r-cran-unitizer r-cran-vctrs r-cran-withr r-cran-xfun r-cran-xtable 242s r-cran-yaml unzip x11-common xdg-utils zip 242s 0 upgraded, 119 newly installed, 0 to remove and 1 not upgraded. 242s Need to get 107 MB/107 MB of archives. 242s After this operation, 406 MB of additional disk space will be used. 242s Get:1 /tmp/autopkgtest.HV3Vlf/1-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [724 B] 242s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfreetype6 armhf 2.13.2+dfsg-1build2 [331 kB] 242s Get:3 http://ftpmaster.internal/ubuntu noble/main armhf fonts-dejavu-mono all 2.37-8 [502 kB] 242s Get:4 http://ftpmaster.internal/ubuntu noble/main armhf fonts-dejavu-core all 2.37-8 [835 kB] 242s Get:5 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fontconfig-config armhf 2.15.0-1.1ubuntu1 [37.4 kB] 242s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libfontconfig1 armhf 2.15.0-1.1ubuntu1 [113 kB] 242s Get:7 http://ftpmaster.internal/ubuntu noble-proposed/main armhf fontconfig armhf 2.15.0-1.1ubuntu1 [189 kB] 242s Get:8 http://ftpmaster.internal/ubuntu noble/main armhf fonts-font-awesome all 5.0.10+really4.7.0~dfsg-4.1 [516 kB] 242s Get:9 http://ftpmaster.internal/ubuntu noble/universe armhf fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 242s Get:10 http://ftpmaster.internal/ubuntu noble/main armhf fonts-mathjax all 2.7.9+dfsg-1 [2208 kB] 242s Get:11 http://ftpmaster.internal/ubuntu noble/main armhf javascript-common all 11+nmu1 [5936 B] 242s Get:12 http://ftpmaster.internal/ubuntu noble/main armhf libblas3 armhf 3.12.0-3 [123 kB] 242s Get:13 http://ftpmaster.internal/ubuntu noble/main armhf libpixman-1-0 armhf 0.42.2-1 [184 kB] 242s Get:14 http://ftpmaster.internal/ubuntu noble/main armhf libxcb-render0 armhf 1.15-1 [15.2 kB] 242s Get:15 http://ftpmaster.internal/ubuntu noble/main armhf libxcb-shm0 armhf 1.15-1 [5852 B] 242s Get:16 http://ftpmaster.internal/ubuntu noble/main armhf libxrender1 armhf 1:0.9.10-1.1 [16.5 kB] 242s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcairo2 armhf 1.18.0-1ubuntu1 [482 kB] 242s Get:18 http://ftpmaster.internal/ubuntu noble/main armhf libdatrie1 armhf 0.2.13-3 [16.9 kB] 242s Get:19 http://ftpmaster.internal/ubuntu noble/main armhf libdeflate0 armhf 1.19-1 [41.3 kB] 242s Get:20 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgfortran5 armhf 14-20240315-1ubuntu1 [312 kB] 242s Get:21 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgomp1 armhf 14-20240315-1ubuntu1 [125 kB] 242s Get:22 http://ftpmaster.internal/ubuntu noble/main armhf libgraphite2-3 armhf 1.3.14-2 [72.7 kB] 242s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libharfbuzz0b armhf 8.3.0-2build1 [446 kB] 242s Get:24 http://ftpmaster.internal/ubuntu noble/main armhf x11-common all 1:7.7+23ubuntu2 [23.4 kB] 242s Get:25 http://ftpmaster.internal/ubuntu noble/main armhf libice6 armhf 2:1.0.10-1build2 [36.4 kB] 242s Get:26 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg-turbo8 armhf 2.1.5-2ubuntu1 [123 kB] 242s Get:27 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg8 armhf 8c-2ubuntu11 [2148 B] 242s Get:28 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 242s Get:29 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-popper.js all 1.16.1+ds-6 [54.1 kB] 242s Get:30 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-bootstrap4 all 4.6.1+dfsg1-4 [537 kB] 243s Get:31 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-d3 all 3.5.17-4 [132 kB] 243s Get:32 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-es5-shim all 4.6.7-2 [39.8 kB] 243s Get:33 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-highlight.js all 9.18.5+dfsg1-2 [385 kB] 243s Get:34 http://ftpmaster.internal/ubuntu noble/main armhf libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 243s Get:35 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-jquery-datatables all 1.11.5+dfsg-2 [146 kB] 243s Get:36 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-sifter.js all 0.6.0+dfsg-3 [12.6 kB] 243s Get:37 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-microplugin.js all 0.0.3+dfsg-1.1 [3712 B] 243s Get:38 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-jquery-selectize.js all 0.12.6+dfsg-1.1 [51.0 kB] 243s Get:39 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-jquery-ui all 1.13.2+dfsg-1 [252 kB] 243s Get:40 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-json all 0~20221030+~1.0.8-1 [20.6 kB] 243s Get:41 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-prettify all 2015.12.04+dfsg-1.1 [39.3 kB] 243s Get:42 http://ftpmaster.internal/ubuntu noble/main armhf liblapack3 armhf 3.12.0-3 [2085 kB] 243s Get:43 http://ftpmaster.internal/ubuntu noble/main armhf liblerc4 armhf 4.0.0+ds-4ubuntu1 [152 kB] 243s Get:44 http://ftpmaster.internal/ubuntu noble-proposed/main armhf liblua5.4-0 armhf 5.4.6-3build1 [133 kB] 243s Get:45 http://ftpmaster.internal/ubuntu noble/main armhf libthai-data all 0.1.29-2 [158 kB] 243s Get:46 http://ftpmaster.internal/ubuntu noble/main armhf libthai0 armhf 0.1.29-2 [15.1 kB] 243s Get:47 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpango-1.0-0 armhf 1.52.1+ds-1 [206 kB] 243s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpangoft2-1.0-0 armhf 1.52.1+ds-1 [36.4 kB] 243s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpangocairo-1.0-0 armhf 1.52.1+ds-1 [24.9 kB] 243s Get:50 http://ftpmaster.internal/ubuntu noble/main armhf libpaper1 armhf 1.1.29 [12.5 kB] 243s Get:51 http://ftpmaster.internal/ubuntu noble/main armhf libpaper-utils armhf 1.1.29 [8170 B] 243s Get:52 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libsharpyuv0 armhf 1.3.2-0.4build2 [13.6 kB] 243s Get:53 http://ftpmaster.internal/ubuntu noble/main armhf libsm6 armhf 2:1.2.3-1build2 [15.1 kB] 243s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtcl8.6 armhf 8.6.14+dfsg-1 [903 kB] 243s Get:55 http://ftpmaster.internal/ubuntu noble/main armhf libjbig0 armhf 2.1-6.1ubuntu1 [24.9 kB] 243s Get:56 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libwebp7 armhf 1.3.2-0.4build2 [183 kB] 243s Get:57 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libtiff6 armhf 4.5.1+git230720-4ubuntu1 [178 kB] 243s Get:58 http://ftpmaster.internal/ubuntu noble/main armhf libxft2 armhf 2.3.6-1 [36.8 kB] 243s Get:59 http://ftpmaster.internal/ubuntu noble/main armhf libxss1 armhf 1:1.2.3-1build2 [7580 B] 243s Get:60 http://ftpmaster.internal/ubuntu noble/main armhf libtk8.6 armhf 8.6.13-2 [680 kB] 243s Get:61 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libxt6t64 armhf 1:1.2.1-1.2 [145 kB] 243s Get:62 http://ftpmaster.internal/ubuntu noble/main armhf zip armhf 3.0-13 [162 kB] 243s Get:63 http://ftpmaster.internal/ubuntu noble/main armhf unzip armhf 6.0-28ubuntu3 [163 kB] 243s Get:64 http://ftpmaster.internal/ubuntu noble/main armhf xdg-utils all 1.1.3-4.1ubuntu3 [62.0 kB] 243s Get:65 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-base-core armhf 4.3.3-2build1 [26.6 MB] 244s Get:66 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-littler armhf 0.3.19-1 [80.8 kB] 244s Get:67 http://ftpmaster.internal/ubuntu noble/universe armhf littler all 0.3.19-1 [2472 B] 244s Get:68 http://ftpmaster.internal/ubuntu noble/universe armhf node-bootstrap-sass all 3.4.3-2 [187 kB] 244s Get:69 http://ftpmaster.internal/ubuntu noble/universe armhf node-html5shiv all 3.7.3+dfsg-5 [13.5 kB] 244s Get:70 http://ftpmaster.internal/ubuntu noble/universe armhf node-normalize.css all 8.0.1-5 [10.8 kB] 244s Get:71 http://ftpmaster.internal/ubuntu noble/universe armhf pandoc-data all 3.1.3-1 [92.4 kB] 244s Get:72 http://ftpmaster.internal/ubuntu noble/universe armhf pandoc armhf 3.1.3+ds-2 [31.9 MB] 244s Get:73 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-base64enc armhf 0.1-3-3 [27.3 kB] 244s Get:74 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-rlang armhf 1.1.3-1 [1658 kB] 244s Get:75 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-fastmap armhf 1.1.1-1 [68.1 kB] 244s Get:76 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-cachem armhf 1.0.8-1 [72.0 kB] 244s Get:77 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-digest armhf 0.6.34-1 [180 kB] 244s Get:78 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-ellipsis armhf 0.3.2-2 [35.0 kB] 244s Get:79 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-htmltools armhf 0.5.7-1 [368 kB] 244s Get:80 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-jquerylib all 0.1.4+dfsg-4 [13.5 kB] 244s Get:81 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-jsonlite armhf 1.8.8+dfsg-1 [438 kB] 244s Get:82 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-cli armhf 3.6.2-1 [1363 kB] 244s Get:83 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-glue armhf 1.7.0-1 [153 kB] 244s Get:84 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 244s Get:85 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-memoise all 2.0.1-1 [53.9 kB] 244s Get:86 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-mime armhf 0.12-1 [35.5 kB] 244s Get:87 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-cran-fs armhf 1.6.3+dfsg-1build1 [226 kB] 244s Get:88 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-r6 all 2.5.1-1 [99.0 kB] 244s Get:89 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-rappdirs armhf 0.3.3-1 [47.4 kB] 244s Get:90 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-sass armhf 0.4.8+dfsg-1 [921 kB] 244s Get:91 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-bslib all 0.6.1+dfsg-1 [5138 kB] 245s Get:92 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-commonmark armhf 1.9.1-1 [110 kB] 245s Get:93 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-crayon all 1.5.2-1 [164 kB] 245s Get:94 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-diffobj armhf 0.3.5-1 [1115 kB] 245s Get:95 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-evaluate all 0.23-1 [90.2 kB] 245s Get:96 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-fontawesome all 0.5.2-1 [1300 kB] 245s Get:97 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-xfun armhf 0.41+dfsg-1 [415 kB] 245s Get:98 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-highr all 0.10+dfsg-1 [38.3 kB] 245s Get:99 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-pkgkitten all 0.2.3-1 [25.1 kB] 245s Get:100 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-rcpp armhf 1.0.12-1 [1968 kB] 245s Get:101 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-later armhf 1.3.2+dfsg-1 [118 kB] 245s Get:102 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-magrittr armhf 2.0.3-1 [154 kB] 245s Get:103 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-promises armhf 1.2.1+dfsg-1 [281 kB] 245s Get:104 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-cran-httpuv armhf 1.6.14+dfsg-1build1 [489 kB] 245s Get:105 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-yaml armhf 2.3.8-1 [99.0 kB] 245s Get:106 http://ftpmaster.internal/ubuntu noble/main armhf libjs-mathjax all 2.7.9+dfsg-1 [5665 kB] 245s Get:107 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-knitr all 1.45+dfsg-1 [917 kB] 245s Get:108 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-stringi armhf 1.8.3-1 [859 kB] 245s Get:109 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-vctrs armhf 0.6.5-1 [1310 kB] 245s Get:110 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-stringr all 1.5.1-1 [290 kB] 245s Get:111 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-tinytex all 0.49-1 [141 kB] 245s Get:112 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-modernizr all 2.6.2+ds1-5 [48.3 kB] 246s Get:113 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-xtable all 1:1.8-4-2 [689 kB] 246s Get:114 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-sourcetools armhf 0.1.7-1-1 [45.7 kB] 246s Get:115 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-cran-withr all 3.0.0+dfsg-1 [228 kB] 246s Get:116 http://ftpmaster.internal/ubuntu noble/universe armhf libjs-twitter-bootstrap-datepicker all 1.3.1+dfsg1-4.1 [28.5 kB] 246s Get:117 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-shiny all 1.8.0+dfsg-1 [2762 kB] 246s Get:118 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-rmarkdown all 2.25+dfsg-3 [1481 kB] 246s Get:119 http://ftpmaster.internal/ubuntu noble/universe armhf r-cran-unitizer all 1.4.20-1 [1419 kB] 246s Preconfiguring packages ... 246s Fetched 107 MB in 4s (26.0 MB/s) 246s Selecting previously unselected package libfreetype6:armhf. 246s (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 ... 58435 files and directories currently installed.) 246s Preparing to unpack .../000-libfreetype6_2.13.2+dfsg-1build2_armhf.deb ... 246s Unpacking libfreetype6:armhf (2.13.2+dfsg-1build2) ... 246s Selecting previously unselected package fonts-dejavu-mono. 246s Preparing to unpack .../001-fonts-dejavu-mono_2.37-8_all.deb ... 246s Unpacking fonts-dejavu-mono (2.37-8) ... 246s Selecting previously unselected package fonts-dejavu-core. 246s Preparing to unpack .../002-fonts-dejavu-core_2.37-8_all.deb ... 246s Unpacking fonts-dejavu-core (2.37-8) ... 246s Selecting previously unselected package fontconfig-config. 247s Preparing to unpack .../003-fontconfig-config_2.15.0-1.1ubuntu1_armhf.deb ... 247s Unpacking fontconfig-config (2.15.0-1.1ubuntu1) ... 247s Selecting previously unselected package libfontconfig1:armhf. 247s Preparing to unpack .../004-libfontconfig1_2.15.0-1.1ubuntu1_armhf.deb ... 247s Unpacking libfontconfig1:armhf (2.15.0-1.1ubuntu1) ... 247s Selecting previously unselected package fontconfig. 247s Preparing to unpack .../005-fontconfig_2.15.0-1.1ubuntu1_armhf.deb ... 247s Unpacking fontconfig (2.15.0-1.1ubuntu1) ... 247s Selecting previously unselected package fonts-font-awesome. 247s Preparing to unpack .../006-fonts-font-awesome_5.0.10+really4.7.0~dfsg-4.1_all.deb ... 247s Unpacking fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... 247s Selecting previously unselected package fonts-glyphicons-halflings. 247s Preparing to unpack .../007-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 247s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 247s Selecting previously unselected package fonts-mathjax. 247s Preparing to unpack .../008-fonts-mathjax_2.7.9+dfsg-1_all.deb ... 247s Unpacking fonts-mathjax (2.7.9+dfsg-1) ... 247s Selecting previously unselected package javascript-common. 247s Preparing to unpack .../009-javascript-common_11+nmu1_all.deb ... 247s Unpacking javascript-common (11+nmu1) ... 247s Selecting previously unselected package libblas3:armhf. 247s Preparing to unpack .../010-libblas3_3.12.0-3_armhf.deb ... 247s Unpacking libblas3:armhf (3.12.0-3) ... 247s Selecting previously unselected package libpixman-1-0:armhf. 247s Preparing to unpack .../011-libpixman-1-0_0.42.2-1_armhf.deb ... 247s Unpacking libpixman-1-0:armhf (0.42.2-1) ... 247s Selecting previously unselected package libxcb-render0:armhf. 247s Preparing to unpack .../012-libxcb-render0_1.15-1_armhf.deb ... 247s Unpacking libxcb-render0:armhf (1.15-1) ... 247s Selecting previously unselected package libxcb-shm0:armhf. 247s Preparing to unpack .../013-libxcb-shm0_1.15-1_armhf.deb ... 247s Unpacking libxcb-shm0:armhf (1.15-1) ... 247s Selecting previously unselected package libxrender1:armhf. 247s Preparing to unpack .../014-libxrender1_1%3a0.9.10-1.1_armhf.deb ... 247s Unpacking libxrender1:armhf (1:0.9.10-1.1) ... 247s Selecting previously unselected package libcairo2:armhf. 247s Preparing to unpack .../015-libcairo2_1.18.0-1ubuntu1_armhf.deb ... 247s Unpacking libcairo2:armhf (1.18.0-1ubuntu1) ... 247s Selecting previously unselected package libdatrie1:armhf. 247s Preparing to unpack .../016-libdatrie1_0.2.13-3_armhf.deb ... 247s Unpacking libdatrie1:armhf (0.2.13-3) ... 247s Selecting previously unselected package libdeflate0:armhf. 247s Preparing to unpack .../017-libdeflate0_1.19-1_armhf.deb ... 247s Unpacking libdeflate0:armhf (1.19-1) ... 247s Selecting previously unselected package libgfortran5:armhf. 247s Preparing to unpack .../018-libgfortran5_14-20240315-1ubuntu1_armhf.deb ... 247s Unpacking libgfortran5:armhf (14-20240315-1ubuntu1) ... 247s Selecting previously unselected package libgomp1:armhf. 247s Preparing to unpack .../019-libgomp1_14-20240315-1ubuntu1_armhf.deb ... 247s Unpacking libgomp1:armhf (14-20240315-1ubuntu1) ... 247s Selecting previously unselected package libgraphite2-3:armhf. 248s Preparing to unpack .../020-libgraphite2-3_1.3.14-2_armhf.deb ... 248s Unpacking libgraphite2-3:armhf (1.3.14-2) ... 248s Selecting previously unselected package libharfbuzz0b:armhf. 248s Preparing to unpack .../021-libharfbuzz0b_8.3.0-2build1_armhf.deb ... 248s Unpacking libharfbuzz0b:armhf (8.3.0-2build1) ... 248s Selecting previously unselected package x11-common. 248s Preparing to unpack .../022-x11-common_1%3a7.7+23ubuntu2_all.deb ... 248s Unpacking x11-common (1:7.7+23ubuntu2) ... 248s Selecting previously unselected package libice6:armhf. 248s Preparing to unpack .../023-libice6_2%3a1.0.10-1build2_armhf.deb ... 248s Unpacking libice6:armhf (2:1.0.10-1build2) ... 248s Selecting previously unselected package libjpeg-turbo8:armhf. 248s Preparing to unpack .../024-libjpeg-turbo8_2.1.5-2ubuntu1_armhf.deb ... 248s Unpacking libjpeg-turbo8:armhf (2.1.5-2ubuntu1) ... 248s Selecting previously unselected package libjpeg8:armhf. 248s Preparing to unpack .../025-libjpeg8_8c-2ubuntu11_armhf.deb ... 248s Unpacking libjpeg8:armhf (8c-2ubuntu11) ... 248s Selecting previously unselected package libjs-bootstrap. 248s Preparing to unpack .../026-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 248s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 248s Selecting previously unselected package libjs-popper.js. 248s Preparing to unpack .../027-libjs-popper.js_1.16.1+ds-6_all.deb ... 248s Unpacking libjs-popper.js (1.16.1+ds-6) ... 248s Selecting previously unselected package libjs-bootstrap4. 248s Preparing to unpack .../028-libjs-bootstrap4_4.6.1+dfsg1-4_all.deb ... 248s Unpacking libjs-bootstrap4 (4.6.1+dfsg1-4) ... 248s Selecting previously unselected package libjs-d3. 248s Preparing to unpack .../029-libjs-d3_3.5.17-4_all.deb ... 248s Unpacking libjs-d3 (3.5.17-4) ... 248s Selecting previously unselected package libjs-es5-shim. 248s Preparing to unpack .../030-libjs-es5-shim_4.6.7-2_all.deb ... 248s Unpacking libjs-es5-shim (4.6.7-2) ... 248s Selecting previously unselected package libjs-highlight.js. 248s Preparing to unpack .../031-libjs-highlight.js_9.18.5+dfsg1-2_all.deb ... 248s Unpacking libjs-highlight.js (9.18.5+dfsg1-2) ... 248s Selecting previously unselected package libjs-jquery. 248s Preparing to unpack .../032-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 248s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 248s Selecting previously unselected package libjs-jquery-datatables. 248s Preparing to unpack .../033-libjs-jquery-datatables_1.11.5+dfsg-2_all.deb ... 248s Unpacking libjs-jquery-datatables (1.11.5+dfsg-2) ... 248s Selecting previously unselected package libjs-sifter.js. 248s Preparing to unpack .../034-libjs-sifter.js_0.6.0+dfsg-3_all.deb ... 248s Unpacking libjs-sifter.js (0.6.0+dfsg-3) ... 248s Selecting previously unselected package libjs-microplugin.js. 248s Preparing to unpack .../035-libjs-microplugin.js_0.0.3+dfsg-1.1_all.deb ... 248s Unpacking libjs-microplugin.js (0.0.3+dfsg-1.1) ... 248s Selecting previously unselected package libjs-jquery-selectize.js. 248s Preparing to unpack .../036-libjs-jquery-selectize.js_0.12.6+dfsg-1.1_all.deb ... 248s Unpacking libjs-jquery-selectize.js (0.12.6+dfsg-1.1) ... 248s Selecting previously unselected package libjs-jquery-ui. 248s Preparing to unpack .../037-libjs-jquery-ui_1.13.2+dfsg-1_all.deb ... 248s Unpacking libjs-jquery-ui (1.13.2+dfsg-1) ... 248s Selecting previously unselected package libjs-json. 248s Preparing to unpack .../038-libjs-json_0~20221030+~1.0.8-1_all.deb ... 248s Unpacking libjs-json (0~20221030+~1.0.8-1) ... 248s Selecting previously unselected package libjs-prettify. 248s Preparing to unpack .../039-libjs-prettify_2015.12.04+dfsg-1.1_all.deb ... 248s Unpacking libjs-prettify (2015.12.04+dfsg-1.1) ... 248s Selecting previously unselected package liblapack3:armhf. 248s Preparing to unpack .../040-liblapack3_3.12.0-3_armhf.deb ... 248s Unpacking liblapack3:armhf (3.12.0-3) ... 249s Selecting previously unselected package liblerc4:armhf. 249s Preparing to unpack .../041-liblerc4_4.0.0+ds-4ubuntu1_armhf.deb ... 249s Unpacking liblerc4:armhf (4.0.0+ds-4ubuntu1) ... 249s Selecting previously unselected package liblua5.4-0:armhf. 249s Preparing to unpack .../042-liblua5.4-0_5.4.6-3build1_armhf.deb ... 249s Unpacking liblua5.4-0:armhf (5.4.6-3build1) ... 249s Selecting previously unselected package libthai-data. 249s Preparing to unpack .../043-libthai-data_0.1.29-2_all.deb ... 249s Unpacking libthai-data (0.1.29-2) ... 249s Selecting previously unselected package libthai0:armhf. 249s Preparing to unpack .../044-libthai0_0.1.29-2_armhf.deb ... 249s Unpacking libthai0:armhf (0.1.29-2) ... 249s Selecting previously unselected package libpango-1.0-0:armhf. 249s Preparing to unpack .../045-libpango-1.0-0_1.52.1+ds-1_armhf.deb ... 249s Unpacking libpango-1.0-0:armhf (1.52.1+ds-1) ... 249s Selecting previously unselected package libpangoft2-1.0-0:armhf. 249s Preparing to unpack .../046-libpangoft2-1.0-0_1.52.1+ds-1_armhf.deb ... 249s Unpacking libpangoft2-1.0-0:armhf (1.52.1+ds-1) ... 249s Selecting previously unselected package libpangocairo-1.0-0:armhf. 249s Preparing to unpack .../047-libpangocairo-1.0-0_1.52.1+ds-1_armhf.deb ... 249s Unpacking libpangocairo-1.0-0:armhf (1.52.1+ds-1) ... 249s Selecting previously unselected package libpaper1:armhf. 249s Preparing to unpack .../048-libpaper1_1.1.29_armhf.deb ... 249s Unpacking libpaper1:armhf (1.1.29) ... 249s Selecting previously unselected package libpaper-utils. 249s Preparing to unpack .../049-libpaper-utils_1.1.29_armhf.deb ... 249s Unpacking libpaper-utils (1.1.29) ... 249s Selecting previously unselected package libsharpyuv0:armhf. 249s Preparing to unpack .../050-libsharpyuv0_1.3.2-0.4build2_armhf.deb ... 249s Unpacking libsharpyuv0:armhf (1.3.2-0.4build2) ... 249s Selecting previously unselected package libsm6:armhf. 249s Preparing to unpack .../051-libsm6_2%3a1.2.3-1build2_armhf.deb ... 249s Unpacking libsm6:armhf (2:1.2.3-1build2) ... 249s Selecting previously unselected package libtcl8.6:armhf. 249s Preparing to unpack .../052-libtcl8.6_8.6.14+dfsg-1_armhf.deb ... 249s Unpacking libtcl8.6:armhf (8.6.14+dfsg-1) ... 249s Selecting previously unselected package libjbig0:armhf. 249s Preparing to unpack .../053-libjbig0_2.1-6.1ubuntu1_armhf.deb ... 249s Unpacking libjbig0:armhf (2.1-6.1ubuntu1) ... 249s Selecting previously unselected package libwebp7:armhf. 249s Preparing to unpack .../054-libwebp7_1.3.2-0.4build2_armhf.deb ... 249s Unpacking libwebp7:armhf (1.3.2-0.4build2) ... 249s Selecting previously unselected package libtiff6:armhf. 249s Preparing to unpack .../055-libtiff6_4.5.1+git230720-4ubuntu1_armhf.deb ... 249s Unpacking libtiff6:armhf (4.5.1+git230720-4ubuntu1) ... 249s Selecting previously unselected package libxft2:armhf. 249s Preparing to unpack .../056-libxft2_2.3.6-1_armhf.deb ... 249s Unpacking libxft2:armhf (2.3.6-1) ... 249s Selecting previously unselected package libxss1:armhf. 249s Preparing to unpack .../057-libxss1_1%3a1.2.3-1build2_armhf.deb ... 249s Unpacking libxss1:armhf (1:1.2.3-1build2) ... 249s Selecting previously unselected package libtk8.6:armhf. 249s Preparing to unpack .../058-libtk8.6_8.6.13-2_armhf.deb ... 249s Unpacking libtk8.6:armhf (8.6.13-2) ... 249s Selecting previously unselected package libxt6t64:armhf. 249s Preparing to unpack .../059-libxt6t64_1%3a1.2.1-1.2_armhf.deb ... 249s Unpacking libxt6t64:armhf (1:1.2.1-1.2) ... 249s Selecting previously unselected package zip. 249s Preparing to unpack .../060-zip_3.0-13_armhf.deb ... 249s Unpacking zip (3.0-13) ... 249s Selecting previously unselected package unzip. 249s Preparing to unpack .../061-unzip_6.0-28ubuntu3_armhf.deb ... 249s Unpacking unzip (6.0-28ubuntu3) ... 249s Selecting previously unselected package xdg-utils. 249s Preparing to unpack .../062-xdg-utils_1.1.3-4.1ubuntu3_all.deb ... 249s Unpacking xdg-utils (1.1.3-4.1ubuntu3) ... 249s Selecting previously unselected package r-base-core. 249s Preparing to unpack .../063-r-base-core_4.3.3-2build1_armhf.deb ... 249s Unpacking r-base-core (4.3.3-2build1) ... 250s Selecting previously unselected package r-cran-littler. 250s Preparing to unpack .../064-r-cran-littler_0.3.19-1_armhf.deb ... 250s Unpacking r-cran-littler (0.3.19-1) ... 250s Selecting previously unselected package littler. 250s Preparing to unpack .../065-littler_0.3.19-1_all.deb ... 250s Unpacking littler (0.3.19-1) ... 250s Selecting previously unselected package node-bootstrap-sass. 250s Preparing to unpack .../066-node-bootstrap-sass_3.4.3-2_all.deb ... 250s Unpacking node-bootstrap-sass (3.4.3-2) ... 250s Selecting previously unselected package node-html5shiv. 250s Preparing to unpack .../067-node-html5shiv_3.7.3+dfsg-5_all.deb ... 250s Unpacking node-html5shiv (3.7.3+dfsg-5) ... 250s Selecting previously unselected package node-normalize.css. 250s Preparing to unpack .../068-node-normalize.css_8.0.1-5_all.deb ... 250s Unpacking node-normalize.css (8.0.1-5) ... 250s Selecting previously unselected package pandoc-data. 250s Preparing to unpack .../069-pandoc-data_3.1.3-1_all.deb ... 250s Unpacking pandoc-data (3.1.3-1) ... 250s Selecting previously unselected package pandoc. 250s Preparing to unpack .../070-pandoc_3.1.3+ds-2_armhf.deb ... 250s Unpacking pandoc (3.1.3+ds-2) ... 251s Selecting previously unselected package r-cran-base64enc. 251s Preparing to unpack .../071-r-cran-base64enc_0.1-3-3_armhf.deb ... 251s Unpacking r-cran-base64enc (0.1-3-3) ... 251s Selecting previously unselected package r-cran-rlang. 251s Preparing to unpack .../072-r-cran-rlang_1.1.3-1_armhf.deb ... 251s Unpacking r-cran-rlang (1.1.3-1) ... 251s Selecting previously unselected package r-cran-fastmap. 251s Preparing to unpack .../073-r-cran-fastmap_1.1.1-1_armhf.deb ... 251s Unpacking r-cran-fastmap (1.1.1-1) ... 251s Selecting previously unselected package r-cran-cachem. 251s Preparing to unpack .../074-r-cran-cachem_1.0.8-1_armhf.deb ... 251s Unpacking r-cran-cachem (1.0.8-1) ... 251s Selecting previously unselected package r-cran-digest. 251s Preparing to unpack .../075-r-cran-digest_0.6.34-1_armhf.deb ... 251s Unpacking r-cran-digest (0.6.34-1) ... 251s Selecting previously unselected package r-cran-ellipsis. 251s Preparing to unpack .../076-r-cran-ellipsis_0.3.2-2_armhf.deb ... 251s Unpacking r-cran-ellipsis (0.3.2-2) ... 251s Selecting previously unselected package r-cran-htmltools. 251s Preparing to unpack .../077-r-cran-htmltools_0.5.7-1_armhf.deb ... 251s Unpacking r-cran-htmltools (0.5.7-1) ... 251s Selecting previously unselected package r-cran-jquerylib. 251s Preparing to unpack .../078-r-cran-jquerylib_0.1.4+dfsg-4_all.deb ... 251s Unpacking r-cran-jquerylib (0.1.4+dfsg-4) ... 251s Selecting previously unselected package r-cran-jsonlite. 252s Preparing to unpack .../079-r-cran-jsonlite_1.8.8+dfsg-1_armhf.deb ... 252s Unpacking r-cran-jsonlite (1.8.8+dfsg-1) ... 252s Selecting previously unselected package r-cran-cli. 252s Preparing to unpack .../080-r-cran-cli_3.6.2-1_armhf.deb ... 252s Unpacking r-cran-cli (3.6.2-1) ... 252s Selecting previously unselected package r-cran-glue. 252s Preparing to unpack .../081-r-cran-glue_1.7.0-1_armhf.deb ... 252s Unpacking r-cran-glue (1.7.0-1) ... 252s Selecting previously unselected package r-cran-lifecycle. 252s Preparing to unpack .../082-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 252s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 252s Selecting previously unselected package r-cran-memoise. 252s Preparing to unpack .../083-r-cran-memoise_2.0.1-1_all.deb ... 252s Unpacking r-cran-memoise (2.0.1-1) ... 252s Selecting previously unselected package r-cran-mime. 252s Preparing to unpack .../084-r-cran-mime_0.12-1_armhf.deb ... 252s Unpacking r-cran-mime (0.12-1) ... 252s Selecting previously unselected package r-cran-fs. 252s Preparing to unpack .../085-r-cran-fs_1.6.3+dfsg-1build1_armhf.deb ... 252s Unpacking r-cran-fs (1.6.3+dfsg-1build1) ... 252s Selecting previously unselected package r-cran-r6. 252s Preparing to unpack .../086-r-cran-r6_2.5.1-1_all.deb ... 252s Unpacking r-cran-r6 (2.5.1-1) ... 252s Selecting previously unselected package r-cran-rappdirs. 252s Preparing to unpack .../087-r-cran-rappdirs_0.3.3-1_armhf.deb ... 252s Unpacking r-cran-rappdirs (0.3.3-1) ... 252s Selecting previously unselected package r-cran-sass. 253s Preparing to unpack .../088-r-cran-sass_0.4.8+dfsg-1_armhf.deb ... 253s Unpacking r-cran-sass (0.4.8+dfsg-1) ... 253s Selecting previously unselected package r-cran-bslib. 253s Preparing to unpack .../089-r-cran-bslib_0.6.1+dfsg-1_all.deb ... 253s Unpacking r-cran-bslib (0.6.1+dfsg-1) ... 253s Selecting previously unselected package r-cran-commonmark. 253s Preparing to unpack .../090-r-cran-commonmark_1.9.1-1_armhf.deb ... 253s Unpacking r-cran-commonmark (1.9.1-1) ... 253s Selecting previously unselected package r-cran-crayon. 253s Preparing to unpack .../091-r-cran-crayon_1.5.2-1_all.deb ... 253s Unpacking r-cran-crayon (1.5.2-1) ... 253s Selecting previously unselected package r-cran-diffobj. 253s Preparing to unpack .../092-r-cran-diffobj_0.3.5-1_armhf.deb ... 253s Unpacking r-cran-diffobj (0.3.5-1) ... 253s Selecting previously unselected package r-cran-evaluate. 253s Preparing to unpack .../093-r-cran-evaluate_0.23-1_all.deb ... 253s Unpacking r-cran-evaluate (0.23-1) ... 253s Selecting previously unselected package r-cran-fontawesome. 253s Preparing to unpack .../094-r-cran-fontawesome_0.5.2-1_all.deb ... 253s Unpacking r-cran-fontawesome (0.5.2-1) ... 253s Selecting previously unselected package r-cran-xfun. 253s Preparing to unpack .../095-r-cran-xfun_0.41+dfsg-1_armhf.deb ... 253s Unpacking r-cran-xfun (0.41+dfsg-1) ... 253s Selecting previously unselected package r-cran-highr. 253s Preparing to unpack .../096-r-cran-highr_0.10+dfsg-1_all.deb ... 253s Unpacking r-cran-highr (0.10+dfsg-1) ... 253s Selecting previously unselected package r-cran-pkgkitten. 253s Preparing to unpack .../097-r-cran-pkgkitten_0.2.3-1_all.deb ... 253s Unpacking r-cran-pkgkitten (0.2.3-1) ... 253s Selecting previously unselected package r-cran-rcpp. 253s Preparing to unpack .../098-r-cran-rcpp_1.0.12-1_armhf.deb ... 253s Unpacking r-cran-rcpp (1.0.12-1) ... 253s Selecting previously unselected package r-cran-later. 253s Preparing to unpack .../099-r-cran-later_1.3.2+dfsg-1_armhf.deb ... 253s Unpacking r-cran-later (1.3.2+dfsg-1) ... 253s Selecting previously unselected package r-cran-magrittr. 253s Preparing to unpack .../100-r-cran-magrittr_2.0.3-1_armhf.deb ... 253s Unpacking r-cran-magrittr (2.0.3-1) ... 253s Selecting previously unselected package r-cran-promises. 253s Preparing to unpack .../101-r-cran-promises_1.2.1+dfsg-1_armhf.deb ... 253s Unpacking r-cran-promises (1.2.1+dfsg-1) ... 253s Selecting previously unselected package r-cran-httpuv. 253s Preparing to unpack .../102-r-cran-httpuv_1.6.14+dfsg-1build1_armhf.deb ... 253s Unpacking r-cran-httpuv (1.6.14+dfsg-1build1) ... 253s Selecting previously unselected package r-cran-yaml. 253s Preparing to unpack .../103-r-cran-yaml_2.3.8-1_armhf.deb ... 253s Unpacking r-cran-yaml (2.3.8-1) ... 253s Selecting previously unselected package libjs-mathjax. 253s Preparing to unpack .../104-libjs-mathjax_2.7.9+dfsg-1_all.deb ... 253s Unpacking libjs-mathjax (2.7.9+dfsg-1) ... 254s Selecting previously unselected package r-cran-knitr. 254s Preparing to unpack .../105-r-cran-knitr_1.45+dfsg-1_all.deb ... 254s Unpacking r-cran-knitr (1.45+dfsg-1) ... 256s Selecting previously unselected package r-cran-stringi. 256s Preparing to unpack .../106-r-cran-stringi_1.8.3-1_armhf.deb ... 256s Unpacking r-cran-stringi (1.8.3-1) ... 256s Selecting previously unselected package r-cran-vctrs. 256s Preparing to unpack .../107-r-cran-vctrs_0.6.5-1_armhf.deb ... 256s Unpacking r-cran-vctrs (0.6.5-1) ... 256s Selecting previously unselected package r-cran-stringr. 256s Preparing to unpack .../108-r-cran-stringr_1.5.1-1_all.deb ... 256s Unpacking r-cran-stringr (1.5.1-1) ... 256s Selecting previously unselected package r-cran-tinytex. 256s Preparing to unpack .../109-r-cran-tinytex_0.49-1_all.deb ... 256s Unpacking r-cran-tinytex (0.49-1) ... 256s Selecting previously unselected package libjs-modernizr. 256s Preparing to unpack .../110-libjs-modernizr_2.6.2+ds1-5_all.deb ... 256s Unpacking libjs-modernizr (2.6.2+ds1-5) ... 256s Selecting previously unselected package r-cran-xtable. 256s Preparing to unpack .../111-r-cran-xtable_1%3a1.8-4-2_all.deb ... 256s Unpacking r-cran-xtable (1:1.8-4-2) ... 256s Selecting previously unselected package r-cran-sourcetools. 256s Preparing to unpack .../112-r-cran-sourcetools_0.1.7-1-1_armhf.deb ... 256s Unpacking r-cran-sourcetools (0.1.7-1-1) ... 256s Selecting previously unselected package r-cran-withr. 256s Preparing to unpack .../113-r-cran-withr_3.0.0+dfsg-1_all.deb ... 256s Unpacking r-cran-withr (3.0.0+dfsg-1) ... 256s Selecting previously unselected package libjs-twitter-bootstrap-datepicker. 256s Preparing to unpack .../114-libjs-twitter-bootstrap-datepicker_1.3.1+dfsg1-4.1_all.deb ... 256s Unpacking libjs-twitter-bootstrap-datepicker (1.3.1+dfsg1-4.1) ... 256s Selecting previously unselected package r-cran-shiny. 256s Preparing to unpack .../115-r-cran-shiny_1.8.0+dfsg-1_all.deb ... 256s Unpacking r-cran-shiny (1.8.0+dfsg-1) ... 256s Selecting previously unselected package r-cran-rmarkdown. 256s Preparing to unpack .../116-r-cran-rmarkdown_2.25+dfsg-3_all.deb ... 256s Unpacking r-cran-rmarkdown (2.25+dfsg-3) ... 256s Selecting previously unselected package r-cran-unitizer. 256s Preparing to unpack .../117-r-cran-unitizer_1.4.20-1_all.deb ... 256s Unpacking r-cran-unitizer (1.4.20-1) ... 256s Selecting previously unselected package autopkgtest-satdep. 256s Preparing to unpack .../118-1-autopkgtest-satdep.deb ... 256s Unpacking autopkgtest-satdep (0) ... 256s Setting up libjs-json (0~20221030+~1.0.8-1) ... 256s Setting up javascript-common (11+nmu1) ... 256s Setting up libgraphite2-3:armhf (1.3.14-2) ... 256s Setting up libpixman-1-0:armhf (0.42.2-1) ... 256s Setting up libsharpyuv0:armhf (1.3.2-0.4build2) ... 256s Setting up libpaper1:armhf (1.1.29) ... 256s 256s Creating config file /etc/papersize with new version 256s Setting up fonts-mathjax (2.7.9+dfsg-1) ... 256s Setting up liblerc4:armhf (4.0.0+ds-4ubuntu1) ... 256s Setting up libjs-mathjax (2.7.9+dfsg-1) ... 256s Setting up libxrender1:armhf (1:0.9.10-1.1) ... 256s Setting up libdatrie1:armhf (0.2.13-3) ... 256s Setting up libjs-popper.js (1.16.1+ds-6) ... 256s Setting up libxcb-render0:armhf (1.15-1) ... 256s Setting up libjs-sifter.js (0.6.0+dfsg-3) ... 256s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 256s Setting up unzip (6.0-28ubuntu3) ... 256s Setting up x11-common (1:7.7+23ubuntu2) ... 256s Setting up node-html5shiv (3.7.3+dfsg-5) ... 256s Setting up libdeflate0:armhf (1.19-1) ... 256s Setting up libjs-microplugin.js (0.0.3+dfsg-1.1) ... 256s Setting up libxcb-shm0:armhf (1.15-1) ... 256s Setting up libpaper-utils (1.1.29) ... 256s Setting up libgomp1:armhf (14-20240315-1ubuntu1) ... 256s Setting up libjs-modernizr (2.6.2+ds1-5) ... 256s Setting up libjbig0:armhf (2.1-6.1ubuntu1) ... 256s Setting up libjs-es5-shim (4.6.7-2) ... 256s Setting up zip (3.0-13) ... 256s Setting up libblas3:armhf (3.12.0-3) ... 256s update-alternatives: using /usr/lib/arm-linux-gnueabihf/blas/libblas.so.3 to provide /usr/lib/arm-linux-gnueabihf/libblas.so.3 (libblas.so.3-arm-linux-gnueabihf) in auto mode 256s Setting up libfreetype6:armhf (2.13.2+dfsg-1build2) ... 256s Setting up libjs-d3 (3.5.17-4) ... 256s Setting up fonts-dejavu-mono (2.37-8) ... 256s Setting up libtcl8.6:armhf (8.6.14+dfsg-1) ... 256s Setting up fonts-dejavu-core (2.37-8) ... 256s Setting up libjpeg-turbo8:armhf (2.1.5-2ubuntu1) ... 256s Setting up libgfortran5:armhf (14-20240315-1ubuntu1) ... 256s Setting up libwebp7:armhf (1.3.2-0.4build2) ... 256s Setting up libjs-highlight.js (9.18.5+dfsg1-2) ... 256s Setting up liblua5.4-0:armhf (5.4.6-3build1) ... 256s Setting up libharfbuzz0b:armhf (8.3.0-2build1) ... 256s Setting up libthai-data (0.1.29-2) ... 256s Setting up node-bootstrap-sass (3.4.3-2) ... 256s Setting up libjs-prettify (2015.12.04+dfsg-1.1) ... 256s Setting up libxss1:armhf (1:1.2.3-1build2) ... 256s Setting up libjs-bootstrap4 (4.6.1+dfsg1-4) ... 256s Setting up pandoc-data (3.1.3-1) ... 256s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 256s Setting up node-normalize.css (8.0.1-5) ... 256s Setting up fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... 256s Setting up xdg-utils (1.1.3-4.1ubuntu3) ... 256s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 256s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 256s Setting up libjs-jquery-selectize.js (0.12.6+dfsg-1.1) ... 256s Setting up libjpeg8:armhf (8c-2ubuntu11) ... 256s Setting up libice6:armhf (2:1.0.10-1build2) ... 256s Setting up liblapack3:armhf (3.12.0-3) ... 256s update-alternatives: using /usr/lib/arm-linux-gnueabihf/lapack/liblapack.so.3 to provide /usr/lib/arm-linux-gnueabihf/liblapack.so.3 (liblapack.so.3-arm-linux-gnueabihf) in auto mode 256s Setting up fontconfig-config (2.15.0-1.1ubuntu1) ... 256s Setting up libjs-twitter-bootstrap-datepicker (1.3.1+dfsg1-4.1) ... 256s Setting up libjs-jquery-datatables (1.11.5+dfsg-2) ... 256s Setting up libthai0:armhf (0.1.29-2) ... 256s Setting up libjs-jquery-ui (1.13.2+dfsg-1) ... 256s Setting up pandoc (3.1.3+ds-2) ... 256s Setting up libtiff6:armhf (4.5.1+git230720-4ubuntu1) ... 256s Setting up libfontconfig1:armhf (2.15.0-1.1ubuntu1) ... 256s Setting up libsm6:armhf (2:1.2.3-1build2) ... 256s Setting up fontconfig (2.15.0-1.1ubuntu1) ... 258s Regenerating fonts cache... done. 258s Setting up libxft2:armhf (2.3.6-1) ... 258s Setting up libtk8.6:armhf (8.6.13-2) ... 258s Setting up libpango-1.0-0:armhf (1.52.1+ds-1) ... 258s Setting up libcairo2:armhf (1.18.0-1ubuntu1) ... 258s Setting up libxt6t64:armhf (1:1.2.1-1.2) ... 258s Setting up libpangoft2-1.0-0:armhf (1.52.1+ds-1) ... 258s Setting up libpangocairo-1.0-0:armhf (1.52.1+ds-1) ... 258s Setting up r-base-core (4.3.3-2build1) ... 259s 259s Creating config file /etc/R/Renviron with new version 259s Setting up r-cran-crayon (1.5.2-1) ... 259s Setting up r-cran-sourcetools (0.1.7-1-1) ... 259s Setting up r-cran-commonmark (1.9.1-1) ... 259s Setting up r-cran-r6 (2.5.1-1) ... 259s Setting up r-cran-pkgkitten (0.2.3-1) ... 259s Setting up r-cran-magrittr (2.0.3-1) ... 259s Setting up r-cran-rappdirs (0.3.3-1) ... 259s Setting up r-cran-littler (0.3.19-1) ... 259s Setting up r-cran-fs (1.6.3+dfsg-1build1) ... 259s Setting up r-cran-rcpp (1.0.12-1) ... 259s Setting up r-cran-diffobj (0.3.5-1) ... 259s Setting up r-cran-rlang (1.1.3-1) ... 259s Setting up littler (0.3.19-1) ... 259s Setting up r-cran-xfun (0.41+dfsg-1) ... 259s Setting up r-cran-withr (3.0.0+dfsg-1) ... 259s Setting up r-cran-mime (0.12-1) ... 259s Setting up r-cran-base64enc (0.1-3-3) ... 259s Setting up r-cran-digest (0.6.34-1) ... 259s Setting up r-cran-yaml (2.3.8-1) ... 259s Setting up r-cran-evaluate (0.23-1) ... 259s Setting up r-cran-highr (0.10+dfsg-1) ... 259s Setting up r-cran-glue (1.7.0-1) ... 259s Setting up r-cran-xtable (1:1.8-4-2) ... 259s Setting up r-cran-cli (3.6.2-1) ... 259s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 259s Setting up r-cran-fastmap (1.1.1-1) ... 259s Setting up r-cran-jsonlite (1.8.8+dfsg-1) ... 259s Setting up r-cran-stringi (1.8.3-1) ... 259s Setting up r-cran-later (1.3.2+dfsg-1) ... 259s Setting up r-cran-tinytex (0.49-1) ... 259s Setting up r-cran-knitr (1.45+dfsg-1) ... 259s Setting up r-cran-cachem (1.0.8-1) ... 259s Setting up r-cran-unitizer (1.4.20-1) ... 259s Setting up r-cran-vctrs (0.6.5-1) ... 259s Setting up r-cran-ellipsis (0.3.2-2) ... 259s Setting up r-cran-stringr (1.5.1-1) ... 259s Setting up r-cran-memoise (2.0.1-1) ... 259s Setting up r-cran-promises (1.2.1+dfsg-1) ... 259s Setting up r-cran-htmltools (0.5.7-1) ... 259s Setting up r-cran-sass (0.4.8+dfsg-1) ... 259s Setting up r-cran-httpuv (1.6.14+dfsg-1build1) ... 259s Setting up r-cran-fontawesome (0.5.2-1) ... 259s Setting up r-cran-jquerylib (0.1.4+dfsg-4) ... 259s Setting up r-cran-bslib (0.6.1+dfsg-1) ... 259s Setting up r-cran-shiny (1.8.0+dfsg-1) ... 259s Setting up r-cran-rmarkdown (2.25+dfsg-3) ... 259s Setting up autopkgtest-satdep (0) ... 259s Processing triggers for man-db (2.12.0-3build4) ... 260s Processing triggers for install-info (7.1-3build1) ... 260s Processing triggers for libc-bin (2.39-0ubuntu6) ... 282s (Reading database ... 72299 files and directories currently installed.) 282s Removing autopkgtest-satdep (0) ... 287s autopkgtest [02:12:06]: test run-unit-test: [----------------------- 289s Begin testing t-browser.R 289s 289s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 289s Copyright (C) 2024 The R Foundation for Statistical Computing 289s Platform: arm-unknown-linux-gnueabihf (32-bit) 289s 289s R is free software and comes with ABSOLUTELY NO WARRANTY. 289s You are welcome to redistribute it under certain conditions. 289s Type 'license()' or 'licence()' for distribution details. 289s 289s R is a collaborative project with many contributors. 289s Type 'contributors()' for more information and 289s 'citation()' on how to cite R or R packages in publications. 289s 289s Type 'demo()' for some demos, 'help()' for on-line help, or 289s 'help.start()' for an HTML browser interface to help. 289s Type 'q()' to quit R. 289s 289s > source(file.path("_helper", "init.R")) 290s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 290s > 290s > options(unitizer.color = FALSE) 290s > zero.env <- parent.env(.GlobalEnv) 290s > obj.item <- new("unitizerItem", call = quote(1 + 1), env = new.env()) 290s > obj.item@data@value <- list(2) 290s > obj.item@data@output <- c("two", "dos", "due") 290s > obj.item@data@conditions <- new("conditionList", .items = list(simpleError("hello"), 290s + simpleWarning("What a warning"))) 290s > obj.item@data@message <- vapply(unitizer:::as.list(obj.item@data@conditions), 290s + conditionMessage, character(1L)) 290s > obj.item@data@aborted <- TRUE 290s > 290s > # - "unitizerItem accessor functions work" ------------------------------------- 290s > 290s > obj.item$value 290s [1] 2 290s > obj.item$output 290s [1] "two" "dos" "due" 290s > obj.item$conditions 290s Condition list with 2 conditions: 290s 1. Error: hello 290s 2. Warning: What a warning 290s > 290s > # Create a bunch of expressions for testing 290s > 290s > exps1 <- expression( 290s + library(stats), 290s + unitizer_sect("Section 1", { 290s + 1 + 1 290s + runif(20) 290s + stop("woohoo") 290s + "I'll be removed" 290s + "I too will be removed" 290s + }), 290s + unitizer_sect("Section 2", { 290s + "I three will be removed" 290s + sample(20) 290s + })) 290s > exps2 <- expression( 290s + library(stats), 290s + unitizer_sect("Section 1", { 290s + 1 + 1 290s + runif(20) 290s + stop("woohoo") 290s + var <- 200 290s + matrix(1:9, 3) 290s + }), 290s + unitizer_sect("Section 2", { 290s + 1 + 20 290s + var1 <- list(1, 2, 3) 290s + sample(20) 290s + matrix(1:9, ncol = 3) 290s + lm(x ~ y, data.frame(x = 1:10, y = c(5, 3, 3, 2, 1, 8, 2, 290s + 1, 4, 1.5))) 290s + })) 290s > my.unitizer <- new("unitizer", id = 1, zero.env = zero.env) 290s > coi(my.unitizer <- my.unitizer + exps1) 290s > my.unitizer2 <- new("unitizer", id = 2, zero.env = zero.env) 290s > # make previous items into reference items 290s > my.unitizer2 <- my.unitizer2 + my.unitizer@items.new 290s > # now add back items to compare 290s > coi(my.unitizer2 <- my.unitizer2 + exps2) 290s > unitizer.prepped <- unitizer:::browsePrep(my.unitizer2, mode = "unitize") 290s > 290s > # NOTE: for some reason, changes in between revisions d9619db and a46e941 290s > # should have caused the tests to fail, but didn't. We did not notice 290s > # failures until we ran tests quite a bit later at ca9f540364. Not sure why 290s > # this happened. The failures were due to the order of tests changing because 290s > # we moved ignored tests to be in the same sub-section as the subsequent non- 290s > # ignored tests 290s > 290s > # - "Can convert to data.frame" ------------------------------------------------ 290s > 290s > all.equal(unitizer:::as.data.frame(unitizer.prepped), rds("browse_df1")) 290s [1] TRUE 290s > 290s > # - "unitizerBrowse correctly processes unitizer for display" ------------------ 290s > 290s > # force all tests to be reviewed so they will be shown 290s > unitizer.prepped@mapping@reviewed <- 290s + rep(TRUE, length(unitizer.prepped@mapping@reviewed)) 290s > unitizer.prepped@mapping@review.val <- 290s + rep("Y", length(unitizer.prepped@mapping@reviewed)) 290s > all.equal(as.character(unitizer.prepped, 60), rds("browse_aschar1")) 290s [1] TRUE 290s > 290s > # Alternating tests 290s > unitizer.prepped@mapping@reviewed <- 290s + as.logical(seq(length(unitizer.prepped@mapping@reviewed))%%2) 290s > all.equal(as.character(unitizer.prepped, 60), rds("browse_aschar2")) 290s [1] TRUE 290s > 290s > # Errors / warnings 290s > try(as.character(unitizer.prepped, -1)) # positive 290s Error in .local(x, ...) : 290s Argument `width` must be a positive scalar numeric. 290s > prep.narrow <- as.character(unitizer.prepped, 5) # too small 290s Warning in .local(x, ...) : 290s Selected display width too small, will be ignored 290s > 290s > all.equal(prep.narrow, rds("browse_ascharnarrow")) 290s [1] TRUE 290s > 290s > # Colors work (should be last in this section) since the reference @global 290s > 290s > unitizer.prepped@global$unitizer.opts[["unitizer.color"]] <- TRUE 290s > old.opt <- options(crayon.enabled = TRUE) 290s > prep.color <- as.character(unitizer.prepped, 60) 290s > all.equal(prep.color, rds("browse_aschar3")) 290s [1] TRUE 290s > unitizer.prepped@global$unitizer.opts[["unitizer.color"]] <- FALSE 290s > options(old.opt) 290s > 290s > # - "processInput generates Correct Item Structure" ---------------------------- 290s > 290s > # Here we just test that the calls of each item are what we expect, making 290s > # sure that different behavior for Y or N depending on sub-section type is 290s > # observed correctly (e.g. a Y for new test means keep it, where as for 290s > # removed test means don't keep it) 290s > # For debugging: 290s > # cbind(substr(unitizer:::deparseCalls(unitizer.prepped), 1, 15), as.character(unitizer.prepped@mapping@review.type), unitizer.prepped@mapping@review.val, unitizer.prepped@mapping@reviewed) 290s > # cat(deparse(width=500, 290s > # lapply( 290s > # unitizer:::as.list(unitizer:::processInput(unitizer.prepped)), 290s > # function(x) call("quote", slot(x, "call"))) 290s > # ) ) 290s > unitizer.prepped@mapping@reviewed <- 290s + rep(TRUE, length(unitizer.prepped@mapping@reviewed)) 290s > unitizer.prepped@mapping@review.val <- 290s + rep("Y", length(unitizer.prepped@mapping@reviewed)) 290s > 290s > # Assume user accepted all tests 290s > 290s > lapply( 290s + unitizer:::as.list(unitizer:::processInput(unitizer.prepped)), slot, "call" 290s + ) 290s [[1]] 290s library(stats) 290s 290s [[2]] 290s runif(20) 290s 290s [[3]] 290s var <- 200 290s 290s [[4]] 290s matrix(1:9, 3) 290s 290s [[5]] 290s 1 + 1 290s 290s [[6]] 290s stop("woohoo") 290s 290s [[7]] 290s var1 <- list(1, 2, 3) 290s 290s [[8]] 290s sample(20) 290s 290s [[9]] 290s 1 + 20 290s 290s [[10]] 290s matrix(1:9, ncol = 3) 290s 290s [[11]] 290s lm(x ~ y, data.frame(x = 1:10, y = c(5, 3, 3, 2, 1, 8, 2, 1, 290s 4, 1.5))) 290s 290s > # Assume user accepted all but 1, 4, 6 and 11, note it isn't completely 290s > # obvious what should be kept since an N for anything but a new and passed 290s > # test will result in some object remaining in the list (typically the 290s > # reference copy thereof) 290s > unitizer.prepped@mapping@review.val[] <- "N" 290s > unitizer.prepped@mapping@review.val[c(2, 6, 8, 12)] <- "Y" 290s > lapply( 290s + unitizer:::as.list(unitizer:::processInput(unitizer.prepped)), slot, "call" 290s + ) 290s [[1]] 290s runif(20) 290s 290s [[2]] 290s stop("woohoo") 290s 290s [[3]] 290s [1] "I'll be removed" 290s 290s [[4]] 290s sample(20) 290s 290s [[5]] 290s matrix(1:9, ncol = 3) 290s 290s [[6]] 290s [1] "I three will be removed" 290s 290s > # - "unitizerBrowse subsetting works" ------------------------------------------ 290s > 290s > # note single bracket subsetting for `unitizerBrowse` overrides the `unitizerList` 290s > # subsetting 290s > unitizer:::deparseCalls(unitizer:::extractItems(unitizer.prepped[c(4, 8, 10)])) 290s [1] "matrix(1:9, 3)" "\"I too will be removed\"" 290s [3] "sample(20)" 290s > unitizer:::deparseCalls(unitizer:::extractItems(unitizer.prepped[c(2, 3, 11)])) 290s [1] "runif(20)" "var <- 200" "1 + 20" 290s > 290s > # - "Reference section mapping works" ------------------------------------------ 290s > 290s > # Copy over just two sections 290s > my.unitizer3 <- new("unitizer", id = 3, zero.env = zero.env) + 290s + my.unitizer2@items.new[-(2:6)] 290s > # Exclude section two tests 290s > # sections should copy over 290s > my.unitizer3 <- unitizer:::refSections(my.unitizer3, my.unitizer2) 290s > # just copy over 1st and 3rd sections 290s > identical(my.unitizer3@sections.ref, my.unitizer2@sections[-2]) 290s [1] TRUE 290s > my.unitizer3@section.ref.map 290s [1] 1 2 2 2 2 2 290s > 290s > # Make sure "removed" sections are NA when kept 290s > unitizer.prepped@mapping@reviewed <- 290s + rep(TRUE, length(unitizer.prepped@mapping@reviewed)) 290s > # don't delete removed 290s > unitizer.prepped@mapping@review.val <- 290s + ifelse(unitizer.prepped@mapping@review.type %in% c("Removed"), "N", "Y") 290s > items.processed <- unitizer:::processInput(unitizer.prepped) 290s > vapply(unitizer:::as.list(items.processed), slot, 1L, "section.id") 290s [1] 1 2 2 2 2 2 NA NA 3 3 3 3 3 NA 290s > 290s > # Now try to re-establish sections with removed tests 290s > my.unitizer4 <- 290s + new("unitizer", id = 4, zero.env = zero.env) + items.processed 290s > # sections should copy over 290s > my.unitizer4 <- unitizer:::refSections(my.unitizer4, my.unitizer2) 290s > is(my.unitizer4@sections.ref[[4L]], "unitizerSectionNA") 290s [1] TRUE 290s > my.unitizer4@section.ref.map 290s [1] 1 2 2 2 2 2 4 4 3 3 3 3 3 4 290s > 290s > # - "Item Extraction" ---------------------------------------------------------- 290s > 290s > items <- unitizer:::extractItems(unitizer.prepped) 290s > item.calls <- vapply( 290s + unitizer:::as.list(items), 290s + function(x) 290s + paste0(deparse(x@call, width.cutoff = 500), collapse = ""), character(1L) 290s + ) 290s > item.types <- vapply(unitizer:::as.list(items), slot, FALSE, "reference") 290s > item.ids <- vapply(unitizer:::as.list(items), slot, 1L, "id") 290s > item.df <- data.frame(item.calls, item.types, item.ids, stringsAsFactors = FALSE) 290s > 290s > all.equal(item.df[order(item.types, item.ids),], rds("browse_itemord")) 290s [1] TRUE 290s > 290s PASS 290s Begin testing t-capture.R 291s 291s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 291s Copyright (C) 2024 The R Foundation for Statistical Computing 291s Platform: arm-unknown-linux-gnueabihf (32-bit) 291s 291s R is free software and comes with ABSOLUTELY NO WARRANTY. 291s You are welcome to redistribute it under certain conditions. 291s Type 'license()' or 'licence()' for distribution details. 291s 291s R is a collaborative project with many contributors. 291s Type 'contributors()' for more information and 291s 'citation()' on how to cite R or R packages in publications. 291s 291s Type 'demo()' for some demos, 'help()' for on-line help, or 291s 'help.start()' for an HTML browser interface to help. 291s Type 'q()' to quit R. 291s 291s > source(file.path("_helper", "init.R")) 291s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("capture") 291s > 291s > # # Messing around trying to understand seek... 291s > # f <- tempfile() 291s > # con <- file(f, "w+b") 291s > # writeChar(paste(letters, LETTERS, collapse=" "), con) 291s > # readChar(con, 20) 291s > # pos <- seek(con, origin="current") 291s > # seek(con, pos, rw="write") 291s > # writeChar("xxxxxxxxx", con) 291s > # readChar(con, 3) 291s > # pos <- seek(con, origin="current") 291s > # seek(con, pos, rw="write") 291s > # writeChar("yyyyy", con) 291s > # close(con) 291s > # readLines(f) 291s > # unlink(f) 291s > 291s > # - "get_capture" -------------------------------------------------------------- 291s > 291s > old.max <- options(unitizer.max.capture.chars = 100L) 291s > cons <- new("unitizerCaptCons") 291s > base.char <- paste(rep(letters, 10), collapse = " ") 291s > writeChar(base.char, cons@out.c) 291s > 291s > # Error "Argument `chrs.max`" 291s > try(unitizer:::get_text_capture(cons, "output", TRUE, chrs.max = "howdy")) 291s Error in unitizer:::get_text_capture(cons, "output", TRUE, chrs.max = "howdy") : 291s Argument `chrs.max` must be integer(1L) and greater than 100L; using 200000L for nowTRUE 291s > # Warn max capt 291s > cpt0 <- unitizer:::get_text_capture(cons, "output", TRUE) 291s Warning in get_text(slot(cons, if (type == "message") "err.c" else "out.c")) : 291s Reached maximum text capture characters 100; see `getOption("unitizer.max.capture.chars")` 291s > nchar(cpt0) 291s [1] 100 291s > base.char.2 <- paste(rev(rep(letters, 10)), collapse = " ") 291s > writeChar(base.char.2, cons@err.c) 291s > sink(cons@err.c, type = "message") 291s > 291s > cpt0.err <- unitizer:::get_text_capture(cons, "message", FALSE) 291s Warning in get_text(slot(cons, if (type == "message") "err.c" else "out.c")) : 291s Reached maximum text capture characters 100; see `getOption("unitizer.max.capture.chars")` 291s > sink(type = "message") 291s > all.equal(cpt0.err, substr(base.char.2, 1, 100)) 291s [1] TRUE 291s > 291s > ## for some reason this test stopped working; not sure why, need to look into 291s > ## it; seemingly it messes up the pointer for the next read 291s > # writeChar("xxxxxx", cons@out.c) 291s > # cpt2 <- unitizer:::get_text_capture(cons, "output", TRUE) 291s > # expect_equal("xxxxxx", cpt2) 291s > writeChar(paste0(rep("yyyyyyy", 20L), collapse = ""), cons@out.c) 291s > # warn max capt 291s > cpt1 <- unitizer:::get_text_capture(cons, "output", TRUE) 291s Warning in get_text(slot(cons, if (type == "message") "err.c" else "out.c")) : 291s Reached maximum text capture characters 100; see `getOption("unitizer.max.capture.chars")` 291s > all.equal(cpt1, paste0(rep("y", 100), collapse = "")) 291s [1] TRUE 291s > unitizer:::close_and_clear(cons) 291s > options(old.max) 291s > 291s > # - "get_text" ----------------------------------------------------------------- 291s > 291s > old.max <- options(unitizer.max.capture.chars = 100L) 291s > f <- tempfile() 291s > con <- file(f, "w+b") 291s > base.char <- paste(letters, collapse = " ") 291s > sink(con, type = "message") 291s > cat(base.char, file = stderr()) 291s > # this needs to temporarily switch the sink to be able to issue the warning 291s > # Warn: "Reached maximum" 291s > unitizer:::get_text(con, 10) 291s Warning in unitizer:::get_text(con, 10) : 291s Reached maximum text capture characters 10; see `getOption("unitizer.max.capture.chars")` 291s [1] "a b c d e " 291s > # should still be to writing to our file, 10 chars in 291s > cat("boogiewoogy", file = stderr()) 291s > sink(type = "message") 291s > suppressWarnings(readLines(f)) # incomplete final line... 291s [1] "a b c d e boogiewoogy l m n o p q r s t u v w x y z" 291s > 291s > options(old.max) 291s > unlink(f) 291s > 291s > # - "connection capture works" ------------------------------------------------- 291s > 291s > out.num <- as.integer(stdout()) 291s > err.num <- as.integer(stderr()) 291s > err.con <- getConnection(sink.number(type = "message")) 291s > cons <- new("unitizerCaptCons") 291s > cons <- unitizer:::set_capture(cons) 291s > cat("hello there\n") 291s > cat("goodbye there\n", file = stderr()) 291s > capt <- unitizer:::get_capture(cons) 291s > cons <- unitizer:::unsink_cons(cons) 291s > capt 291s $output 291s [1] "hello there\n" 291s 291s $message 291s [1] "goodbye there\n" 291s 291s > # expect_identical(as.integer(stdout()), out.num) 291s > identical(as.integer(stdout()), out.num) 291s [1] TRUE 291s > identical(as.integer(stderr()), err.num) 291s [1] TRUE 291s > unitizer:::close_and_clear(cons) 291s > 291s > # Now, here we add an extra stdout sink. In both cases unsink_cons will not 291s > # touch the sinks since we're not in an expected state, leaving 291s > # close_and_clear to cleanup 291s > err.con <- getConnection(sink.number(type = "message")) 291s > cons <- new("unitizerCaptCons") 291s > cons <- unitizer:::set_capture(cons) 291s > cat("there hello\n") 291s > # message does not work with testthat 291s > cat("there goodbye\n", file = stderr()) 291s > f1 <- tempfile() 291s > f2 <- tempfile() 291s > c2 <- file(f2, "w") 291s > sink(f1) 291s > sink(c2, type = "message") 291s > cat("12 there hello\n") 291s > # message does not work with testthat 291s > cat("12 there goodbye\n", file = stderr()) 291s > capt <- unitizer:::get_capture(cons) 291s > cons <- unitizer:::unsink_cons(cons) 291s > unitizer:::close_and_clear(cons) 291s > attr(cons@out.c, "waive") 291s [1] TRUE 291s > attr(cons@err.c, "waive") 291s [1] TRUE 291s > capt 291s $output 291s [1] "there hello\n" 291s 291s $message 291s [1] "there goodbye\n" 291s 291s > readLines(f1) 291s [1] "12 there hello" 291s > readLines(f2) 291s [1] "12 there goodbye" 291s > close(c2) 291s > unlink(c(f1, f2)) 291s > 291s > # Same, but this time close the sinks properly, so the connections should not 291s > # be waived 291s > err.con <- getConnection(sink.number(type = "message")) 291s > cons <- new("unitizerCaptCons") 291s > cons <- unitizer:::set_capture(cons) 291s > cat("there hello\n") 291s > # message does not work with testthat 291s > cat("there goodbye\n", file = stderr()) 291s > f1 <- tempfile() 291s > f2 <- tempfile() 291s > c2 <- file(f2, "w") 291s > sink(f1) 291s > sink(c2, type = "message") 291s > cat("12 there hello\n") 291s > # message does not work with testthat 291s > cat("12 there goodbye\n", file = stderr()) 291s > sink() 291s > sink(cons@err.c, type = "message") 291s > capt <- unitizer:::get_capture(cons) 291s > cons <- unitizer:::unsink_cons(cons) 291s > attr(cons@out.c, "waive") # NULL 291s NULL 291s > attr(cons@err.c, "waive") # NULL 291s NULL 291s > capt 291s $output 291s [1] "there hello\n" 291s 291s $message 291s [1] "there goodbye\n" 291s 291s > unitizer:::close_and_clear(cons) 291s > readLines(f1) 291s [1] "12 there hello" 291s > readLines(f2) 291s [1] "12 there goodbye" 291s > close(c2) 291s > unlink(c(f1, f2)) 291s > # Try to mess up sink counter by replacing the real sink with a fake sink 291s > # should lead to a waived connection 291s > cons <- new("unitizerCaptCons") 291s > cons <- unitizer:::set_capture(cons) 291s > f1 <- tempfile() 291s > sink() 291s > sink(f1) 291s > capt <- unitizer:::get_capture(cons) 291s > cons <- unitizer:::unsink_cons(cons) 291s > attr(cons@out.c, "waive") 291s > attr(cons@err.c, "waive") 291s > capt 291s > # Try to fix so that we don't get a full stack release error 291s > sink() 291s > sink(cons@out.c) 291s > unitizer:::close_and_clear(cons) 291s > unlink(f1) 291s > # helper function 291s > f1 <- tempfile() 291s > f2 <- tempfile() 291s > c1 <- file(f1, "w+b") 291s > c2 <- file(f2, "w+b") 291s > sink(c2) 291s > unitizer:::is_stdout_sink(f1) 291s > sink() 291s > sink(c1) 291s > unitizer:::is_stdout_sink(f1) 291s > sink() 291s > close(c1) 291s > close(c2) 291s > unlink(c(f1, f2)) 291s > 291s > # - "connection breaking tests" ------------------------------------------------ 291s > 291s > # # These tests cannot be run as they blow away the entire sink stack which can 291s > # # mess up any testing done under capture 291s > # 291s > # test_that("connection breaking tests", { 291s > # # Test the more pernicious error where we substitute the stdout sink 291s > # 291s > # cons <- new("unitizerCaptCons") 291s > # cons <- unitizer:::set_capture(cons) 291s > # cat("woohoo\n") 291s > # cat("yohooo\n", file=stderr()) 291s > # f1 <- tempfile() 291s > # sink() 291s > # sink(f1) 291s > # capt <- unitizer:::get_capture(cons) 291s > # cons <- unitizer:::unsink_cons(cons) 291s > # sink() 291s > # unlink(f1) 291s > # expect_true(attr(cons@out.c, "waive")) 291s > # expect_null(attr(cons@err.c, "waive")) 291s > # expect_identical( 291s > # capt, list(output = "woohoo\n", message = "yohooo\n") 291s > # ) 291s > # expect_identical( 291s > # unitizer:::close_and_clear(cons), 291s > # structure(c(FALSE, TRUE), .Names = c("output", "message")) 291s > # ) 291s > # }) 291s > 291s > # - "close_and_clear" ---------------------------------------------------------- 291s > 291s > # need some careful handling to make sure we don't mess up the testthat's 291s > # sinking (legacy behavior) 291s > cons <- new("unitizerCaptCons") 291s > err.con <- cons@stderr.con 291s > on.exit(sink(err.con, type = "message")) 291s > # intended to cause an error 291s > cons@stderr.con <- list() 291s > # msg: "Unable to restore original " 291s > cons.txt <- capture.output(status <- unitizer:::close_and_clear(cons), 291s + type = "message") 291s | Unable to restore original message sink, setting back to normal stderr 291s 291s > any(grepl("connection", cons.txt)) 291s [1] TRUE 291s > sink(err.con, type = "message") 291s > status["message"] 291s message 291s FALSE 291s > 291s > # - "eval with capt" ----------------------------------------------------------- 291s > 291s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 291s > all.equal( 291s + (capt <- unitizer:::eval_with_capture(quote(1 + 1), global = glob))[1:8], 291s + rds(100) 291s + ) 291s [1] TRUE 291s > is(capt[[9]], "unitizerCaptCons") 291s [1] TRUE 291s > all.equal( 291s + ( 291s + capt <- unitizer:::eval_with_capture( 291s + cat("wow\n", file = stderr()), global = glob) 291s + )[1:8], 291s + rds(200) 291s + ) 291s [1] TRUE 291s > is(capt[[9]], "unitizerCaptCons") 291s [1] TRUE 291s > 291s PASS 291s Begin testing t-change.R 291s 291s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 291s Copyright (C) 2024 The R Foundation for Statistical Computing 291s Platform: arm-unknown-linux-gnueabihf (32-bit) 291s 291s R is free software and comes with ABSOLUTELY NO WARRANTY. 291s You are welcome to redistribute it under certain conditions. 291s Type 'license()' or 'licence()' for distribution details. 291s 291s R is a collaborative project with many contributors. 291s Type 'contributors()' for more information and 291s 'citation()' on how to cite R or R packages in publications. 291s 291s Type 'demo()' for some demos, 'help()' for on-line help, or 291s 'help.start()' for an HTML browser interface to help. 291s Type 'q()' to quit R. 291s 291s > source(file.path("_helper", "init.R")) 292s > 292s > # - "Construction works" ------------------------------------------------------- 292s > 292s > # invalid slot 292s > try(new("unitizerChanges", removed = 1:3)) 292s Error in validObject(.Object) : 292s invalid class "unitizerChanges" object: slot `@`removed must be of length 2 292s > # invalid/ got character 292s > try(new("unitizerChanges", failed = letters[1:2])) 292s Error in validObject(.Object) : 292s invalid class "unitizerChanges" object: invalid object for slot "failed" in class "unitizerChanges": got class "character", should be or extend class "integer" 292s > 292s > # - "Output as expected" ------------------------------------------------------- 292s > 292s > my.changes <- new("unitizerChanges", failed = c(1L, 10L), new = c(1L, 292s + 5L), removed = c(2L, 4L), corrupted = c(3L, 8L)) 292s > show(my.changes) 292s - Replacing 1 out of 10 failed tests 292s - Adding 1 out of 5 new tests 292s - Removing 2 out of 4 removed tests 292s - Replacing 3 out of 8 tests with errors 292s > 292s > # - "Length Works" ------------------------------------------------------------- 292s > 292s > length(my.changes) # 7 292s [1] 7 292s > 292s PASS 292s Begin testing t-demo.R 292s 292s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 292s Copyright (C) 2024 The R Foundation for Statistical Computing 292s Platform: arm-unknown-linux-gnueabihf (32-bit) 292s 292s R is free software and comes with ABSOLUTELY NO WARRANTY. 292s You are welcome to redistribute it under certain conditions. 292s Type 'license()' or 'licence()' for distribution details. 292s 292s R is a collaborative project with many contributors. 292s Type 'contributors()' for more information and 292s 'citation()' on how to cite R or R packages in publications. 292s 292s Type 'demo()' for some demos, 'help()' for on-line help, or 292s 'help.start()' for an HTML browser interface to help. 292s Type 'q()' to quit R. 292s 292s > source(file.path("aammrtf", "mock.R")) 292s > source(file.path("_helper", "init.R")) 292s > source(file.path("_helper", "pkgs.R")) 292s Install Packages 295s Setup Demos 295s > 295s > # Mostly makes sure the demo steps work, but since it is a convenient way of 295s > # generating a unitizer with actual errors and so forth, we use it to test a few 295s > # other things as well in the context of those unitizers 295s > 295s > # - "in_pkg" ------------------------------------------------------------------- 295s > 295s > base.dir <- file.path(FLM, "tests", "extra") 295s > in.pkg.file <- file.path(base.dir, "inpkg.R") 295s > 295s > unitizer:::read_line_set_vals(c("Q")) 295s > txt1 <- unitizer:::capture_output(unitize(in.pkg.file, interactive.mode = TRUE)) 297s > # `sub` needed due to inconsistencies in R 3.4 and 3.3 for top level error 297s > # messages 297s > txt1$message <- sub("^Error.*:", "", txt1$message) 297s > txt1 297s - Output ----------------------------------------------------------------------- 297s 297s 297s +------------------------------------------------------------------------------+ 297s | unitizer for: extra/inpkg.R | 297s +------------------------------------------------------------------------------+ 297s 297s Pass Fail New 297s - - 1 297s ........................... 297s - - 1 297s 297s - New -------------------------------------------------------------------------- 297s 297s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 297s | [R]erun, [Q]uit, [H]elp)? 297s 297s # should fail normally, but return TRUE if run in fastlm 297s 297s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 297s > hidden_fun() 297s 297s unitizer> Q 297s 297s | unitizer unchanged. 297s 297s - Message ---------------------------------------------------------------------- 297s 297s could not find function "hidden_fun" 297s | No changes recorded. 297s > unitizer:::read_line_set_vals(c("Q")) 297s > unitize(in.pkg.file, state = in_pkg(), interactive.mode = TRUE) 297s 297s +------------------------------------------------------------------------------+ 297s | unitizer for: extra/inpkg.R | 297s +------------------------------------------------------------------------------+ 297s 297s Pass Fail New 297s - - 1 297s ........................... 297s - - 1 297s 297s - New -------------------------------------------------------------------------- 297s 297s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 297s | [R]erun, [Q]uit, [H]elp)? 297s 297s # should fail normally, but return TRUE if run in fastlm 297s 297s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 297s > hidden_fun() 297s [1] TRUE 297s 297s unitizer> Q 297s 297s | No changes recorded. 297s | unitizer unchanged. 297s 297s > unitizer:::read_line_set_vals(c("Q")) 297s > try(unitize(in.pkg.file, state = in_pkg("ASDFASDFA"), interactive.mode = TRUE)) 297s 297s Error in loadNamespace(name) : there is no package called 'ASDFASDFA' 297s Error in in_pkg_to_env(x.raw@par.env, test.files) : 297s Unable to load "ASDFASDFA" namespace to use as parent environment; see `? 297s unitizerState` for instructions on how to specify a package namespace as a 297s parent environment for tests. 297s Error in as.state(state, test.files) : 297s Unable to convert `par.env` value to a namespace environment 297s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 297s Argument `state` could not be evaluated. 297s > 297s > # - "copy fastlm dir works" ---------------------------------------------------- 297s > 297s > sort(tolower(list.files("."))) 297s [1] "description" "man" "namespace" "r" 297s [5] "tests" "utzflm.rcheck" 297s > readLines(file.path(".", "DESCRIPTION"))[[5L]] # v0.1.0 297s [1] "Version: 0.1.0" 297s > update_fastlm(".", version = "0.1.1") 297s > readLines(file.path(".", "DESCRIPTION"))[[5L]] 297s [1] "Version: 0.1.1" 297s > update_fastlm(".", version = "0.1.2") 297s > readLines(file.path(".", "DESCRIPTION"))[[5L]] 297s [1] "Version: 0.1.2" 297s > 297s > # - "show_file" ---------------------------------------------------------------- 297s > 297s > f <- tempfile() 297s > cat("this is a\ntest code\nfile\n", file = f) 297s > file.show <- capture.output(show_file(f)) 297s > file.show[[1L]] 297s [1] "+---------------+" 297s > start.file <- grep("+---+-----------+", file.show, fixed = TRUE) 297s > length(start.file) # 2 297s [1] 2 297s > writeLines(file.show[start.file[[1L]]:start.file[[2L]]]) 297s +---+-----------+ 297s | 1 | this is a | 297s | 2 | test code | 297s | 3 | file | 297s +---+-----------+ 297s > unlink(f) 297s > 297s > # Run actual demo bits; note we want to force `interactive.mode=TRUE` so that 297s > # `read_line_vals` values are used as user input; note that until we fix 297s > # / rationalize how sinking behaves within unitizer when the standard streams 297s > # come in sunk, we won't be able to fully test everything, since for example 297s > # the display of the captured stdout just won't happen. 297s > 297s > # - "demo create worked" ------------------------------------------------------- 297s > 297s > # In tests, initial version of package should be 0.1.0; the test store 297s > # does not exist so it doesn't get overwritten with subsequent updates 297s > # Note the initial install happens in the test running script 297s > 297s > unitizer:::update_fastlm(".", version = "0.1.0") 297s > inst_pak(".") 298s > unitizer:::read_line_set_vals(c("Y", "Y", "Y", "Y", "Y")) 298s > untz <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 298s 298s +------------------------------------------------------------------------------+ 298s | unitizer for: unitizer/fastlm1.R | 298s +------------------------------------------------------------------------------+ 298s 298s Pass Fail New 298s - - 4 298s ........................... 298s - - 4 298s 298s - New -------------------------------------------------------------------------- 298s 298s | The 4 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 298s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 298s 298s # Assignments and calls to `library` are not considered tests by 298s # `unitizer` so you will not need to review them 298s 298s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 298s > dat <- data.frame(x = 1:100, y = (1:100)^2) 298s > res <- fastlm(dat$x, dat$y) 298s 298s # The `unitizer>` prompt is like the standard R prompt. You may 298s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 298s # `str(res)`. 298s # 298s # Once you are done reviewing, you need to tell `unitizer` you 298s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 298s 298s > res 298s intercept slope rsq 298s -1717.000 101.000 0.939 298s attr(,"class") 298s [1] "fastlm" 298s 298s unitizer> Y 298s 298s # There are three more tests to review; accept them with 'Y' 298s 298s > get_slope(res) 298s [1] 101 298s 298s unitizer> Y 298s 298s > get_rsq(res) 298s [1] 0.939 298s 298s unitizer> Y 298s 298s # This last test is expected to cause an error; press 'Y' to 298s # accept it so future checks can confirm the same error persists 298s 298s > fastlm(1:100, 1:10) 298s Error in fastlm(1:100, 1:10) : 298s Arguments `x` and `y` must be the same length. 298s 298s unitizer> Y 298s 298s = Finalize Unitizer ============================================================ 298s 298s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 298s | - Adding 4 out of 4 new tests 298s 298s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 298s 298s unitizer> Y 298s 298s | unitizer updated. 298s 298s > is(untz, "unitizer_result") 298s [1] TRUE 298s > print(untz) 298s Test File: tests/unitizer/fastlm1.R 298s Store ID: tests/unitizer/fastlm1.unitizer 298s 298s id call ignored status user reviewed 298s 1 1 library(utzflm, lib.loc = g... * New N FALSE 298s 2 2 dat <- data.frame(x = 1:100... * New N FALSE 298s 3 3 res <- fastlm(dat$x, dat$y) * New N FALSE 298s 4 4 res New Y TRUE 298s 5 5 get_slope(res) New Y TRUE 298s 6 6 get_rsq(res) New Y TRUE 298s 7 7 fastlm(1:100, 1:10) New Y TRUE 298s > # Re-running doesn't change unitizer 298s > untz2 <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 298s 298s | 4/4 tests passed; nothing to review. 298s 298s > print(untz2) 298s Test File: tests/unitizer/fastlm1.R 298s Store ID: tests/unitizer/fastlm1.unitizer 298s 298s id call ignored status user reviewed 298s 1 1 library(utzflm, lib.loc = g... * Passed Y FALSE 298s 2 2 dat <- data.frame(x = 1:100... * Passed Y FALSE 298s 3 3 res <- fastlm(dat$x, dat$y) * Passed Y FALSE 298s 4 4 res Passed Y FALSE 298s 5 5 get_slope(res) Passed Y FALSE 298s 6 6 get_rsq(res) Passed Y FALSE 298s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 298s 298s You chose NOT to save these changes to the unitizer store 298s > # Rejecting failed tests does not change unitizer 298s > update_fastlm(".", version = "0.1.1") 298s > inst_pak(".") 300s > 300s > unitizer:::read_line_set_vals(c("N", "N", "Y")) 300s > unitizer:::capture_output( 300s + untz3 <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 300s + ) 300s > print(untz3) 300s Test File: tests/unitizer/fastlm1.R 300s Store ID: tests/unitizer/fastlm1.unitizer 300s 300s id call ignored status user reviewed 300s 1 1 library(utzflm, lib.loc = g... * Failed N FALSE 300s 2 2 dat <- data.frame(x = 1:100... * Failed N FALSE 300s 3 3 res <- fastlm(dat$x, dat$y) * Failed N FALSE 300s 4 4 res Failed N TRUE 300s 5 5 get_slope(res) Failed N TRUE 300s 6 6 get_rsq(res) Passed Y FALSE 300s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 300s 300s You chose NOT to save these changes to the unitizer store 300s > 300s > # - "demo review" -------------------------------------------------------------- 300s > 300s > # review is always in interactive mode 300s > unitizer:::read_line_set_vals(c("5", "Q")) 300s > review(FLM.TEST.STORE) 300s 300s +------------------------------------------------------------------------------+ 300s | unitizer for: tests/unitizer/fastlm1.unitizer | 300s +------------------------------------------------------------------------------+ 300s 300s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 300s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 300s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 300s 4. res . . . . . . . . . . . . . . . . . . . . Passed:- 300s 5. get_slope(res) . . . . . . . . . . . . . . . . Passed:- 300s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 300s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 300s 300s | What test do you wish to review (input a test number, [U]nreviewed)? 300s 300s unitizer> 5 300s - Passed ----------------------------------------------------------------------- 300s 300s | The 4 tests in this section passed. Keep tests in store ([Y]es, [N]o, [P]rev, 300s | [B]rowse, [Q]uit, [H]elp)? 300s 300s # There are three more tests to review; accept them with 'Y' 300s 300s > get_slope(res) 300s [1] 101 300s 300s unitizer> Q 300s 300s | No changes recorded. 300s | unitizer unchanged. 300s 300s > 300s > # - "use.diff" ----------------------------------------------------------------- 300s > 300s > # Use this opportunity to make sure `use.diff=FALSE` works as intended 300s > unitizer:::read_line_set_vals("Q") 300s > unitize(FLM.TEST.FILE, interactive.mode = TRUE, use.diff = FALSE) 300s 300s +------------------------------------------------------------------------------+ 300s | unitizer for: unitizer/fastlm1.R | 300s +------------------------------------------------------------------------------+ 300s 300s Pass Fail 300s 2 2 300s ...................... 300s 2 2 300s 300s - Failed ----------------------------------------------------------------------- 300s 300s | The 2 tests in this section failed because the new evaluations do not match 300s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 300s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 300s 300s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 300s > dat <- data.frame(x = 1:100, y = (1:100)^2) 300s > res <- fastlm(dat$x, dat$y) 300s 300s # Our fast computations do not produce the same results as our 300s # original tests so they fail. If you need more detail than the 300s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 300s # 300s # You should reject these tests by typing 'N' at the prompt since 300s # they are incorrect. 300s 300s > res 300s intercept slope rsq 300s -3.54e+13 7.01e+11 9.39e-01 300s attr(,"class") 300s [1] "fastlm" 300s 300s | Value mismatch: 300s 300s [1] "Mean relative difference: 1.99e+10" 300s 300s | State mismatch; see `.NEW$state` and `.REF$state`. 300s 300s unitizer> Q 300s 300s | No changes recorded. 301s | unitizer unchanged. 301s 301s > unitizer:::read_line_set_vals(c(".DIFF$state", "Q")) 301s > 301s > unitize(FLM.TEST.FILE, interactive.mode = TRUE, use.diff = FALSE) 301s 301s +------------------------------------------------------------------------------+ 301s | unitizer for: unitizer/fastlm1.R | 301s +------------------------------------------------------------------------------+ 301s 301s Pass Fail 301s 2 2 301s ...................... 301s 2 2 301s 301s - Failed ----------------------------------------------------------------------- 301s 301s | The 2 tests in this section failed because the new evaluations do not match 301s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 301s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 301s 301s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 301s > dat <- data.frame(x = 1:100, y = (1:100)^2) 301s > res <- fastlm(dat$x, dat$y) 301s 301s # Our fast computations do not produce the same results as our 301s # original tests so they fail. If you need more detail than the 301s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 301s # 301s # You should reject these tests by typing 'N' at the prompt since 301s # they are incorrect. 301s 301s > res 301s intercept slope rsq 301s -3.54e+13 7.01e+11 9.39e-01 301s attr(,"class") 301s [1] "fastlm" 301s 301s | Value mismatch: 301s 301s [1] "Mean relative difference: 1.99e+10" 301s 301s | State mismatch; see `.NEW$state` and `.REF$state`. 301s 301s unitizer> .DIFF$state 301s | State mismatch: 301s 301s Attributes: < Component "search.path": 1 string mismatch > 301s 301s unitizer> Q 301s 301s | No changes recorded. 301s | unitizer unchanged. 301s 301s > 301s > # - "failing diff" ------------------------------------------------------------- 301s > 301s > unitizer:::read_line_set_vals("Q") 301s > mock(diffobj::diffObj, quote(stop("A failing diff."))) 301s > unitize(FLM.TEST.FILE, interactive.mode = TRUE) 301s 301s +------------------------------------------------------------------------------+ 301s | unitizer for: unitizer/fastlm1.R | 301s +------------------------------------------------------------------------------+ 301s 301s Pass Fail 301s 2 2 301s ...................... 301s 2 2 301s 301s - Failed ----------------------------------------------------------------------- 301s 301s | The 2 tests in this section failed because the new evaluations do not match 301s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 301s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 301s 301s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 301s > dat <- data.frame(x = 1:100, y = (1:100)^2) 301s > res <- fastlm(dat$x, dat$y) 301s 301s # Our fast computations do not produce the same results as our 301s # original tests so they fail. If you need more detail than the 301s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 301s # 301s # You should reject these tests by typing 'N' at the prompt since 301s # they are incorrect. 301s 301s > res 301s intercept slope rsq 301s -3.54e+13 7.01e+11 9.39e-01 301s attr(,"class") 301s [1] "fastlm" 301s 301s Error in diffObj(curr.err@.ref, curr.err@.new, tar.banner = make_cont(".ref"), : 301s A failing diff. 301s | Value: 301s 301s | State mismatch; see `.DIFF$state` for details. 301s 301s unitizer> Q 301s 301s | No changes recorded. 301s | unitizer unchanged. 301s 301s > unmock(diffobj::diffObj) 301s > 301s > # - "multi-accept" ------------------------------------------------------------- 301s > 301s > # Test what happens if we back out of a multi-accept 301s > 301s > unitizer:::read_line_set_vals(c("YY", "N", "Q")) 301s > unitize(FLM.TEST.FILE, interactive.mode = TRUE) 301s 301s +------------------------------------------------------------------------------+ 301s | unitizer for: unitizer/fastlm1.R | 301s +------------------------------------------------------------------------------+ 301s 301s Pass Fail 301s 2 2 301s ...................... 301s 2 2 301s 301s - Failed ----------------------------------------------------------------------- 301s 301s | The 2 tests in this section failed because the new evaluations do not match 301s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 301s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 301s 301s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 301s > dat <- data.frame(x = 1:100, y = (1:100)^2) 301s > res <- fastlm(dat$x, dat$y) 301s 301s # Our fast computations do not produce the same results as our 301s # original tests so they fail. If you need more detail than the 301s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 301s # 301s # You should reject these tests by typing 'N' at the prompt since 301s # they are incorrect. 301s 301s > res 301s intercept slope rsq 301s -3.54e+13 7.01e+11 9.39e-01 301s attr(,"class") 301s [1] "fastlm" 301s 301s | Value mismatch: 301s 301s < .ref > .new 301s @@ 1,4 @@ @@ 1,4 @@ 301s intercept slope rsq intercept slope rsq 301s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 301s attr(,"class") attr(,"class") 301s [1] "fastlm" [1] "fastlm" 301s 301s | State mismatch; see `.DIFF$state` for details. 301s 301s unitizer> YY 301s 302s 4. res . . . . . Failed:- 302s 5. get_slope(res) . Failed:- 302s 302s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 302s unitizer> N 302s 302s 302s # Our fast computations do not produce the same results as our 302s # original tests so they fail. If you need more detail than the 302s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 302s # 302s # You should reject these tests by typing 'N' at the prompt since 302s # they are incorrect. 302s 302s > res 302s intercept slope rsq 302s -3.54e+13 7.01e+11 9.39e-01 302s attr(,"class") 302s [1] "fastlm" 302s 302s | Value mismatch: 302s 302s < .ref > .new 302s @@ 1,4 @@ @@ 1,4 @@ 302s intercept slope rsq intercept slope rsq 302s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 302s attr(,"class") attr(,"class") 302s [1] "fastlm" [1] "fastlm" 302s 302s | State mismatch; see `.DIFF$state` for details. 302s 302s unitizer> Q 302s 302s | No changes recorded. 302s | unitizer unchanged. 302s 302s > 302s > # - "multi-input" -------------------------------------------------------------- 302s > 302s > # Or if we request to go to unreviewed when there are none 302s > unitizer:::read_line_set_vals(c("YY", "Y", "B", "U", "Q")) 302s > unitize(FLM.TEST.FILE, interactive.mode = TRUE) 302s 302s +------------------------------------------------------------------------------+ 302s | unitizer for: unitizer/fastlm1.R | 302s +------------------------------------------------------------------------------+ 302s 302s Pass Fail 302s 2 2 302s ...................... 302s 2 2 302s 302s - Failed ----------------------------------------------------------------------- 302s 302s | The 2 tests in this section failed because the new evaluations do not match 302s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 302s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 302s 302s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 302s > dat <- data.frame(x = 1:100, y = (1:100)^2) 302s > res <- fastlm(dat$x, dat$y) 302s 302s # Our fast computations do not produce the same results as our 302s # original tests so they fail. If you need more detail than the 302s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 302s # 302s # You should reject these tests by typing 'N' at the prompt since 302s # they are incorrect. 302s 302s > res 302s intercept slope rsq 302s -3.54e+13 7.01e+11 9.39e-01 302s attr(,"class") 302s [1] "fastlm" 302s 302s | Value mismatch: 302s 302s < .ref > .new 302s @@ 1,4 @@ @@ 1,4 @@ 302s intercept slope rsq intercept slope rsq 302s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 302s attr(,"class") attr(,"class") 302s [1] "fastlm" [1] "fastlm" 302s 302s | State mismatch; see `.DIFF$state` for details. 302s 302s unitizer> YY 302s 303s 4. res . . . . . Failed:- 303s 5. get_slope(res) . Failed:- 303s 303s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 303s unitizer> Y 303s 303s = Finalize Unitizer ============================================================ 303s 303s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 303s | - Replacing 2 out of 2 failed tests 303s 303s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 303s 303s unitizer> B 303s 303s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 303s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 303s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 303s 4. res . . . . . . . . . . . . . . . . . . . . Failed:Y 303s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:Y 303s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 303s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 303s 303s | What test do you wish to review (input a test number, [U]nreviewed)? 303s 303s unitizer> U 303s 303s | No unreviewed tests. 303s 303s = Finalize Unitizer ============================================================ 303s 303s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 303s | - Replacing 2 out of 2 failed tests 303s 303s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 303s 303s unitizer> Q 303s 303s | Changes discarded. 303s | unitizer unchanged. 303s 303s > 303s > # - "warn in parse" ------------------------------------------------------------ 303s > 303s > # Make sure parse warnings are issued 303s > unitizer:::read_line_set_vals(c("-2147483648L", "Q")) 303s > txt8 <- unitizer:::capture_output(unitize(FLM.TEST.FILE, 303s + interactive.mode = TRUE)) 303s > 303s > any(grepl("qualified with L", txt8$message)) 303s [1] TRUE 303s > 303s > # - "demo changes" ------------------------------------------------------------- 303s > # 303s > # Now actually accept the changes 303s > unitizer:::read_line_set_vals(c("Y", "Y", "Y")) 303s > untz5 <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 303s 303s +------------------------------------------------------------------------------+ 303s | unitizer for: unitizer/fastlm1.R | 303s +------------------------------------------------------------------------------+ 303s 303s Pass Fail 303s 2 2 303s ...................... 303s 2 2 303s 303s - Failed ----------------------------------------------------------------------- 303s 303s | The 2 tests in this section failed because the new evaluations do not match 303s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 303s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 303s 303s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 303s > dat <- data.frame(x = 1:100, y = (1:100)^2) 303s > res <- fastlm(dat$x, dat$y) 303s 303s # Our fast computations do not produce the same results as our 303s # original tests so they fail. If you need more detail than the 303s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 303s # 303s # You should reject these tests by typing 'N' at the prompt since 303s # they are incorrect. 303s 303s > res 303s intercept slope rsq 303s -3.54e+13 7.01e+11 9.39e-01 303s attr(,"class") 303s [1] "fastlm" 303s 303s | Value mismatch: 303s 303s < .ref > .new 303s @@ 1,4 @@ @@ 1,4 @@ 303s intercept slope rsq intercept slope rsq 303s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 303s attr(,"class") attr(,"class") 303s [1] "fastlm" [1] "fastlm" 303s 303s | State mismatch; see `.DIFF$state` for details. 303s 303s unitizer> Y 303s 303s # This one is also incorrect; reject with 'N' 303s 303s > get_slope(res) 303s [1] 7.01e+11 303s 303s | Value mismatch: 303s 303s < .ref > .new 303s @@ 1 @@ @@ 1 @@ 303s < [1] 101 > [1] 7.01e+11 303s 303s | State mismatch; see `.DIFF$state` for details. 303s 303s unitizer> Y 303s 303s = Finalize Unitizer ============================================================ 303s 303s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 303s | - Replacing 2 out of 2 failed tests 303s 303s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 303s 303s unitizer> Y 303s 303s | unitizer updated. 303s 303s > unitizer:::read_line_set_vals(NULL) 303s > 303s > # - "get_package_dir" ---------------------------------------------------------- 303s > 303s > # These were in t-get but we moved them here to avoid re-loading pkgs.R 303s > 303s > unitizer:::get_package_dir(f) # empty 303s character(0) 303s > test.dir.1 <- file.path(".", "utzflm.Rcheck", "utzflm", "R") 303s > identical( 303s + unitizer:::get_package_dir(test.dir.1), 303s + normalizePath(dirname(test.dir.1), winslash = "/") 303s + ) 303s [1] TRUE 303s > test.dir.2 <- file.path(".", "utzflm.Rcheck") 303s > identical( 303s + unitizer:::get_package_dir(file.path(test.dir.2, "tests", "tests.R")), 303s + normalizePath(file.path(test.dir.2, "utzflm"), winslash = "/") 303s + ) 303s [1] TRUE 303s > 303s PASS 303s Begin testing t-error.R 303s 303s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 303s Copyright (C) 2024 The R Foundation for Statistical Computing 303s Platform: arm-unknown-linux-gnueabihf (32-bit) 303s 303s R is free software and comes with ABSOLUTELY NO WARRANTY. 303s You are welcome to redistribute it under certain conditions. 303s Type 'license()' or 'licence()' for distribution details. 303s 303s R is a collaborative project with many contributors. 303s Type 'contributors()' for more information and 303s 'citation()' on how to cite R or R packages in publications. 303s 303s Type 'demo()' for some demos, 'help()' for on-line help, or 303s 'help.start()' for an HTML browser interface to help. 303s Type 'q()' to quit R. 303s 304s > source(file.path("_helper", "init.R")) 304s > 304s > # - "Test Error Diffs" --------------------------------------------------------- 304s > 304s > diffs <- new( 304s + "unitizerItemTestsErrorsDiffs", 304s + value = new("unitizerItemTestsErrorsDiff", 304s + txt = "value", err = TRUE, diff = diffobj::diffChr(1, 2)) 304s + ) 304s > diffs$value@diff@target 304s [1] 1 304s > diffs$value@diff@current 304s [1] 2 304s > try(diffs$values) 304s Error in .local(x, i, j, ...) : 304s Argument `i` must be one of c("value", "conditions", "output", "message", "aborted", "state") 304s > try(diffs[[NA]]) 304s Error in .local(x, i, j, ...) : 304s Argument `i` must be character(1L) and not NA 304s > err <- new( 304s + "unitizerItemTestsErrors", 304s + value = new( 304s + "unitizerItemTestError", compare.err = TRUE, value = c("compare", "error") 304s + ) ) 304s > # - "Show Test Error" ---------------------------------------------------------- 304s > 304s > is(unitizer:::as.Diffs(err)@value, "unitizerItemTestsErrorsDiff") 304s [1] TRUE 304s > 304s PASS 304s Begin testing t-exec.R 304s 304s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 304s Copyright (C) 2024 The R Foundation for Statistical Computing 304s Platform: arm-unknown-linux-gnueabihf (32-bit) 304s 304s R is free software and comes with ABSOLUTELY NO WARRANTY. 304s You are welcome to redistribute it under certain conditions. 304s Type 'license()' or 'licence()' for distribution details. 304s 304s R is a collaborative project with many contributors. 304s Type 'contributors()' for more information and 304s 'citation()' on how to cite R or R packages in publications. 304s 304s Type 'demo()' for some demos, 'help()' for on-line help, or 304s 'help.start()' for an HTML browser interface to help. 304s Type 'q()' to quit R. 304s 304s > source(file.path("_helper", "init.R")) 305s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("exec") 305s > 305s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 305s > 305s > # - "Invisible Expression" ----------------------------------------------------- 305s > 305s > e <- new.env() 305s > exp <- quote(x <- 1:30) 305s > all.equal(1:30, unitizer:::eval_user_exp(exp, e, global = glob)$value) 305s [1] TRUE 305s > 305s > # `eval_user_exp` must be evaluated outside of test_that; also note that by 305s > # design this will output stuff to stderr and stdout 305s > out.err <- capture.output(type = "message", out.std <- capture.output({ 305s + test.obj.s3 <- structure("hello", class = "test_obj") 305s + setClass("testObj", list(a = "character")) 305s + test.obj.s4 <- new("testObj", a = "goodday") 305s + print.test_obj <- function(x, ...) stop("Error in Print") 305s + setMethod("show", "testObj", function(object) stop("Error in Show")) 305s + fun_signal <- function() signalCondition(simpleError("Error in Function", 305s + sys.call())) 305s + fun_error <- function() stop("Error in function 2") 305s + fun_error_cond <- function() stop(simpleError("Error in function 2", 305s + sys.call())) 305s + fun_error_cond_call <- function() fun_error_cond() 305s + fun_s3 <- function() test.obj.s3 305s + fun_s4 <- function() test.obj.s4 305s + fun_msg <- function() message("This is a Message") 305s + fun_warn <- function() warning("This is a warning", immediate. = TRUE) 305s + eval.env <- sys.frame(sys.nframe()) 305s + ex0 <- unitizer:::eval_user_exp(quote(stop()), eval.env, 305s + global = glob) 305s + unitizer:::set_trace(ex0$trace) 305s + trace0 <- unitizer:::unitizer_traceback() 305s + ex1 <- unitizer:::eval_user_exp(quote(fun_signal()), eval.env, 305s + global = glob) 305s + unitizer:::set_trace(ex1$trace) 305s + trace1 <- unitizer:::unitizer_traceback() 305s + ex2 <- unitizer:::eval_user_exp(quote(fun_error()), eval.env, 305s + global = glob) 305s + unitizer:::set_trace(ex2$trace) 305s + trace2 <- unitizer:::unitizer_traceback() 305s + ex2a <- unitizer:::eval_user_exp(expression(fun_error()), 305s + eval.env, global = glob) 305s + unitizer:::set_trace(ex2a$trace) 305s + trace2a <- unitizer:::unitizer_traceback() 305s + ex6 <- unitizer:::eval_user_exp(quote(fun_error_cond()), 305s + eval.env, global = glob) 305s + unitizer:::set_trace(ex6$trace) 305s + trace6 <- unitizer:::unitizer_traceback() 305s + ex7 <- unitizer:::eval_user_exp(quote(fun_error_cond_call()), 305s + eval.env, global = glob) 305s + unitizer:::set_trace(ex7$trace) 305s + trace7 <- unitizer:::unitizer_traceback() 305s + ex3 <- unitizer:::eval_user_exp(quote(fun_s3()), eval.env, 305s + global = glob) 305s + unitizer:::set_trace(ex3$trace) 305s + trace3 <- unitizer:::unitizer_traceback() 305s + ex3a <- unitizer:::eval_user_exp(expression(fun_s3()), eval.env, 305s + global = glob) 305s + unitizer:::set_trace(ex3a$trace) 305s + trace3a <- unitizer:::unitizer_traceback() 305s + ex4 <- unitizer:::eval_user_exp(quote(fun_s4()), eval.env, 305s + global = glob) 305s + ex4a <- unitizer:::eval_user_exp(expression(fun_s4()), eval.env, 305s + global = glob) 305s + unitizer:::set_trace(ex4a$trace) 305s + trace4a <- unitizer:::unitizer_traceback() 305s + ex5 <- unitizer:::eval_user_exp(quote(sum(1:20)), eval.env, 305s + global = glob) 305s + ex9 <- unitizer:::eval_user_exp(quote(fun_warn()), eval.env, 305s + global = glob) 305s + ex10 <- unitizer:::eval_user_exp(quote(fun_msg()), eval.env, 305s + global = glob) 305s + ex11 <- unitizer:::eval_user_exp(quote((function() quote(stop("shouldn't error")))()), 305s + eval.env, global = glob) 305s + })) 305s > # NOTE: deparsed test values generated with unitizer:::deparse_mixed 305s > 305s > # - "User Expression Evaluation" ----------------------------------------------- 305s > 305s > # a condition error, signaled, not stop (hence no aborted, etc.) 305s > identical(ex1, rds(100)) 305s [1] TRUE 305s > # a stop 305s > identical(ex2, rds(200)) 305s [1] TRUE 305s > # ex3 and ex3a are a total PITA because the calls need to be manually copied 305s > # b/c they don't deparse properly even with control="all", the trace and 305s > # call component loose the `structure` part in the quoted portions... 305s > # a stop in print; 305s > identical(ex3, rds(300)) 305s [1] TRUE 305s > identical(ex3a, rds(400)) 305s [1] TRUE 305s > # S4 objects; these originally caused problems since they don't deparse 305s > identical(ex4, rds(500)) 305s [1] TRUE 305s > identical(ex4a, rds(600)) 305s [1] TRUE 305s > # a normal expression 305s > identical(ex5, rds(700)) 305s [1] TRUE 305s > identical(ex9, rds(800)) 305s [1] TRUE 305s > all.equal(ex10, rds(900)) # not sure why identical doesn't work here 305s [1] TRUE 305s > # expect_false(ex11$aborted) 305s > ex11$aborted # FALSE 305s [1] FALSE 305s > 305s > # - "Trace Setting" ------------------------------------------------------------ 305s > 305s > identical(trace0, trace1) 305s [1] TRUE 305s > # expect_identical(trace2, list("stop(\"Error in function 2\")", 305s > # "fun_error()")) 305s > trace2 305s [[1]] 305s [1] "stop(\"Error in function 2\")" 305s 305s [[2]] 305s [1] "fun_error()" 305s 305s > trace6 305s [[1]] 305s [1] "stop(simpleError(\"Error in function 2\", sys.call()))" 305s 305s [[2]] 305s [1] "fun_error_cond()" 305s 305s > trace7 305s [[1]] 305s [1] "stop(simpleError(\"Error in function 2\", sys.call()))" 305s 305s [[2]] 305s [1] "fun_error_cond()" 305s 305s [[3]] 305s [1] "fun_error_cond_call()" 305s 305s > trace3a 305s [[1]] 305s [1] "stop(\"Error in Print\")" 305s 305s [[2]] 305s [1] "print.test_obj(\"hello\")" 305s 305s [[3]] 305s [1] "print(\"hello\")" 305s 305s > 305s > # needed to tweak this one so it would pass in R-devel 3.4.1 305s > # expect_true(all(mapply(function(x, y) grepl(y, x), trace4a, list("stop\\(\"Error in Show\"\\)", 305s > # "show\\(.*\"testObj\".*\\)", "show\\(.*\"testObj\".*\\)")))) 305s > all( 305s + mapply( 305s + function(x, y) grepl(y, x), 305s + trace4a, 305s + list( 305s + "stop\\(\"Error in Show\"\\)", 305s + "show\\(.*\"testObj\".*\\)", "show\\(.*\"testObj\".*\\)") 305s + ) ) 305s [1] TRUE 305s > # - "Clean Top Level Message" -------------------------------------------------- 305s > 305s > old.width <- options(width = 80L) 305s > a <- unitizer:::eval_with_capture( 305s + expression(stop("short stop message")), global = glob 305s + ) 305s > b <- unitizer:::eval_with_capture( 305s + expression(stop("short stop .* with regex message")), global = glob 305s + ) 305s > c <- unitizer:::eval_with_capture( 305s + expression(stop("this is a long error message that is supposed to cause R to add a new line after the error: part")), 305s + global = glob 305s + ) 305s > d <- unitizer:::eval_with_capture( 305s + expression(warning("short warning message")), global = glob 305s + ) 305s > e <- unitizer:::eval_with_capture( 305s + expression(warning("short warning message .* with regex")), global = glob 305s + ) 305s > f <- unitizer:::eval_with_capture( 305s + expression( 305s + warning("this is a long error message that is supposed to cause R to add a new line after the error: part") 305s + ), 305s + global = glob 305s + ) 305s > g <- unitizer:::eval_with_capture( 305s + quote(stop("short stop message")), global = glob 305s + ) 305s > h <- unitizer:::eval_with_capture( 305s + quote(stop("short stop .* with regex message")), global = glob 305s + ) 305s > i <- unitizer:::eval_with_capture( 305s + quote(stop("this is a long error message that is supposed to cause R to add a new line after the error: part")), 305s + global = glob 305s + ) 305s > j <- unitizer:::eval_with_capture( 305s + quote(warning("short warning message")), global = glob 305s + ) 305s > k <- unitizer:::eval_with_capture( 305s + quote(warning("short warning message .* with regex")), global = glob 305s + ) 305s > l <- unitizer:::eval_with_capture( 305s + quote(warning("this is a long error message that is supposed to cause R to add a new line after the error: part")), 305s + global = glob 305s + ) 305s > m <- unitizer:::eval_with_capture(expression("a"/3), global = glob) 305s > exp.q <- quote({ 305s + fun <- function() warning("error in fun") 305s + message("boo hay \n there \n") 305s + 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") 305s + warning("ashorter warning blah") 305s + message("boo hay \n there \n") 305s + warning() 305s + fun() 305s + suppressWarnings(warning("quiet warn")) 305s + message("boo hay \n there \n") 305s + error(3) 305s + }) 305s > x <- unitizer:::eval_with_capture(exp.q, global = glob) 305s > exp.exp <- expression({ 305s + fun <- function() warning("error in fun") 305s + message("boo hay \n there \n") 305s + 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") 305s + warning("ashorter warning blah") 305s + message("boo hay \n there \n") 305s + warning() 305s + fun() 305s + suppressWarnings(warning("quiet warn")) 305s + message("boo hay \n there \n") 305s + error(3) 305s + }) 305s > y <- unitizer:::eval_with_capture(exp.exp, global = glob) 305s > options(old.width) 305s > 305s > a$message 305s [1] "Error: short stop message\n" 305s > b$message 305s [1] "Error: short stop .* with regex message\n" 305s > c$message 305s [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" 305s > d$message 305s [1] "Warning: short warning message\n" 305s > e$message 305s [1] "Warning: short warning message .* with regex\n" 305s > f$message 305s [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" 305s > g$message 305s [1] "Error: short stop message\n" 305s > h$message 305s [1] "Error: short stop .* with regex message\n" 305s > i$message 305s [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" 305s > j$message 305s [1] "Warning: short warning message\n" 305s > k$message 305s [1] "Warning: short warning message .* with regex\n" 305s > l$message 305s [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" 305s > m$message 305s [1] "Error in \"a\"/3 : non-numeric argument to binary operator\n" 305s > 305s > # `sub` needed due to inconsistencies in R 3.4 and 3.3 for top level error 305s > # messages 305s > writeLines(sub("\\bError.*: ", "", x$message)) 305s boo hay 305s there 305s 305s Warning: 305s 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 305s Warning: ashorter warning blah 305s boo hay 305s there 305s 305s Warning: 305s Warning in fun() : error in fun 305s boo hay 305s there 305s 305s could not find function "error" 305s 305s > writeLines(sub("\\bError.*: ", "", y$message)) 305s boo hay 305s there 305s 305s Warning: 305s 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 305s Warning: ashorter warning blah 305s boo hay 305s there 305s 305s Warning: 305s Warning in fun() : error in fun 305s boo hay 305s there 305s 305s could not find function "error" 305s 305s > 305s > 305s PASS 305s Begin testing t-get.R 305s 305s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 305s Copyright (C) 2024 The R Foundation for Statistical Computing 305s Platform: arm-unknown-linux-gnueabihf (32-bit) 305s 305s R is free software and comes with ABSOLUTELY NO WARRANTY. 305s You are welcome to redistribute it under certain conditions. 305s Type 'license()' or 'licence()' for distribution details. 305s 305s R is a collaborative project with many contributors. 305s Type 'contributors()' for more information and 305s 'citation()' on how to cite R or R packages in publications. 305s 305s Type 'demo()' for some demos, 'help()' for on-line help, or 305s 'help.start()' for an HTML browser interface to help. 305s Type 'q()' to quit R. 305s 305s > source(file.path("_helper", "init.R")) 305s > source(file.path("aammrtf", "mock.R")) 305s > 305s > toy.path <- file.path("_helper", "unitizers", "misc.unitizer") 305s > toy.stor <- readRDS(file.path(toy.path, "data.rds")) 305s > 305s > # - "Error Cases" -------------------------------------------------------------- 305s > 305s > try(get_unitizer(1)) 305s Error in get_unitizer.default(1) : 305s 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. 305s > try(get_unitizer(letters)) 305s Error in get_unitizer.character(letters) : 305s Argument `store.id` must be a 1 length character vector 305s > try(get_unitizer("_helper")) 305s Error in get_unitizer.character("_helper") : 305s Argument `store.id` does not appear to refer to a unitizer directory 305s > try(get_unitizer("t-get.R")) 305s Error in get_unitizer.character("t-get.R") : 305s Argument `store.id` does not appear to refer to a unitizer directory 305s > try(set_unitizer(1)) 305s Error in set_unitizer.default(1) : 305s 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. 305s > try(set_unitizer(letters)) 305s Error in set_unitizer.character(letters) : 305s Argument `store.id` must be a 1 length character vector 305s > # 4.3 changed reporting of missing argument errors 305s > tryCatch(set_unitizer("a"), error=function(e) conditionMessage(e)) 305s [1] "argument \"unitizer\" is missing, with no default" 305s > try(set_unitizer("a", "blergh")) 305s Error in set_unitizer.character("a", "blergh") : 305s Argument `unitizer` must be a unitizer 305s > !file.exists("a") # TRUE 305s [1] TRUE 305s > try(suppressWarnings(set_unitizer("tests/# ;!./# \\/", toy.stor))) 305s Error in set_unitizer.character("tests/# ;!./# \\/", toy.stor) : 305s Could not create `store.id`; make sure it is a valid file name; see warning for details 305s > 305s > # - "Get works as expected" ---------------------------------------------------- 305s > 305s > tmp.dir <- tempfile() 305s > dir.create(tmp.dir) 305s > tmp.sub.dir <- paste0(tmp.dir, "/get.test.dir") 305s > tmp.fake.utz <- paste0(tmp.dir, "/fake.unitizer") 305s > 305s > # expect_false(get_unitizer("asldkfjskfa")) 305s > get_unitizer("asldkfjskfa") # FALSE 305s [1] FALSE 305s > all.equal(get_unitizer(toy.path), toy.stor) 305s [1] TRUE 305s > is(toy.stor, "unitizer") 305s [1] TRUE 305s > dir.create(tmp.fake.utz) 305s > fake.utz <- file.path(tmp.fake.utz, "data.rds") 305s > cat("# this is not an RDS\n", file = fake.utz) 305s > # expect_error(capture.output(get_unitizer(tmp.fake.utz), type = "message"), 305s > # "Failed loading unitizer") 305s > try(capture.output(get_unitizer(tmp.fake.utz), type = "message")) 305s Error in get_unitizer.character(tmp.fake.utz) : 305s Failed loading unitizer; see prior error messages for details 305s > 305s > tmp.sub.dir <- paste0(tmp.dir, "/get.test.dir") 305s > tmp.sub.dir2 <- paste0(tmp.dir, "/get.test.dir2") 305s > tmp.sub.dir3 <- paste0(tmp.dir, "/load.dirs") 305s > 305s > # - "Set works as expected" ---------------------------------------------------- 305s > 305s > dir.create(tmp.sub.dir) 305s > set_unitizer(tmp.sub.dir, toy.stor) 305s [1] TRUE 305s > all.equal(readRDS(paste0(tmp.sub.dir, "/data.rds")), toy.stor) 305s [1] TRUE 305s > just.a.file <- tempfile() 305s > on.exit(unlink(just.a.file)) 305s > cat("just a file\n", file = just.a.file) 305s > err <- capture.output(try(set_unitizer(just.a.file, toy.stor)), type='message') 305s > any(grepl('not a directory', err)) 305s [1] TRUE 305s > 305s > # - "load/store_unitizer" ------------------------------------------------------ 305s > 305s > # Several different stores in different states (i.e. requiring upgrade, 305s > # not unitizers, etc.) 305s > dir.create(tmp.sub.dir3) 305s > make.path <- lapply(file.path(tmp.sub.dir3, dir("_helper/ref-objs/load/")), 305s + dir.create) 305s > if (!all(unlist(make.path))) stop("Failed making paths") 305s > file.copy(list.files("_helper/ref-objs/load", full.names = TRUE), tmp.sub.dir3, 305s + recursive = TRUE) 305s [1] TRUE TRUE TRUE TRUE TRUE TRUE 305s > par.frame <- new.env() 305s > store.ids <- as.list(list.files(tmp.sub.dir3, full.names = TRUE)) 305s > 305s > # must be upgraded, but cannot 305s > load.try <- unitizer:::capture_output( 305s + try( 305s + unitizer:::load_unitizers(store.ids, rep(NA_character_, 305s + length(store.ids)), par.frame = par.frame, interactive.mode = FALSE, 305s + mode = "unitize", force.upgrade = FALSE, show.progress=0L, transcript=FALSE 305s + ) ) ) 306s > any(grepl('could not be loaded', load.try$message)) 306s [1] TRUE 306s > any(grepl('could not be upgraded', load.try$message)) 306s [1] TRUE 306s > any(grepl('Cannot proceed', load.try$message)) 306s [1] TRUE 306s > 306s > # handle failure in store_unitizer, we just try this on one of the store ids 306s > 306s > out <- unitizer:::capture_output( 306s + unitizer:::load_unitizers( 306s + store.ids[4], rep(NA_character_, length(store.ids))[4], 306s + par.frame = par.frame, interactive.mode = FALSE, mode = "unitize", 306s + force.upgrade = TRUE, show.progress=0L, transcript=FALSE 306s + ) 306s + ) 306s > any(grepl('Upgraded test file does not match original', out$message)) 306s [1] TRUE 306s > 306s > # try weird store ids 306s > out <- unitizer:::capture_output( 306s + invalid.store <- try( 306s + unitizer:::load_unitizers( 306s + list(structure("hello", class = "unitizer_error_store")), 306s + NA_character_, par.frame = par.frame, 306s + interactive.mode = FALSE, mode = "unitize", force.upgrade = FALSE, 306s + show.progress=0L, transcript=FALSE 306s + ) ) 306s + ) 306s > inherits(invalid.store, "try-error") 306s [1] TRUE 306s > any(grepl("returned something other than", out$message)) 306s [1] TRUE 306s > 306s > # Load mix of loadable and not loadable objects 306s > glob <- suppressWarnings(unitizer:::unitizerGlobal$new()) 306s > # with warning: "does not exist|test file does not") 306s > out <- unitizer:::capture_output( 306s + untzs <- try( 306s + unitizer:::load_unitizers( 306s + store.ids, rep(NA_character_, length(store.ids)), par.frame = par.frame, 306s + interactive.mode = FALSE, mode = "unitize", force.upgrade = TRUE, 306s + global = glob, show.progress=0L, transcript=FALSE 306s + ) ) ) 306s > inherits(untzs, "try-error") 306s [1] TRUE 306s > any(grepl('could not be loaded', out$message)) 306s [1] TRUE 306s > any(grepl('could not be upgraded', out$message)) 306s [1] TRUE 306s > any(grepl('Cannot proceed', out$message)) 306s [1] TRUE 306s > 306s > # Test failure of storage of a loaded and upgraded unitizers 306s > 306s > untzs <- unitizer:::load_unitizers( 306s + store.ids[4], NA_character_, par.frame = par.frame, 306s + interactive.mode = FALSE, mode = "unitize", force.upgrade = TRUE, 306s + global = glob, show.progress=0L, transcript=FALSE 306s + ) 306s Warning in addSlot(object, "cons", NULL) : 306s Slot `cons` does not exist in current version of `unitizer` so not added to object. 306s Warning in addSlot(object, "jump.to.test", 0L) : 306s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 306s Warning in unitizer:::load_unitizers(store.ids[4], NA_character_, par.frame = par.frame, : 306s Upgraded test file does not match original test file ('internals.R' vs 'NA'). 306s > mock(unitizer:::set_unitizer, quote(stop("set fail"))) 306s > try(unitizer:::store_unitizer(untzs[[1]])) 306s Error in set_unitizer(unitizer@id, unitizer) : set fail 306s Error in unitizer:::store_unitizer(untzs[[1]]) : 306s Error attempting to save unitizer, see previous messages. 306s > unmock(unitizer:::set_unitizer) 306s > 306s > # Try reloading already loaded unitisers 306s > reload <- unitizer:::as.list(untzs) 306s > # this creates a global object, hence warning 306s > untzs1a <- unitizer:::load_unitizers( 306s + reload, rep(NA_character_, length(reload)), par.frame = par.frame, 306s + interactive.mode = FALSE, mode = "unitize", force.upgrade = FALSE, 306s + show.progress=0L, transcript=FALSE 306s + ) 306s Warning in .Object$initialize(...) : 306s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 306s > all(vapply(unitizer:::as.list(untzs1a), is, logical(1L), "unitizer")) 306s [1] TRUE 306s > 306s > # misc tests 306s > # warning Instantiated global object without 306s > 306s > untzs2 <- unitizer:::load_unitizers( 306s + list(tmp.sub.dir2), NA_character_, par.frame, interactive.mode = FALSE, 306s + mode = "unitize", force.upgrade = FALSE, show.progress=0L, transcript=FALSE 306s + ) 306s Warning in .Object$initialize(...) : 306s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 306s > is(untzs2[[1L]], "unitizer") 306s [1] TRUE 306s > identical(parent.env(untzs2[[1L]]@zero.env), par.frame) 306s [1] TRUE 306s > 306s > # something that won't get reset on load so we can check our re-load 306s > untzs2[[1L]]@eval.time <- 33 306s > unitizer:::store_unitizer(untzs2[[1L]]) 306s | unitizer updated. 306s 306s > 306s > # warning Instantiated global object without 306s > untzs2.1 <- unitizer:::load_unitizers( 306s + list(tmp.sub.dir2), NA_character_, par.frame, interactive.mode = FALSE, 306s + mode = "unitize", force.upgrade = FALSE, show.progress=0L, transcript=FALSE 306s + ) 306s Warning in .Object$initialize(...) : 306s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 306s > untzs2.1[[1L]]@eval.time # 33 306s [1] 33 306s > unlink(c(tmp.sub.dir2, tmp.sub.dir3, tmp.sub.dir), recursive = TRUE) 306s > 306s > # - "is_package" --------------------------------------------------------------- 306s > 306s > unitizer:::is_package_dir(system.file(package = "stats")) 306s [1] TRUE 306s > unitizer:::is_package_dir(system.file(package = "methods")) 306s [1] TRUE 306s > 306s > ## Seems like some change now tests no longer installed by default with 306s > ## packages, at least in the unix distros, so can't easily test with 306s > ## has.tests==TRUE 306s > 306s > unitizer:::pretty_path(file.path(system.file(package = "stats"), 306s + "DESCRIPTION")) 306s [1] "package:stats/DESCRIPTION" 306s > old.wd <- getwd() 306s > setwd(system.file(package = "stats")) 306s > unitizer:::pretty_path(file.path(system.file(package = "stats"), "DESCRIPTION")) 306s [1] "DESCRIPTION" 306s > unitizer:::pretty_path(file.path(system.file(package = "stats"))) 306s [1] "." 306s > setwd(old.wd) 306s > 306s > # just picked some folder we know will not work (No Desc) 306s > unitizer:::is_package_dir(file.path(system.file(package = "stats"), "R")) 306s [1] "No DESCRIPTION file" 306s > unitizer:::is_package_dir("ASDFASDF") 306s [1] "not an existing directory" 306s > unitizer:::is_package_dir(file.path(system.file(package = "unitizer"), 306s + "expkg", "baddescription1")) 306s [1] "DESCRIPTION file did not have a package name entry" 306s > # *get_*package_dir 306s > pkg.f <- file.path(system.file(package = "unitizer"), "tests", 306s + "interactive", "run.R") 306s > length(unitizer:::get_package_dir(pkg.f)) == 1L 306s [1] TRUE 306s > length(unitizer:::get_package_dir(dirname(pkg.f))) == 1L 306s [1] TRUE 306s > f <- tempfile() 306s > cat("helloworld", file = f) 306s > length(unitizer:::get_package_dir(f)) == 0L 306s [1] TRUE 306s > unlink(f) 306s > 306s > # some more tests moved to t-demo.R to avoid reloading pkgs 306s > 306s > # - "is_unitizer_dir" ---------------------------------------------------------- 306s > 306s > base.dir <- file.path(system.file(package = "unitizer"), "expkg", "infer") 306s > unitizer:::is_unitizer_dir(base.dir) # FALSE 306s [1] FALSE 306s > unitizer:::is_unitizer_dir( 306s + file.path(base.dir, "tests", "unitizer", "infer.unitizer") 306s + ) 306s [1] TRUE 306s > # - "infer_unitizer_location" -------------------------------------------------- 306s > 306s > infer <- function(...) infer_unitizer_location(..., interactive.mode = FALSE) 306s > base.dir <- file.path(system.file(package = "unitizer"), "expkg", "infer") 306s > 306s > # Verify package is still in state we built tests on; need to sort b/c 306s > # different platforms have different lexical sorts 306s > identical( 306s + sort(c("aaa.R", "aaa.unitizer", "abc.R", "abc.unitizer", "inf.R", 306s + "inf.unitizer", "infer.R", "infer.unitizer", "zzz.R", "zzz.unitizer")), 306s + list.files(file.path(base.dir, "tests", "unitizer")) 306s + ) 306s [1] TRUE 306s > # Package dir 306s > unitizer:::capture_output(inf <- infer(base.dir)) 306s > basename(inf) 306s [1] "infer.R" 306s > unitizer:::capture_output(inf <- infer(base.dir, type = "d")) 306s > basename(inf) 306s [1] "unitizer" 306s > unitizer:::capture_output(inf <- infer(base.dir, type = "u")) 306s > basename(inf) 306s [1] "infer.unitizer" 306s > 306s > inf.dir <- infer(file.path(base.dir, "*")) # warn 306s Warning in infer_unitizer_location.character(..., interactive.mode = FALSE) : 306s 5 possible targets; too many to unambiguously infer desired file 306s > identical(file.path(base.dir, "*"), inf.dir) 306s [1] TRUE 306s > 306s > unitizer:::capture_output(inf <- infer(file.path(base.dir, "z"))) 306s > basename(inf) 306s [1] "zzz.R" 306s > unitizer:::capture_output(inf <- infer(file.path(base.dir, "z"), type = "u")) 306s > basename(inf) 306s [1] "zzz.unitizer" 306s > 306s > # Normal dir 306s > base.dir2 <- file.path(base.dir, "tests", "unitizer") 306s > # note don't need * to generate warning 306s > out <- unitizer:::capture_output(inf.dir2 <- infer(base.dir2)) # warn 306s > any(grepl("5 possible targets", out$message)) 306s [1] TRUE 306s > identical(base.dir2, inf.dir2) 306s [1] TRUE 306s > out <- unitizer:::capture_output(infer(file.path(base.dir2, "a"))) 306s > any(grepl("2 possible targets", out$message)) 306s [1] TRUE 306s > out <- unitizer:::capture_output(infer(file.path(base.dir2, "a"), type = "u")) 306s > any(grepl("2 possible targets", out$message)) 306s [1] TRUE 306s > out <- 306s + unitizer:::capture_output(fname <- basename(infer(file.path(base.dir2, "z")))) 306s > fname 306s [1] "zzz.R" 306s > any(grepl('Inferred test file location:', out)) 306s [1] TRUE 306s > out <- unitizer:::capture_output( 306s + fname <- basename(infer(file.path(base.dir2, "z"), type="u")) 306s + ) 306s > fname 306s [1] "zzz.unitizer" 306s > any(grepl('Inferred unitizer location:', out)) 306s [1] TRUE 306s > 306s > # Random file without setting working dir first, in order for this to work 306s > # non-interactivel we need it to work with the R CMD check dir structure, 306s > # and possibly with the covr dir structure 306s > if (interactive()) infer("tests2") 306s > 306s > # Interactive mode 306s > unitizer:::read_line_set_vals(c("26", "Q")) 306s > # warn/output 306s > select <- unitizer:::infer_unitizer_location( 306s + file.path(base.dir, "*"), type = "f", interactive.mode = TRUE 306s + ) 306s Possible matching files from "tests/unitizer": 306s 1: aaa.R 306s 2: abc.R 306s 3: inf.R 306s 4: infer.R 306s 5: zzz.R 306s unitizer> 26 306s | Type a number in `1:5` at the prompt 306s [1] 26 306s unitizer> Q 306s 306s No file selected 306s Warning in infer_unitizer_location.character(file.path(base.dir, "*"), type = "f", : 306s Invalid user selection 306s > identical(select, file.path(base.dir, "*")) 306s [1] TRUE 306s > 306s > unitizer:::read_line_set_vals(c("5")) 306s > # output 306s > sel.loc <- unitizer:::infer_unitizer_location(file.path(base.dir, 306s + "*"), type = "f", interactive.mode = TRUE) 306s Possible matching files from "tests/unitizer": 306s 1: aaa.R 306s 2: abc.R 306s 3: inf.R 306s 4: infer.R 306s 5: zzz.R 306s unitizer> 5 306s Selected file: zzz.R 306s > basename(sel.loc) 306s [1] "zzz.R" 306s > unitizer:::read_line_set_vals(NULL) 306s > 306s > # Non standard inferences 306s > # warn 306s > out <- unitizer:::capture_output( 306s + unitizer:::infer_unitizer_location(NULL, interactive = FALSE) 306s + ) 306s > any(grepl("too many to unambiguously", out$message)) 306s [1] TRUE 306s > 306s > fake.class <- structure(list(), class = "thisclassdoesn'texist") 306s > identical(infer(fake.class), fake.class) 306s [1] TRUE 306s > 306s > # no match since file can't exist (warn) 306s > f <- tempfile() 306s > out <- capture.output( 306s + invisible(unitizer:::infer_unitizer_location(f)), type='message' 306s + ) 306s > any(grepl("No possible matching files", out)) 306s [1] TRUE 306s > 306s > 306s > unlink(tmp.dir, recursive = TRUE) 306s > 306s > 306s PASS 306s Begin testing t-global.R 306s 306s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 306s Copyright (C) 2024 The R Foundation for Statistical Computing 306s Platform: arm-unknown-linux-gnueabihf (32-bit) 306s 306s R is free software and comes with ABSOLUTELY NO WARRANTY. 306s You are welcome to redistribute it under certain conditions. 306s Type 'license()' or 'licence()' for distribution details. 306s 306s R is a collaborative project with many contributors. 306s Type 'contributors()' for more information and 306s 'citation()' on how to cite R or R packages in publications. 306s 306s Type 'demo()' for some demos, 'help()' for on-line help, or 306s 'help.start()' for an HTML browser interface to help. 306s Type 'q()' to quit R. 306s 306s > source(file.path("_helper", "init.R")) 307s > 307s > # Most tests involving global are scattered all over the place, just putting a 307s > # few extra ones that are very specifically about global here 307s > # 307s > # - "Singleton Implementation Working" ----------------------------------------- 307s > 307s > invisible(unitizer:::unitizerGlobal$new()) # warn 307s Warning in .Object$initialize(...) : 307s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 307s > glob.first <- unitizer:::unitizerGlobal$new(set.global = TRUE) 307s > try(unitizer:::unitizerGlobal$new(set.global = TRUE)) 307s Error in .Object$initialize(...) : 307s Internal Error: global tracking object already exists; this should never happen; contact maintainer 307s > try(unitizer:::unitizerGlobal$new()) 307s Error in .Object$initialize(...) : 307s Internal Error: global tracking object already exists; this should never happen; contact maintainer 307s > glob.first$release() 307s > 307s > # - "Dummy Display" ------------------------------------------------------------ 307s > 307s > show(new("unitizerDummy")) # not recorded 307s 307s > 307s > # - "Disable / Enable" --------------------------------------------------------- 307s > 307s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 307s > glob$disable() 307s An object of class "unitizerGlobalStatus" 307s Slot "search.path": 307s [1] 0 307s 307s Slot "options": 307s [1] 0 307s 307s Slot "working.directory": 307s [1] 0 307s 307s Slot "random.seed": 307s [1] 0 307s 307s Slot "namespaces": 307s [1] 0 307s 307s > glob$enable(c(search.path = 2L)) # warn state setting 307s Warning in glob$enable(c(search.path = 2L)) : 307s State setting for `search.path` has already been disabled and cannot be re-enabled 307s An object of class "unitizerGlobalStatus" 307s Slot "search.path": 307s [1] 0 307s 307s Slot "options": 307s [1] 0 307s 307s Slot "working.directory": 307s [1] 0 307s 307s Slot "random.seed": 307s [1] 0 307s 307s Slot "namespaces": 307s [1] 0 307s 307s > 307s > 307s PASS 307s Begin testing t-handledruns.R 307s 307s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 307s Copyright (C) 2024 The R Foundation for Statistical Computing 307s Platform: arm-unknown-linux-gnueabihf (32-bit) 307s 307s R is free software and comes with ABSOLUTELY NO WARRANTY. 307s You are welcome to redistribute it under certain conditions. 307s Type 'license()' or 'licence()' for distribution details. 307s 307s R is a collaborative project with many contributors. 307s Type 'contributors()' for more information and 307s 'citation()' on how to cite R or R packages in publications. 307s 307s Type 'demo()' for some demos, 'help()' for on-line help, or 307s 'help.start()' for an HTML browser interface to help. 307s Type 'q()' to quit R. 307s 307s > source(file.path("_helper", "init.R")) 307s > 307s > # - "Ensure we get warning if we try to run in handlers" ----------------------- 307s > 307s > try(unitize("_helper/unitizers/trivial.R")) 307s 307s Warning in check_call_stack() : 307s It appears you are running unitizer inside an error handling function such as 307s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 307s couraged as it may cause unpredictable behavior from unitizer in the event tests 307s produce conditions / errors. We strongly recommend you re-run your tests 307s outside of such handling functions. 308s Warning in history_capt(history, interactive.mode) : 308s Unable to capture history in non-interactive mode. 308s | 4/4 tests passed; nothing to review. 308s 308s > tryCatch(unitize("_helper/unitizers/trivial.R")) 308s 308s Warning in check_call_stack() : 308s It appears you are running unitizer inside an error handling function such as 308s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 308s couraged as it may cause unpredictable behavior from unitizer in the event tests 308s produce conditions / errors. We strongly recommend you re-run your tests 308s outside of such handling functions. 308s Warning in history_capt(history, interactive.mode) : 308s Unable to capture history in non-interactive mode. 308s | 4/4 tests passed; nothing to review. 308s 308s > withRestarts(unitize("_helper/unitizers/trivial.R")) 308s 308s Warning in check_call_stack() : 308s It appears you are running unitizer inside an error handling function such as 308s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 308s couraged as it may cause unpredictable behavior from unitizer in the event tests 308s produce conditions / errors. We strongly recommend you re-run your tests 308s outside of such handling functions. 308s Warning in history_capt(history, interactive.mode) : 308s Unable to capture history in non-interactive mode. 308s | 4/4 tests passed; nothing to review. 308s 308s > 308s > # need to figure out why running this without `try` in covr causes cover to 308s > # fail with 308s > # Error in aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...) : 308s > # no rows to aggregate 308s > 308s > # - "Ensure we get error if we try to do something stupid..." ------------------ 308s > 308s > try( 308s + withRestarts( 308s + unitize("_helper/unitizers/trivial.R"), 308s + unitizerInteractiveFail = function() NULL 308s + ) 308s + ) 308s 308s Warning in check_call_stack() : 308s It appears you are running unitizer inside an error handling function such as 308s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 308s couraged as it may cause unpredictable behavior from unitizer in the event tests 308s produce conditions / errors. We strongly recommend you re-run your tests 308s outside of such handling functions. 308s Error in check_call_stack() : 308s "unitizerInteractiveFail" restart is already defined; unitizer relies on this 308s restart to manage evaluation so unitizer will not run if it is defined outside 308s of `unitize`. If you did not define this restart contact maintainer. 308s > 308s > 308s PASS 308s Begin testing t-ischecks.R 309s 309s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 309s Copyright (C) 2024 The R Foundation for Statistical Computing 309s Platform: arm-unknown-linux-gnueabihf (32-bit) 309s 309s R is free software and comes with ABSOLUTELY NO WARRANTY. 309s You are welcome to redistribute it under certain conditions. 309s Type 'license()' or 'licence()' for distribution details. 309s 309s R is a collaborative project with many contributors. 309s Type 'contributors()' for more information and 309s 'citation()' on how to cite R or R packages in publications. 309s 309s Type 'demo()' for some demos, 'help()' for on-line help, or 309s 'help.start()' for an HTML browser interface to help. 309s Type 'q()' to quit R. 309s 309s > source(file.path("_helper", "init.R")) 309s > # - "int.pos" ------------------------------------------------------------------ 309s > 309s > unitizer:::is.int.pos.1L(c(1, 2, 3)) # FALSE 309s [1] FALSE 309s > unitizer:::is.int.pos.1L(1) 309s [1] TRUE 309s > unitizer:::is.int.pos.1L(1) 309s [1] TRUE 309s > unitizer:::is.int.pos.1L(-1) # FALSE 309s [1] FALSE 309s > unitizer:::is.int.pos.1L(NA_integer_) # FALSE 309s [1] FALSE 309s > unitizer:::is.int.pos.2L(1:2) 309s [1] TRUE 309s > unitizer:::is.int.pos.2L(c(1, 2)) 309s [1] TRUE 309s > 309s > # - "is.valid_two_arg" --------------------------------------------------------- 309s > 309s > f1 <- function(x, y) NULL 309s > f2 <- function(...) NULL 309s > f3 <- function(x, ...) NULL 309s > f4 <- function(x, y, z) NULL 309s > f5 <- function(x, y, z = 3) NULL 309s > f6 <- function(x) NULL 309s > unitizer:::is.two_arg_fun(f1) 309s [1] TRUE 309s > unitizer:::is.two_arg_fun(f2) 309s [1] TRUE 309s > unitizer:::is.two_arg_fun(f3) 309s [1] TRUE 309s > unitizer:::is.two_arg_fun(f4) 309s [1] "cannot have any non-optional arguments other than first two" 309s > unitizer:::is.two_arg_fun(f5) 309s [1] TRUE 309s > unitizer:::is.two_arg_fun(f6) 309s [1] "does not have at least two arguments" 309s > unitizer:::is.two_arg_fun(1) 309s [1] "is not a function" 309s > 309s > # - "is.valid_capt_setting" ---------------------------------------------------- 309s > 309s > capt.test <- unitizer:::is.valid_capt_setting(c(T, T)) 309s | value must be logical(2L) containing TRUE 309s | / FALSE and with names `c("output", "message") 309s 309s > capt.test 309s [1] FALSE 309s > 309s PASS 309s Begin testing t-item.R 309s 309s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 309s Copyright (C) 2024 The R Foundation for Statistical Computing 309s Platform: arm-unknown-linux-gnueabihf (32-bit) 309s 309s R is free software and comes with ABSOLUTELY NO WARRANTY. 309s You are welcome to redistribute it under certain conditions. 309s Type 'license()' or 'licence()' for distribution details. 309s 309s R is a collaborative project with many contributors. 309s Type 'contributors()' for more information and 309s 'citation()' on how to cite R or R packages in publications. 309s 309s Type 'demo()' for some demos, 'help()' for on-line help, or 309s 'help.start()' for an HTML browser interface to help. 309s Type 'q()' to quit R. 309s 309s > source(file.path("_helper", "init.R")) 310s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("item") 310s > 310s > options(unitizer.color = FALSE) 310s > 310s > # These tests are intended to cover all the functions/classes/methods in: 310s > # - item.R 310s > # - item.sub.R 310s > # - test_eval.R # indirectly 310s > # - heal.R 310s > # - unitizer.R 310s > # Basically everything that can be tested non-interactively 310s > # Helper funs 310s > 310s > callDep <- function(x) paste0(deparse(x@call, width.cutoff = 500), 310s + collapse = "") 310s > lsObjs <- function(x) paste0(x@ls$names, x@ls$status, collapse = ", ") 310s > lsStat <- function(x) x@ls$status 310s > lsInv <- function(x) isTRUE(attr(x@ls, "invalid")) 310s > # Get started 310s > 310s > new.exps <- expression( 310s + 1 + 1, 310s + a <- 54, # keep 310s + b <- 38, # keep 310s + a + b, 310s + e <- 5 * a, # keep 310s + a ^ 2, # Keep 310s + f <- e * a, 310s + matrix(rep(f, 20)) # keep 310s + ) 310s > ref.exps <- expression( 310s + 1 + 1, 310s + a <- 54, 310s + b <- 38, 310s + a + b, 310s + e <- 5 * a, 310s + e ^ 3 310s + ) 310s > 310s > Sys.sleep(0.2) 310s > my.unitizer <- new("unitizer", id = 1, zero.env = new.env()) 310s > # add ref.exps as new items 310s > coi(my.unitizer <- my.unitizer + ref.exps) 310s > my.unitizer2 <- new("unitizer", id = 2, zero.env = new.env()) 310s > # now convert them to reference items 310s > coi(my.unitizer2 <- my.unitizer2 + my.unitizer@items.new) 310s > # now test against new.exps 310s > coi(my.unitizer2 <- my.unitizer2 + new.exps) 310s > 310s > # - "item funs" ---------------------------------------------------------------- 310s > 310s > item <- my.unitizer@items.new[[1L]] 310s > unitizer:::itemType(item) 310s [1] "new" 310s > try(unitizer:::itemType(item) <- "asdfasd") 310s Error in unitizer:::`itemType<-`(`*tmp*`, value = "asdfasd") : 310s Argument `value` must be in c("new", "reference") 310s > unitizer:::itemType(item) <- "reference" 310s > unitizer:::itemType(item) 310s [1] "reference" 310s > try(unitizer:::itemsType(my.unitizer@items.new) <- as.character(1:1000)) 310s Error in unitizer:::`itemsType<-`(`*tmp*`, value = c("1", "2", "3", "4", : 310s Argument `value` must be length 1L or have same length as argument `x` 310s > try(item$booboo) 310s Error in .local(x, i, j, ...) : 310s Argument `name` must be in c("call", "state", "value", "conditions", "output", "message", "aborted") 310s > 310s > # - "unitizer creation worked as expected" ------------------------------------- 310s > 310s > validObject(my.unitizer, complete = TRUE) 310s [1] TRUE 310s > all.equal(capture.output(show(my.unitizer@items.new[[1L]])), rds(100)) 310s [1] TRUE 310s > identical(length(my.unitizer2), length(new.exps)) 310s [1] TRUE 310s > identical(length(my.unitizer2@items.new), length(new.exps)) 310s [1] TRUE 310s > identical(length(my.unitizer2@items.ref), length(ref.exps)) 310s [1] TRUE 310s > all.equal( 310s + as.expression( 310s + lapply(unitizer:::as.list(my.unitizer2@items.new), slot, "call") 310s + ), 310s + new.exps 310s + ) 310s [1] TRUE 310s > all.equal( 310s + as.expression( 310s + lapply(unitizer:::as.list(my.unitizer2@items.ref), slot, "call") 310s + ), 310s + ref.exps 310s + ) 310s [1] TRUE 310s > vals <- lapply( 310s + unitizer:::as.list(my.unitizer2@items.new), function(x) x@data@value[[1L]] 310s + ) 310s > vals.ign <- unitizer:::ignored(my.unitizer2@items.new) 310s > all.equal(vals[!vals.ign], lapply(new.exps, eval)[!vals.ign]) 310s [1] TRUE 310s > all(vapply(vals[vals.ign], is, logical(1L), "unitizerDummy")) 310s [1] TRUE 310s > 310s > vals <- lapply( 310s + unitizer:::as.list(my.unitizer2@items.ref), function(x) x@data@value[[1L]] 310s + ) 310s > vals.ign <- unitizer:::ignored(my.unitizer2@items.ref) 310s > all.equal(vals[!vals.ign], lapply(ref.exps, eval)[!vals.ign]) 310s [1] TRUE 310s > all(vapply(vals[vals.ign], is, logical(1L), "unitizerDummy")) 310s [1] TRUE 310s > my.unitizer2@items.new.map 310s [1] 1 2 3 4 5 NA NA NA 310s > my.unitizer2@items.ref.map 310s [1] 1 2 3 4 5 NA 310s > my.unitizer2@tests.fail 310s [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 310s > my.unitizer2@tests.status 310s [1] Pass Pass Pass Pass Pass New New New 310s Levels: Pass Fail New Deleted Error 310s > my.unitizer2@section.map 310s [1] 1 1 1 1 1 1 1 1 310s > unitizer:::ignored(my.unitizer2@items.new) 310s [1] FALSE TRUE TRUE FALSE TRUE FALSE TRUE FALSE 310s > unitizer:::ignored(my.unitizer2@items.ref) 310s [1] FALSE TRUE TRUE FALSE TRUE FALSE 310s > 310s > # - "Size Measurement works" --------------------------------------------------- 310s > 310s > # Used to produce warnings because the same base.env was used for every 310s > # unitizer because it was created on package load as part of the S4 class 310s > # definition instead of in "initialize", so any time we instantiated more 310s > # than one object they all shared the same environment, causing issues with 310s > # saveRDS 310s > x <- unitizer:::sizeUntz(my.unitizer2) 310s > is.matrix(x) && is.numeric(x) 310s [1] TRUE 310s > colnames(x) 310s [1] "size" "rds" 310s > 310s > # - "Environment healing works" ------------------------------------------------ 310s > 310s > items.mixed <- my.unitizer2@items.new[4:5] + my.unitizer2@items.ref[[1]] + 310s + my.unitizer2@items.new[c(2, 6, 8)] 310s > items.sorted <- unitizer:::healEnvs(items.mixed, my.unitizer2) 310s > env.anc <- lapply(unitizer:::as.list(items.sorted), function(x) rev(unitizer:::env_ancestry(x@env, 310s + my.unitizer2@base.env))) 310s > max.len <- max(vapply(env.anc, length, 1L)) 310s > env.anc.2 <- lapply(env.anc, function(x) { 310s + length(x) <- max.len 310s + x 310s + }) 310s > env.anc.df <- as.data.frame(env.anc.2, stringsAsFactors = FALSE) 310s > # Here only the first item is reference, all others 310s > length(unique(unlist(env.anc.df[2, ]))) 310s [1] 1 310s > all( 310s + apply( 310s + env.anc.df[-(1:2), -1], 1, 310s + function(x) length(unique(Filter(Negate(is.na), x))) 310s + ) == 1L 310s + ) 310s [1] TRUE 310s > # First item is reference, all others are new 310s > unitizer:::itemsType(items.sorted) 310s [1] "reference" "new" "new" "new" "new" "new" 310s [7] "new" "new" 310s > # Expected order of ids 310s > vapply(unitizer:::as.list(items.sorted), function(x) x@id, integer(1L)) 310s [1] 1 2 3 4 5 6 7 8 310s > lapply(unitizer:::as.list(items.sorted), function(x) x@ls$names) 310s [[1]] 310s character(0) 310s 310s [[2]] 310s character(0) 310s 310s [[3]] 310s character(0) 310s 310s [[4]] 310s [1] "a" "b" 310s 310s [[5]] 310s character(0) 310s 310s [[6]] 310s [1] "a" "b" "e" 310s 310s [[7]] 310s character(0) 310s 310s [[8]] 310s [1] "a" "b" "e" "f" 310s 310s > unique(unlist(lapply(unitizer:::as.list(items.sorted), function(x) x@ls$status))) 310s [1] "" 310s > # Tests with conditions 310s > 310s > # - "Items with conditions" ---------------------------------------------------- 310s > 310s > my_fun <- function() { 310s + warning("hello") 310s + 25 310s + } 310s > ref.exps1a <- expression(stop("boom"), my_fun()) 310s > my.unitizer1a <- new("unitizer", id = 100, zero.env = new.env()) 310s > # add ref.exps as new items 310s > coi(my.unitizer1a <- my.unitizer1a + ref.exps1a) 310s > 310s > all.equal(capture.output(show(my.unitizer1a@items.new[[1L]])), rds(200)) 310s [1] TRUE 310s > all.equal(capture.output(show(my.unitizer1a@items.new[[2L]])), rds(300)) 310s [1] TRUE 310s > all.equal( 310s + capture.output(show(my.unitizer1a@items.new[[1L]]@data@conditions)), rds(400) 310s + ) 310s [1] TRUE 310s > # - "Environment healing works 2" ---------------------------------------------- 310s > 310s > # Stars highlight items we are selecting, but keep in mind that unitizer only 310s > # cares about non ignored tests, and that the selection status of ignored test 310s > # has nothing to do with what we end up with wrt to ignored tests 310s > 310s > new.exps2 <- expression( 310s + 1 + 1, # 1 * 310s + a <- 54, # 2 310s + b <- runif(5), # 3 310s + howdy <- "yowser", # 4 * 310s + a + b, # 5 * 310s + e <- 5 * a, # 6 310s + a ^ 2, # 7 310s + f <- e * a, # 8 310s + matrix(rep(f, 20)) # 9 * 310s + ) 310s > ref.exps2 <- expression( 310s + 1 + 1, # 1 310s + a <- 54, # 2 310s + b <- runif(5), # 3 * 310s + 25 + 3, # 4 310s + q <- b ^ 2 / a, # 5 * 310s + a + b, # 6 310s + z <- w <- list(1, 2, 3), # 7 310s + Reduce(`+`, z), # 8 * Doesn't exist, should connect back to `a + b` 310s + e <- 5 * a, # 9 310s + e ^ 3, # 10 * 310s + e * a # 11 * 310s + ) 310s > 310s > # Note that healEnvs modifies objects that contain environments, and as such 310s > # you won't get the same result if you run this function twice, so don't be 310s > # surprised if tests fail in those circumstances 310s > my.unitizer3 <- new("unitizer", id = 1, zero.env = new.env()) 310s > # add ref.exps as new items 310s > coi(my.unitizer3 <- my.unitizer3 + ref.exps2) 310s > my.unitizer4 <- new("unitizer", id = 2, zero.env = new.env()) 310s > # now convert them to reference items 310s > coi(my.unitizer4 <- my.unitizer4 + my.unitizer3@items.new) 310s > # now test against new.exps 310s > coi(my.unitizer4 <- my.unitizer4 + new.exps2) 310s > coi( 310s + items.mixed2 <- my.unitizer4@items.ref[c(8, 10, 3, 5, 11)] + 310s + my.unitizer4@items.new[c(1, 4, 5, 9)] 310s + ) 310s > items.sorted2 <- unitizer:::healEnvs(items.mixed2, my.unitizer4) 310s > 310s > env.anc <- lapply(unitizer:::as.list(items.sorted2), function(x) rev(unitizer:::env_ancestry(x@env, 310s + my.unitizer4@base.env))) 310s > max.len <- max(vapply(env.anc, length, 1L)) 310s > env.anc.2 <- lapply(env.anc, function(x) { 310s + length(x) <- max.len 310s + x 310s + }) 310s > # oldest ancestor the same 310s > env.anc.df <- as.data.frame(env.anc.2, stringsAsFactors = FALSE) 310s > length(unique(unname(unlist(env.anc.df[1, ])))) # 1 310s [1] 1 310s > # "base.env should be unitizer env") 310s > identical( 310s + env.anc.df[1, 1], unitizer:::env_name(my.unitizer4@base.env) 310s + ) 310s [1] TRUE 310s > # "all tests should also have another sub base.env") 310s > length(unique(unlist(env.anc.df[2, ]))) == 1L 310s [1] TRUE 310s > # "and it should be the items.ref here") 310s > identical( 310s + env.anc.df[2, 1], unitizer:::env_name(my.unitizer4@items.ref@base.env) 310s + ) 310s [1] TRUE 310s > items <- items.sorted2 310s > items.lst <- unitizer:::as.list(items) 310s > # "new items should all have normal status", 310s > heal.info <- cbind( 310s + type = unitizer:::itemsType(items), ignored = unitizer:::ignored(items), 310s + id = vapply(items.lst, slot, 1L, "id"), 310s + call = vapply(items.lst, callDep, ""), 310s + ls = vapply(items.lst, lsObjs, ""), 310s + ls.invalid = vapply(items.lst, lsInv, TRUE) 310s + ) 310s > # "" 310s > unique(unlist(lapply(items.lst[unitizer:::itemsType(items) == "new"], lsStat))) 310s [1] "" 310s > # "Reference tests should have no ls data", 310s > unique(vapply(items.lst[unitizer:::ignored(items)], lsObjs, "")) 310s [1] "" 310s > all(vapply(items.lst[unitizer:::ignored(items)], lsInv, logical(1L))) 310s [1] TRUE 310s > 310s > # - "ls works" ----------------------------------------------------------------- 310s > 310s > my.unitizer5 <- new("unitizer", id = 2, zero.env = new.env()) 310s > # now add back our composite elements as references 310s > coi(my.unitizer5 <- my.unitizer5 + items.sorted2) 310s > # and new items 310s > coi(my.unitizer5 <- my.unitizer5 + new.exps2) 310s > 310s > # This is an ignored test, so there will be some problems 310s > env.val <- new.env(parent = my.unitizer5@items.new[[3]]@env) 310s > env.eval <- new.env(parent = env.val) 310s > assign(".NEW", my.unitizer5@items.new[[3]], env.val) 310s > assign(".new", my.unitizer5@items.new[[3]]@data@value[[1L]], 310s + env.val) 310s > assign(".REF", my.unitizer5@items.ref[[my.unitizer5@items.new.map[[3]]]], 310s + env.val) 310s > assign(".ref", my.unitizer5@items.ref[[my.unitizer5@items.new.map[[3]]]]@data@value[[1L]], 310s + env.val) 310s > ls.res <- evalq(unitizer:::unitizer_ls(), env.eval) # warn 310s Warning in unitizer:::unitizer_ls() : 310s 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. 310s > # Reference tests won't show up since they were nuked by `healEnvs` 310s > all.equal(ls.res, rds(500)) 310s [1] TRUE 310s > # These are normal tests so should work 310s > env.val <- new.env(parent = my.unitizer5@items.new[[9]]@env) 310s > env.eval <- new.env(parent = env.val) 310s > assign(".NEW", my.unitizer5@items.new[[9]], env.val) 310s > assign(".new", my.unitizer5@items.new[[9]]@data@value[[1L]], 310s + env.val) 310s > assign(".REF", my.unitizer5@items.ref[[my.unitizer5@items.new.map[[9]]]], 310s + env.val) 310s > assign(".ref", my.unitizer5@items.ref[[my.unitizer5@items.new.map[[9]]]]@data@value[[1L]], 310s + env.val) 310s > all.equal(evalq(unitizer:::unitizer_ls(), env.eval), 310s + rds(600)) 310s [1] TRUE 310s > all.equal(capture.output(print(evalq(unitizer:::unitizer_ls(), 310s + env.eval))), rds(700)) 310s [1] TRUE 310s > 310s > # - "Environment Healing Works #3" --------------------------------------------- 310s > # 310s > # Main difference to previous versions is that we're testing that moving the 310s > # order of tests around between ref and new still works 310s > # 310s > # Test that reference tests moving around doesn't cause major issues 310s > 310s > new.exps6 <- expression( 310s + 1 + 1, # 1 * 310s + a <- 54, # 2 310s + b <- runif(5), # 3 310s + howdy <- "yowser", # 4 310s + a + b, # 5 310s + e <- 5 * a, # 6 310s + a ^ 2, # 7 * 310s + f <- 25, # 8 * 310s + matrix(rep(f, 20)) # 9 310s + ) 310s > ref.exps6 <- expression( 310s + 1 + 1, # 1 310s + a <- 54, # 2 310s + f <- 25, # 3 310s + matrix(rep(f, 20)), # 4 * 310s + b <- runif(5), # 5 310s + boomboom <- "boo", # 6 310s + a + b, # 7 * 310s + a + b + f, # 8 310s + e <- 5 * a, # 9 310s + a ^ 2 # 10 310s + ) 310s > my.unitizer10 <- new("unitizer", id = 1, zero.env = new.env()) 310s > # add ref.exps as new items 310s > coi(my.unitizer10 <- my.unitizer10 + ref.exps6) 310s > my.unitizer11 <- new("unitizer", id = 2, zero.env = new.env()) 310s > # now convert them to reference items 310s > coi(my.unitizer11 <- my.unitizer11 + my.unitizer10@items.new) 310s > # now test against new.exps 310s > coi(my.unitizer11 <- my.unitizer11 + new.exps6) 311s > items.mixed3 <- my.unitizer11@items.ref[c(4, 7)] + 311s + my.unitizer11@items.new[c(1, 7, 8)] 311s > items.sorted3 <- unitizer:::healEnvs(items.mixed3, my.unitizer11) 311s > 311s > # Both reference tests get appended to item #1, which means among other things 311s > # that for the second refernce test, the `a` object is absent (but `b` is 311s > # present because it gets sucked in by virtue of being an ignored test just 311s > # ahead of it) 311s > items <- items.sorted3 311s > items.lst <- unitizer:::as.list(items) 311s > cbind( 311s + type = unitizer:::itemsType(items), ignored = unitizer:::ignored(items), 311s + id = vapply(items.lst, slot, 1L, "id"), 311s + call = vapply(items.lst, callDep, ""), 311s + ls = vapply(items.lst, lsObjs, ""), 311s + ls.invalid = vapply(items.lst, lsInv, TRUE) 311s + ) 311s type ignored id call ls 311s [1,] "new" "FALSE" "1" "1 + 1" "" 311s [2,] "reference" "TRUE" "2" "a <- 54" "" 311s [3,] "reference" "TRUE" "3" "f <- 25" "" 311s [4,] "reference" "FALSE" "4" "matrix(rep(f, 20))" "a, f" 311s [5,] "reference" "TRUE" "5" "b <- runif(5)" "" 311s [6,] "reference" "TRUE" "6" "boomboom <- \"boo\"" "" 311s [7,] "reference" "FALSE" "7" "a + b" "a*, b, boomboom, f*" 311s [8,] "new" "TRUE" "6" "e <- 5 * a" "" 311s [9,] "new" "FALSE" "7" "a^2" "a, b, e, howdy" 311s ls.invalid 311s [1,] "FALSE" 311s [2,] "TRUE" 311s [3,] "TRUE" 311s [4,] "FALSE" 311s [5,] "TRUE" 311s [6,] "TRUE" 311s [7,] "FALSE" 311s [8,] "TRUE" 311s [9,] "FALSE" 311s > # - "No circular environment references" --------------------------------------- 311s > 311s > # This is to test for issue #2, which resulted in a self referential environment 311s > # in the stored items. The following code used to fail: 311s > new.exps3 <- expression(1 + 1, a <- 54, b <- 5, 2 + 2, runif(1)) 311s > ref.exps3 <- expression(1 + 1, a <- 54, 2 + 2, runif(1)) 311s > my.unitizer6 <- new("unitizer", id = 1, zero.env = new.env()) 311s > # add ref.exps as new items 311s > coi(my.unitizer6 <- my.unitizer6 + ref.exps3) 311s > my.unitizer7 <- new("unitizer", id = 2, zero.env = new.env()) 311s > # now convert them to reference items 311s > coi(my.unitizer7 <- my.unitizer7 + my.unitizer6@items.new) 311s > # now test against new.exps 311s > coi(my.unitizer7 <- my.unitizer7 + new.exps3) 311s > # Note this doesn't test that there are no circular references, only that what 311s > # used to fail no longer fails. 311s > 311s > cbind(my.unitizer7@tests.new, my.unitizer7@tests.result) 311s value conditions output message aborted 311s [1,] FALSE TRUE TRUE TRUE TRUE TRUE 311s [2,] FALSE TRUE TRUE TRUE TRUE TRUE 311s [3,] TRUE FALSE FALSE FALSE FALSE FALSE 311s [4,] FALSE TRUE TRUE TRUE TRUE TRUE 311s [5,] FALSE FALSE TRUE TRUE TRUE TRUE 311s > 311s > # - "testFuns" ----------------------------------------------------------------- 311s > 311s > # Error objects 311s > 311s > # these two should just work fine 311s > is(new("testFuns", output = all.equal, value = function(x, y) TRUE), "testFuns") 311s [1] TRUE 311s > is(new("testFuns"), "testFuns") 311s [1] TRUE 311s > try(new("testFuns", output = all.equal, value = function(x, y, z) TRUE)) 311s Error in validObject(.Object) : 311s 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). 311s > # this should work too now, since technically has two args 311s > is( 311s + new("testFuns", output = all.equal, value = function(x, y = 1, z = 1) TRUE), 311s + "testFuns" 311s + ) 311s [1] TRUE 311s > try(new("testFuns", cabbage = all.equal)) 311s Error in initialize(value, ...) : 311s Can't initialize invalid slots "cabbage" 311s > 311s > # - "Misc" --------------------------------------------------------------------- 311s > 311s > new.exps4 <- expression(a <- function() b(), b <- function() TRUE, a()) 311s > my.unitizer8 <- new("unitizer", id = 3, zero.env = new.env()) 311s > new.exps5 <- expression(a <- function() b(), NULL, b <- function() TRUE, a()) 311s > my.unitizer9 <- new("unitizer", id = 4, zero.env = new.env()) 311s > coi(x <- my.unitizer9 + new.exps5) 311s > 311s > local({ 311s + fun <- function() quote(stop("This error should not be thrown")) 311s + is( 311s + new( 311s + "unitizerItem", value = fun(), call = quote(fun()), 311s + env = sys.frame(sys.parent() + 1L) 311s + ), 311s + "unitizerItem" 311s + ) 311s + }) 311s [1] TRUE 311s > # Nested environment hand waving can break down under certain circumstances 311s > # this first one should work because there are no tests until after all 311s > # the pieces necessary to run `a()` are defined: 311s > coi(res <- my.unitizer8 + new.exps4) 311s > is(res, "unitizer") 311s [1] TRUE 311s > # this should break because the NULL forces `b` to be stored in a different 311s > # environment to `a`; note: funky error message matching because in 311s > # at least some versions of rdevel reported fun name seems to change 311s > # (possibly related to level 3 bytecode) 311s > # could not find fun 311s > x@items.new[[4]]@data@message[[1]] 311s [1] "Error in b() : could not find function \"b\"\n" 311s > 311s > # - "Comparison Function Errors" ----------------------------------------------- 311s > 311s > exps <- expression(fun <- function(x, y) warning("not gonna work"), 311s + unitizer_sect(compare = fun, expr = { 311s + 1 + 1 311s + })) 311s > my.unitizer <- new("unitizer", id = 25, zero.env = new.env()) 311s > # add ref.exps as new items 311s > coi(my.unitizer <- my.unitizer + exps) 311s > coi(my.unitizer2 <- new("unitizer", id = 26, zero.env = new.env()) + 311s + my.unitizer@items.new) 311s > # warn: not gonna work 311s > coi(my.unitizer2 <- my.unitizer2 + exps) 311s Warning in close_and_clear(e1@global$cons) : 311s 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: 311s Warning in fun(2, 2) : not gonna work 311s 311s > as.character(my.unitizer2@tests.status) 311s [1] "Pass" "Error" 311s > my.unitizer2@tests.errorDetails[[2]]@value@value 311s [1] "comparison function `fun` signaled a condition of class `c(\"simpleWarning\", \"warning\", \"condition\")`, with message \"not gonna work\" and call `fun(2, 2)`." 311s > 311s > # - "Language Objects Tested Properly" ----------------------------------------- 311s > 311s > exps <- expression(quote(x), quote(x + y), quote(identity(x)), 311s + expression(1 + y), quote(expression(1 + y))) 311s > my.unitizer <- new("unitizer", id = 27, zero.env = new.env()) 311s > # add ref.exps as new items 311s > coi(my.unitizer <- my.unitizer + exps) 311s > coi(my.unitizer2 <- new("unitizer", id = 28, zero.env = new.env()) + 311s + my.unitizer@items.new) 311s > coi(my.unitizer2 <- my.unitizer2 + exps) 311s > # This used to error b/c expressions returning unevaluated calls/symbols were 311s > # not compared as such (they were evaluated) 311s > as.character(my.unitizer2@tests.status) 311s [1] "Pass" "Pass" "Pass" "Pass" "Pass" 311s > 311s > # - "Test Fun Captured Properly" ----------------------------------------------- 311s > 311s > new("unitizerItemTestFun", fun = identical)@fun.name 311s [1] "identical" 311s > 311s > 311s PASS 311s Begin testing t-list.R 311s 311s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 311s Copyright (C) 2024 The R Foundation for Statistical Computing 311s Platform: arm-unknown-linux-gnueabihf (32-bit) 311s 311s R is free software and comes with ABSOLUTELY NO WARRANTY. 311s You are welcome to redistribute it under certain conditions. 311s Type 'license()' or 'licence()' for distribution details. 311s 311s R is a collaborative project with many contributors. 311s Type 'contributors()' for more information and 311s 'citation()' on how to cite R or R packages in publications. 311s 311s Type 'demo()' for some demos, 'help()' for on-line help, or 311s 'help.start()' for an HTML browser interface to help. 311s Type 'q()' to quit R. 311s 311s > source(file.path("_helper", "init.R")) 311s > 311s > lst <- new("unitizerList") 311s > 311s > # - "unitizerList basic tests" ------------------------------------------------- 311s > 311s > length(lst) == 0L 311s [1] TRUE 311s > is(lst <- unitizer:::append(lst, 5), "unitizerList") 311s [1] TRUE 311s > length(lst) == 1L 311s [1] TRUE 311s > is( 311s + lst <- unitizer:::append( 311s + lst, list("booyah", list(1:3), matrix(1:9, nrow = 3)) 311s + ), "unitizerList" 311s + ) 311s [1] TRUE 311s > length(lst) == 4L 311s [1] TRUE 311s > is(lst[3L], "unitizerList") 311s [1] TRUE 311s > is(lst[[3L]], "list") 311s [1] TRUE 311s > lst <- unitizer:::append(lst, list(data.frame(a = letters[1:3])), 2L) 311s > is(lst[[3L]], "data.frame") 311s [1] TRUE 311s > length(lst[1:4]) == 4L 311s [1] TRUE 311s > lst[[4L]] <- "boo" 311s > is(lst[[4L]], "character") 311s [1] TRUE 311s > lst[4L:5L] <- letters[1:2] 311s > 311s > c(lst[[4L]], lst[[5L]]) 311s [1] "a" "b" 311s > lst[[4L]] 311s [1] "a" 311s > 311s > is(unitizer:::as.list(lst), "list") 311s [1] TRUE 311s > length(unitizer:::as.list(lst)) == 5L 311s [1] TRUE 311s > is(unitizer:::as.expression(lst), "expression") 311s [1] TRUE 311s > 311s > try(unitizer:::getItem(lst)) # error 311s Error in .local(x, ...) : 311s Internal pointer for `x` not initialized; initialize with `nextItem` 311s > lst <- unitizer:::nextItem(lst) 311s > unitizer:::getItem(lst) 311s [1] 5 311s > lst <- unitizer:::nextItem(lst) 311s > unitizer:::getItem(lst) 311s [1] "booyah" 311s > lst <- unitizer:::prevItem(lst) 311s > unitizer:::getItem(lst) 311s [1] 5 311s > lst <<- lst # leftover from testthat testing? 311s > 311s > # - "unitizerList pointer seeking" --------------------------------------------- 311s > 311s > for (i in 1:10) lst <- unitizer:::nextItem(lst) 311s > try(unitizer:::getItem(lst)) 311s Error in .local(x, ...) : Internal pointer for `x` is corrupted 311s > unitizer:::done(lst) 311s [1] TRUE 311s > is(lst <- unitizer:::reset(lst, "back"), "unitizerList") 311s [1] TRUE 311s > try(unitizer:::reset(lst, letters)) 311s Error in .local(x, ...) : 311s Argument `position` must be `NULL`, or "front" or "back" 311s > try(unitizer:::reset(lst, NA_character_)) 311s Error in .local(x, ...) : 311s Argument `position` must be `NULL`, or "front" or "back" 311s > try(unitizer:::getItem(lst)) 311s Error in .local(x, ...) : 311s Internal pointer for `x` not initialized; initialize with `prevItem` 311s > lst <- unitizer:::prevItem(lst) 311s > unitizer:::getItem(lst) == "b" 311s [1] TRUE 311s > while (!unitizer:::done(lst)) { 311s + item <- unitizer:::getItem(lst) 311s + lst <- unitizer:::prevItem(lst) 311s + } 311s > item == 5L 311s [1] TRUE 311s > try(unitizer:::getItem(lst)) 311s Error in .local(x, ...) : 311s Internal pointer for `x` outside of range for `x`; test for this condition with `done`, or reset with `reset` 311s > withCallingHandlers( 311s + lst[[4]] <- "new value", 311s + warning = function() stop("A Warning!") 311s + ) 311s > 311s > for (i in 1:5) lst <- unitizer:::nextItem(lst) 311s > lst@.pointer 311s [1] 5 311s > 311s > # - "unitizerList value replacement and pointer adjustments" ------------------- 311s > 311s > lst[[4]] <- NULL 311s > lst@.pointer 311s [1] 4 311s > unitizer:::reset(lst, "back") 311s An object of class "unitizerList" 311s Slot ".items": 311s [[1]] 311s [1] 5 311s 311s [[2]] 311s [1] "booyah" 311s 311s [[3]] 311s a 311s 1 a 311s 2 b 311s 3 c 311s 311s [[4]] 311s [1] "b" 311s 311s 311s Slot ".pointer": 311s [1] 5 311s 311s Slot ".seek.fwd": 311s [1] FALSE 311s 311s > lst.len <- length(lst) 311s > identical(lst@.pointer, lst.len) 311s [1] TRUE 311s > lst[2:3] <- letters[1:2] 311s > identical(lst@.pointer, lst.len) 311s [1] TRUE 311s > lst[2:3] <- list(NULL, NULL) 311s > identical(lst@.pointer, lst.len) 311s [1] TRUE 311s > lst[2:3] <- NULL 311s > identical(lst@.pointer, lst.len - 2L) 311s [1] TRUE 311s > 311s > lst <- unitizer:::reset(lst, "front") 311s > for (i in 1:2) lst <- unitizer:::nextItem(lst) 311s > curr.point <- lst@.pointer 311s > lst[[3]] <- NULL 311s > identical(curr.point, lst@.pointer) 311s [1] TRUE 311s > lst <- unitizer:::append(lst, list(5, 6, "blaskdjf"), 1L) 311s > identical(curr.point + 3L, lst@.pointer) 311s [1] TRUE 311s > lst <- unitizer:::append(lst, list(matrix(1:9, nrow = 3)), 5L) 311s > identical(curr.point + 3L, lst@.pointer) 311s [1] TRUE 311s > 311s > # - "Append Factors Works" ----------------------------------------------------- 311s > 311s > vec <- factor(letters[1:3], levels = letters) 311s > vec2 <- factor(letters[10:15], levels = letters) 311s > 311s > all.equal(structure(c(1L, 2L, 3L, 10L, 11L, 12L, 13L, 14L, 311s + 15L), .Label = c("a", "b", "c", "d", "e", "f", "g", "h", 311s + "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", 311s + "u", "v", "w", "x", "y", "z"), class = "factor"), append(vec, 311s + vec2)) 311s [1] TRUE 311s > all.equal(structure(c(1L, 2L, 10L, 11L, 12L, 13L, 14L, 15L, 311s + 3L), .Label = c("a", "b", "c", "d", "e", "f", "g", "h", "i", 311s + "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", 311s + "v", "w", "x", "y", "z"), class = "factor"), append(vec, 311s + vec2, 2)) 311s [1] TRUE 311s > 311s > all.equal(structure(c(10L, 11L, 12L, 13L, 1L, 2L, 3L, 14L, 311s + 15L), .Label = c("a", "b", "c", "d", "e", "f", "g", "h", 311s + "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", 311s + "u", "v", "w", "x", "y", "z"), class = "factor"), append(vec2, 311s + vec, 4)) 311s [1] TRUE 311s > try(append(vec2, vec, 20)) 311s Error in append(vec2, vec, 20) : 311s Argument after must be integer like between 0 and length(x) 311s > try(append(vec2, vec, -5)) 311s Error in append(vec2, vec, -5) : 311s Argument after must be integer like between 0 and length(x) 311s > 311s > # - "List coersion works even inside apply functions" -------------------------- 311s > 311s > ulist <- new("unitizerList", .items = list("a", 1, 2, "b")) 311s > identical(lapply(ulist, identity), ulist@.items) 311s [1] TRUE 311s > 311s > # - "Errors" ------------------------------------------------------------------- 311s > 311s > setClass("uhtsdfoqiuerhzb", slots = c(a = "integer")) 311s > dummy <- new("uhtsdfoqiuerhzb", a = 1L) 311s > lst2 <- new("unitizerList", .items = list(1, 2, 3)) 311s > try(append(lst2, 5, after = -1)) 311s Error in append(lst2, 5, after = -1) : 311s Argument `after` must be a length 1 numeric greater than zero 311s > try(append(lst2, dummy)) 311s Error in as.list.default(values) : 311s no method for coercing this S4 class to a vector 311s Error in append(lst2, dummy) : 311s Unable to coerce argument `values` to appropriate type; see previous errors for details. 311s > 311s > lst3 <- new("unitizerList", .items = expression(1, 2, 3)) 311s > try(append(lst3, dummy)) 311s Error in as.expression.default(values) : 311s no method for coercing this S4 class to a vector 311s Error in append(lst3, dummy) : 311s Unable to coerce argument `values` to appropriate type; see previous errors for details. 311s > 311s > # - "Set Names" ---------------------------------------------------------------- 311s > 311s > nlst <- new("unitizerList", .items = list(a = "a", b = "b")) 311s > names(nlst) <- toupper(names(nlst)) 311s > as.list(nlst) 311s $A 311s [1] "a" 311s 311s $B 311s [1] "b" 311s 311s > 311s > 311s PASS 311s Begin testing t-misc.R 312s 312s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 312s Copyright (C) 2024 The R Foundation for Statistical Computing 312s Platform: arm-unknown-linux-gnueabihf (32-bit) 312s 312s R is free software and comes with ABSOLUTELY NO WARRANTY. 312s You are welcome to redistribute it under certain conditions. 312s Type 'license()' or 'licence()' for distribution details. 312s 312s R is a collaborative project with many contributors. 312s Type 'contributors()' for more information and 312s 'citation()' on how to cite R or R packages in publications. 312s 312s Type 'demo()' for some demos, 'help()' for on-line help, or 312s 'help.start()' for an HTML browser interface to help. 312s Type 'q()' to quit R. 312s 312s > source(file.path("_helper", "init.R")) 312s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 312s > 312s > # - "Text wrapping" ------------------------------------------------------------ 312s > 312s > var <- "humpty dumpty sat on a truck and had a big dump" 312s > # expect_true(all(nchar(unlist(unitizer:::text_wrap(var, 10))) <= 312s > writeLines(unlist(unitizer:::text_wrap(var, 10))) 312s humpty dum 312s pty sat on 312s a truck a 312s nd had a b 312s ig dump 312s > all(nchar(unlist(unitizer:::text_wrap(var, 10))) <= 10) 312s [1] TRUE 312s > 312s > var2 <- rep(var, 4) 312s > # expect_true(all(nchar(wrp <- unlist(unitizer:::text_wrap(var2, 312s > # c(20, 15)))) <= 20) && length(wrp) == 14) 312s > writeLines(unlist(unitizer:::text_wrap(var2, c(20, 15)))) 312s humpty dumpty sat on 312s a truck and had a b 312s ig dump 312s humpty dumpty s 312s at on a truck a 312s nd had a big du 312s mp 312s humpty dumpty sat on 312s a truck and had a b 312s ig dump 312s humpty dumpty s 312s at on a truck a 312s nd had a big du 312s mp 312s > all(nchar(wrp <- unlist(unitizer:::text_wrap(var2, c(20, 15)))) <= 312s + 20) && length(wrp) == 14 312s [1] TRUE 312s > 312s > # - "Headers" ------------------------------------------------------------------ 312s > 312s > # these basically require visual inspection 312s > 312s > unitizer:::H1("hello world") 312s +------------------------------------------------------------------------------+ 312s | hello world | 312s +------------------------------------------------------------------------------+ 312s 312s > unitizer:::H2("hello world") 312s = hello world ================================================================== 312s 312s > unitizer:::H3("hello world") 312s - hello world ------------------------------------------------------------------ 312s 312s > 312s > # cause an error 312s > try(print(unitizer:::H1(rep_len("hello world", 10)))) 312s Error in header(x, 1L) : 312s Argument `x` must be a one length character vector 312s > 312s > h.w.long <- paste0(rep_len("hello world", 10), collapse = " ") 312s > unitizer:::H1(h.w.long) 312s +------------------------------------------------------------------------------+ 312s | hello world hello world hello world hello world hello world hello world | 312s | hello world hello world hello world hello world | 312s +------------------------------------------------------------------------------+ 312s 312s > unitizer:::H2(h.w.long) 312s = hello world hello world hello world hello world hello world hello world h... = 312s 312s > print(unitizer:::H2("No margin"), margin = "none") # no extra line below 312s = No margin ==================================================================== 312s > 312s > # - "Valid Names convert names to valid" --------------------------------------- 312s > 312s > # expect_equal(unitizer:::valid_names("hello"), "hello") 312s > unitizer:::valid_names("hello") 312s [1] "hello" 312s > # expect_equal(unitizer:::valid_names(".hello"), ".hello") 312s > unitizer:::valid_names(".hello") 312s [1] ".hello" 312s > # expect_equal(unitizer:::valid_names("1hello"), "`1hello`") 312s > unitizer:::valid_names("1hello") 312s [1] "`1hello`" 312s > # expect_equal(unitizer:::valid_names("hello kitty"), "`hello kitty`") 312s > unitizer:::valid_names("hello kitty") 312s [1] "`hello kitty`" 312s > # expect_equal(unitizer:::valid_names("h3llo"), "`h3llo`") 312s > unitizer:::valid_names("h3llo") 312s [1] "`h3llo`" 312s > # expect_equal(unitizer:::valid_names("h_llo"), "h_llo") 312s > unitizer:::valid_names("h_llo") 312s [1] "h_llo" 312s > # expect_equal(unitizer:::valid_names("$hot"), "`$hot`") 312s > unitizer:::valid_names("$hot") 312s [1] "`$hot`" 312s > # expect_equal(unitizer:::valid_names("HELLO"), "HELLO") 312s > unitizer:::valid_names("HELLO") 312s [1] "HELLO" 312s > 312s > # - "strtrunc" ----------------------------------------------------------------- 312s > 312s > # expect_equal(unitizer:::strtrunc("hollywood is for starlets", 312s > # 5), "ho...") 312s > unitizer:::strtrunc("hollywood is for starlets", 5) 312s [1] "ho..." 312s > # expect_error(unitizer:::strtrunc(5, "hollywood is for starlets")) 312s > try(unitizer:::strtrunc(5, "hollywood is for starlets")) 312s Error in unitizer:::strtrunc(5, "hollywood is for starlets") : 312s Argument `x` must be character 312s > 312s > # - "environment name tools" --------------------------------------------------- 312s > 312s > env1 <- new.env(parent = globalenv()) 312s > env2 <- new.env(parent = env1) 312s > env3 <- new.env(parent = env2) 312s > env4 <- new.env(parent = env3) 312s > # expect_true(is.character(ename <- unitizer:::env_name(env3)) && 312s > # identical(length(ename), 1L)) 312s > is.character(ename <- unitizer:::env_name(env3)) && identical(length(ename), 1L) 312s [1] TRUE 312s > # expect_true(is.character(envanc <- unitizer:::env_ancestry(env4)) && 312s > # identical(length(envanc), 5L) && identical(envanc[[5L]], 312s > # "R_GlobalEnv")) 312s > is.character(envanc <- unitizer:::env_ancestry(env4)) && 312s + identical(length(envanc), 5L) && identical(envanc[[5L]], "R_GlobalEnv") 312s [1] TRUE 312s > 312s > # - "deparse peek" ------------------------------------------------------------- 312s > 312s > expr1 <- quote(1 + 1 + 3) 312s > expr2 <- quote(for (i in 1:100) { 312s + loop.val <- sample(1:1000, 200, replace = TRUE) 312s + loop.val <- loop.val * 200/3000 * mean(runif(20000)) 312s + }) 312s > # expect_equal("1 + 1 + 3", unitizer:::deparse_peek(expr1, 20L)) 312s > unitizer:::deparse_peek(expr1, 20L) 312s [1] "1 + 1 + 3" 312s > 312s > # expect_error(unitizer:::deparse_peek(expr1, 3L)) 312s > try(unitizer:::deparse_peek(expr1, 3L)) 312s Error in unitizer:::deparse_peek(expr1, 3L) : 312s Argument `len` must be an integer greater than four 312s > # expect_equal("1 ...", unitizer:::deparse_peek(expr1, 5L)) 312s > unitizer:::deparse_peek(expr1, 5L) 312s [1] "1 ..." 312s > 312s > # expect_equal("for (i in 1:100) { loop.val <- sam...", unitizer:::deparse_peek(expr2, 312s > # 40L)) 312s > unitizer:::deparse_peek(expr2, 40L) 312s [1] "for (i in 1:100) { loop.val <- sam..." 312s > 312s > # - "deparse fun" -------------------------------------------------------------- 312s > 312s > # expect_identical(unitizer:::deparse_fun(quote(fun)), "fun") 312s > unitizer:::deparse_fun(quote(fun)) 312s [1] "fun" 312s > # expect_identical(unitizer:::deparse_fun(quote(function(x) NULL)), 312s > # NA_character_) 312s > unitizer:::deparse_fun(quote(function(x) NULL)) 312s [1] NA 312s > # expect_identical(unitizer:::deparse_fun("hello"), character(0L)) 312s > unitizer:::deparse_fun("hello") 312s character(0) 312s > 312s > # - "deparse_prompt" ----------------------------------------------------------- 312s > 312s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 312s > item <- unitizer:::exec(quote(if (TRUE) { 312s + 25 312s + } else { 312s + 42 312s + }), new.env(), glob) 312s > unitizer:::deparse_prompt(item) 312s [1] "> if (TRUE) {" "+ 25" "+ } else {" "+ 42" 312s [5] "+ }" 312s > 312s > # - "deparse_mixed" ------------------------------------------------------------ 312s > 312s > b <- setNames(1:3, letters[1:3]) 312s > x <- quote(1 + b) 312s > x[[3]] <- b 312s > # expect_equal(unitizer:::deparse_mixed(x), "quote(1 + 1:3)") 312s > unitizer:::deparse_mixed(x) 312s [1] "quote(1 + 1:3)" 312s > y <- quote(1 + 3 + b) 312s > y[[3]] <- b 312s > # expect_equal(unitizer:::deparse_mixed(y), "quote(1 + 3 + 1:3)") 312s > unitizer:::deparse_mixed(y) 312s [1] "quote(1 + 3 + 1:3)" 312s > 312s > # - "(Un)ordered Lists" -------------------------------------------------------- 312s > 312s > vec <- c("hello htere how are you blah blah blah blah blah", 312s + "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.", 312s + letters[1:10]) 312s > 312s > # expect_equal(as.character(unitizer:::OL(vec), width = 100L), 312s > # c(" 1. hello htere how are you blah blah blah blah blah", 312s > # " 2. this is helpful you know", " 3. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut ", 312s > # " labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco ", 312s > # " laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in ", 312s > # " voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat ", 312s > # " non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", 312s > # " 4. a", " 5. b", " 6. c", " 7. d", " 8. e", " 9. f", 312s > # "10. g", "11. h", "12. i", "13. j")) 312s > writeLines(as.character(unitizer:::OL(vec), width = 100L)) 312s 1. hello htere how are you blah blah blah blah blah 312s 2. this is helpful you know 312s 3. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut 312s labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco 312s laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in 312s voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat 312s non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 312s 4. a 312s 5. b 312s 6. c 312s 7. d 312s 8. e 312s 9. f 312s 10. g 312s 11. h 312s 12. i 312s 13. j 312s > 312s > # expect_equal(as.character(unitizer:::UL(vec), width = 20L), c("- hello htere how ", 312s > # " are you blah blah ", " blah blah blah", "- this is helpful ", 312s > # " you know", "- Lorem ipsum dolor ", " sit amet, consec-", 312s > # " tetur adipisicing ", " elit, sed do ", " eiusmod tempor ", 312s > # " incididunt ut ", " labore et dolore ", " magna aliqua. Ut ", 312s > # " enim ad minim ", " veniam, quis ", " nostrud exer-", 312s > # " citation ullamco ", " laboris nisi ut ", " aliquip ex ea ", 312s > # " commodo consequat.", " Duis aute irure ", " dolor in reprehen-", 312s > # " derit in voluptate", " velit esse cillum ", " dolore eu fugiat ", 312s > # " nulla pariatur. ", " Excepteur sint ", " occaecat cupidatat", 312s > # " non proident, sunt", " in culpa qui ", " officia deserunt ", 312s > # " mollit anim id est", " laborum.", "- a", "- b", "- c", 312s > # "- d", "- e", "- f", "- g", "- h", "- i", "- j")) 312s > 312s > writeLines(as.character(unitizer:::UL(vec), width = 20L)) 312s - hello htere how 312s are you blah blah 312s blah blah blah 312s - this is helpful 312s you know 312s - Lorem ipsum dolor 312s sit amet, consec- 312s tetur adipisicing 312s elit, sed do 312s eiusmod tempor 312s incididunt ut 312s labore et dolore 312s magna aliqua. Ut 312s enim ad minim 312s veniam, quis 312s nostrud exer- 312s citation ullamco 312s laboris nisi ut 312s aliquip ex ea 312s commodo consequat. 312s Duis aute irure 312s dolor in reprehen- 312s derit in voluptate 312s velit esse cillum 312s dolore eu fugiat 312s nulla pariatur. 312s Excepteur sint 312s occaecat cupidatat 312s non proident, sunt 312s in culpa qui 312s officia deserunt 312s mollit anim id est 312s laborum. 312s - a 312s - b 312s - c 312s - d 312s - e 312s - f 312s - g 312s - h 312s - i 312s - j 312s > 312s > # test_that("Messing with traceback", { 312s > # warning("Missing traceback tests") 312s > # # Main problem with this is that there may not be a good way to cause a trace 312s > # # back to register while not also stopping execution of this file, so not 312s > # # sure if this can be tested 312s > # } ) 312s > 312s > # - "Compare Conditions" ------------------------------------------------------- 312s > 312s > lst1 <- new("conditionList", .items = list(simpleWarning("warning", 312s + quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 312s + simpleWarning("warning3", quote(yo3 + yo)), simpleError("error1", 312s + quote(make_an_error())))) 312s > lst2 <- new("conditionList", .items = list(simpleWarning("warning", 312s + quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 312s + simpleError("error1", quote(make_an_error())))) 312s > 312s > all.equal(lst1, lst1) 312s [1] TRUE 312s > # expect_equal("Condition count mismatch; expected 4 (got 3)", 312s > # all.equal(lst1, lst2)) 312s > all.equal(lst1, lst2)# 312s [1] "Condition count mismatch; expected 4 (got 3)" 312s > # expect_equal("There is one condition mismatch at index [[3]]", 312s > # all.equal(lst2, lst1[1L:3L])) 312s > all.equal(lst2, lst1[1L:3L]) 312s [1] "There is one condition mismatch at index [[3]]" 312s > # expect_equal("There are 2 condition mismatches, first one at index [[1]]", 312s > # all.equal(lst2, lst1[2L:4L])) 312s > all.equal(lst2, lst1[2L:4L]) 312s [1] "There are 2 condition mismatches, first one at index [[1]]" 312s > attr(lst1[[3L]], "unitizer.printed") <- TRUE 312s > # expect_equal("There is one condition mismatch at index [[3]]", 312s > # all.equal(lst2, lst1[1L:3L])) 312s > all.equal(lst2, lst1[1L:3L]) 312s [1] "There is one condition mismatch at index [[3]]" 312s > # expect_equal(c("Condition type mismatch, `target` is 'Error', but `current` is 'Warning'", 312s > # "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"), 312s > # all.equal(lst2[[3]], lst1[[3]])) 312s > all.equal(lst2[[3]], lst1[[3]]) 312s [1] "Condition type mismatch, `target` is 'Error', but `current` is 'Warning'" 312s [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" 312s > 312s > attr(lst1[[3L]], "unitizer.printed") <- NULL 312s > lst1[[2L]] <- simpleWarning("warning2", quote(yo2 + yoyo)) 312s > # This used to produce "one condition mismatch at index [[2]]", but with the 312s > # relation of condition call comparison, no longer fails. Arguably this one 312s > # should still fail as none of the parameters are named. 312s > all.equal(lst2, lst1[c(1L:2L, 4L)]) 312s [1] TRUE 312s > 312s > # single condition display with a more complex condition 312s > large.cond <- simpleWarning(paste0(collapse = "\n", c("This is a complicated warning:", 312s + as.character(unitizer:::UL(c("one warning", "two warning", 312s + "three warning"))))), quote(make_a_warning())) 312s > lst3 <- new("conditionList", .items = list(large.cond)) 312s > show1 <- capture.output(show(lst3)) 312s > all.equal(show1, rds("misc_cndlistshow1")) 312s [1] TRUE 312s > 312s > attr(lst3[[1L]], "unitizer.printed") <- TRUE 312s > lst3[[2L]] <- simpleWarning("warning2", quote(yo2 + yoyo)) 312s > lst3 312s Condition list with 2 conditions: 312s 1. [print] Warning in make_a_warning() : This is a complicated warning: 312s - one warning 312s - two warning 312s - three warning 312s 2. Warning in yo2 + yoyo : warning2 312s 312s [print] means condition was issued by a print or show method for an auto-printed 312s result. 312s > 312s > # empty condition 312s > lst3[0] 312s Empty condition list 312s > 312s > # Conditions with mismatched calls (due to instability in call generation for C 312s > # errors issue285) 312s > lst4a <- new("conditionList", 312s + .items = list( 312s + simpleWarning("A", quote(fun(a=b, c=d))), 312s + simpleWarning("B", quote(fun(a=b, c=d))), 312s + simpleWarning("C", quote(fun(a=b, c=d))), 312s + simpleWarning("D", quote(fun(a, c=d))), 312s + simpleWarning("E", quote(fun())), 312s + simpleWarning("F"), 312s + simpleWarning("G", quote(fun(a=b, c=d))), 312s + simpleWarning("H", quote(fun(a=b, c=d))), 312s + simpleWarning("I", quote(foo(a=b, c=d))) 312s + )) 312s > lst4b <- new("conditionList", 312s + .items = list( 312s + simpleWarning("A", quote(fun(a=b, c=d))), 312s + simpleWarning("B", quote(fun(a=B, c=d))), 312s + simpleWarning("C", quote(fun(b, c=d))), 312s + simpleWarning("D", quote(fun(a=b, c=d))), 312s + simpleWarning("E", quote(fun(a=b, c=d))), 312s + simpleWarning("F", quote(fun(a=b, c=d))), 312s + simpleWarning("G"), 312s + simpleWarning("H", quote(fun())), 312s + simpleWarning("I", quote(bar(a=b, c=d))) 312s + )) 312s > all.equal(lst4a, lst4b) 312s [1] "There are 2 condition mismatches, first one at index [[2]]" 312s > all.equal(lst4a[c(2, 9)], lst4b[c(2, 9)]) 312s [1] "There are 2 condition mismatches, first one at index [[1]]" 312s > 312s > # - "Compare Functions With Traces" -------------------------------------------- 312s > 312s > fun.a <- base::library 312s > identical(fun.a, base::library) 312s [1] TRUE 312s > trace(library, where = .BaseNamespaceEnv) 312s Tracing function "library" in package "namespace:base" 312s [1] "library" 312s > identical(fun.a, base::library) # FALSE 312s [1] FALSE 312s > unitizer:::identical_fun(fun.a, base::library) 312s [1] TRUE 312s > unitizer:::identical_fun(base::library, fun.a) # FALSE 312s [1] FALSE 312s > untrace(library, where = .BaseNamespaceEnv) 312s Untracing function "library" in package "namespace:base" 312s > # expect_error(unitizer:::identical_fun(1, base::library)) 312s > try(unitizer:::identical_fun(1, base::library)) 312s Error in unitizer:::identical_fun(1, base::library) : 312s Arguments `x` and `y` must both be functions. 312s > # expect_error(unitizer:::identical_fun(base::library, 1)) 312s > try(unitizer:::identical_fun(base::library, 1)) 312s Error in unitizer:::identical_fun(base::library, 1) : 312s Arguments `x` and `y` must both be functions. 312s > unitizer:::identical_fun(base::print, base::print) 312s [1] TRUE 312s > # make sure all.equal dispatches properly out of namespace 312s > 312s > # expect_equal(evalq(all.equal(new("conditionList", .items = list(simpleWarning("warning", 312s > # quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 312s > # simpleWarning("warning3", quote(yo3 + yo)), simpleError("error1", 312s > # quote(make_an_error())))), new("conditionList", .items = list(simpleWarning("warning", 312s > # quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 312s > # simpleError("error1", quote(make_an_error()))))), envir = getNamespace("stats")), 312s > # "Condition count mismatch; expected 4 (got 3)") 312s > evalq(all.equal(new("conditionList", .items = list(simpleWarning("warning", 312s + quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 312s + simpleWarning("warning3", quote(yo3 + yo)), simpleError("error1", 312s + quote(make_an_error())))), new("conditionList", .items = list(simpleWarning("warning", 312s + quote(yo + yo)), simpleWarning("warning2", quote(yo2 + yo)), 312s + simpleError("error1", quote(make_an_error()))))), envir = getNamespace("stats")) 312s [1] "Condition count mismatch; expected 4 (got 3)" 312s > 312s > # - "word_cat" ----------------------------------------------------------------- 312s > 312s > 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" 312s > # expect_equal(capture.output(unitizer:::word_cat(str, width = 20L)), 312s > # c("Humpty dumpty sat on", "a wall and took a ", "big fall. All the ", 312s > # "kings horses and men", "couldn't put humpty ", "dumpty together ", 312s > # "again")) 312s > unitizer:::word_cat(str, width = 20L) 312s Humpty dumpty sat on 312s a wall and took a 312s big fall. All the 312s kings horses and men 312s couldn't put humpty 312s dumpty together 312s again 312s > # expect_error(unitizer:::word_cat(stop("boom"), width = 20L, sep = " "), 312s > # "boom") 312s > try(unitizer:::word_cat(stop("boom"), width = 20L, sep = " ")) 312s Error in word_wrap_split(..., width = width, tolerance = tolerance, sep = sep) : 312s boom 312s > str2 <- rep("goodbye goodbye") 312s > str1 <- rep("hello hello hello", 2) 312s > # expect_equal(c("hello hello ", "hello hello ", "hello hello ", 312s > # "goodbye ", "goodbye"), capture.output()) 312s > unitizer:::word_cat(str1, str2, width = 14L) 312s hello hello 312s hello hello 312s hello hello 312s goodbye 312s goodbye 312s > 312s > # Make sure default works 312s > old.width <- options(width = 20L) 312s > # expect_equal(capture.output(unitizer:::word_cat(str)), c("Humpty dumpty sat on", 312s > # "a wall and took a ", "big fall. All the ", "kings horses and men", 312s > # "couldn't put humpty ", "dumpty together ", "again")) 312s > unitizer:::word_cat(str) 312s Humpty dumpty sat on 312s a wall and took a 312s big fall. All the 312s kings horses and men 312s couldn't put humpty 312s dumpty together 312s again 312s > options(old.width) 312s > 312s > # - "relativize_path" ---------------------------------------------------------- 312s > 312s > base <- file.path(system.file(package = "unitizer"), "expkg") 312s > wd <- file.path(base, "infer") 312s > p1 <- file.path(wd, "R") 312s > p2 <- file.path(base, "unitizerdummypkg1") 312s > # expect_equal(unitizer:::relativize_path(p1, wd), "R") 312s > unitizer:::relativize_path(p1, wd) 312s [1] "R" 312s > # expect_equal(unitizer:::relativize_path(p2, wd), "../unitizerdummypkg1") 312s > unitizer:::relativize_path(p2, wd) 312s [1] "../unitizerdummypkg1" 312s > # expect_equal(unitizer:::relativize_path(c(p1, p2), wd), c("R", 312s > # "../unitizerdummypkg1")) 312s > unitizer:::relativize_path(c(p1, p2), wd) 312s [1] "R" "../unitizerdummypkg1" 312s > # expect_equal(unitizer:::relativize_path(c(p1, p2), wd), c("R", 312s > # "../unitizerdummypkg1")) 312s > unitizer:::relativize_path(c(p1, p2), wd) 312s [1] "R" "../unitizerdummypkg1" 312s > # expect_equal(unitizer:::relativize_path(c(p1, p2, file.path("notarealpath", 312s > # "foo")), wd), c("R", "../unitizerdummypkg1", file.path("notarealpath", 312s > # "foo"))) 312s > unitizer:::relativize_path( 312s + c(p1, p2, file.path("notarealpath", "foo")), wd 312s + ) 312s [1] "R" "../unitizerdummypkg1" "notarealpath/foo" 312s > # expect_equal(unitizer:::relativize_path("/a/b/c/d/e/x.txt"), 312s > # "/a/b/c/d/e/x.txt") 312s > unitizer:::relativize_path("/a/b/c/d/e/x.txt", exists = TRUE) 312s [1] "/a/b/c/d/e/x.txt" 312s > # ## This was too difficult to get to behave consistently across windows and 312s > # ## other platforms (see docs) 312s > # wd <- sub("^[a-zA-Z]:", "", getwd()) 312s > # all.equal( 312s > # unitizer:::relativize_path( 312s > # "/a/b/c/d/e/x.txt", only.if.shorter = FALSE, exists = TRUE 312s > # ), 312s > # do.call( 312s > # file.path, 312s > # c( 312s > # as.list( 312s > # rep( 312s > # "..", 312s > # length(unlist(strsplit(wd, .Platform$file.sep, fixed = TRUE))) - 312s > # 1L 312s > # ) ), 312s > # list("a/b/c/d/e/x.txt") 312s > # ) ) ) 312s > 312s > # - "path_clean" --------------------------------------------------------------- 312s > 312s > try(unitizer:::path_clean(list())) 312s Error in unitizer:::path_clean(list()) : 312s Argument `path` must be character 312s > unitizer:::path_clean(file.path("a", "", "b", "c")) 312s [1] "a/b/c" 312s > 312s > # - "unitizer:::merge_lists" --------------------------------------------------- 312s > 312s > unitizer:::merge_lists(list(a = 1, b = 2), list(c = 3)) 312s $a 312s [1] 1 312s 312s $b 312s [1] 2 312s 312s $c 312s [1] 3 312s 312s > unitizer:::merge_lists(list(a = 1, b = 2, c = 3), list(d = 5, c = 5)) 312s $a 312s [1] 1 312s 312s $b 312s [1] 2 312s 312s $c 312s [1] 5 312s 312s $d 312s [1] 5 312s 312s > unitizer:::merge_lists(list(a = 1, b = 2, c = 3), list(a = NULL, d = 5, c = 5)) 312s $a 312s NULL 312s 312s $b 312s [1] 2 312s 312s $c 312s [1] 5 312s 312s $d 312s [1] 5 312s 312s > 312s > # - "filename to storeid" ------------------------------------------------------ 312s > 312s > filename_to_storeid("tests.R") 312s [1] "tests.unitizer" 312s > filename_to_storeid("tests.rock") 312s Warning in filename_to_storeid("tests.rock") : 312s 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`. 312s NULL 312s > 312s > # - "pretty_path" -------------------------------------------------------------- 312s > # not supposed to exist 312s > res <- unitizer:::pretty_path("xadfasdfxcfasdfasd") # warn 312s > 312s > if(FALSE) { 312s + # "fails CRAN" 312s + # expect_identical(res, "xadfasdfxcfasdfasd") 312s + res 312s + unitizer:::pretty_path(normalizePath(".")) 312s + unitizer:::pretty_path(file.path(system.file(package = "stats"), 312s + "DESCRIPTION")) 312s + } 312s > # - "quit" --------------------------------------------------------------------- 312s > 312s > # for some reason cover tests run via travis can't handle the with_mock, 312s > # so we just use truly-quit=FALSE; UPDATE (mabye du to compiler?) 312s > # with_mock( 312s > # quit=function(...) stop("quit!\n"), { 312s > # unitizer:::read_line_set_vals("y") 312s > # expect_error(capture.output(unitizer:::unitizer_quit()), "quit!") 312s > # unitizer:::read_line_set_vals("n") 312s > # capture.output(uq2 <- unitizer:::unitizer_quit()) 312s > # expect_equal(uq2, NULL) 312s > # unitizer:::read_line_set_vals(c("q", "q", "q", "q", "q", "q")) 312s > # expect_error(capture.output(unitizer:::unitizer_quit()), "quit!") 312s > # } 312s > # ) 312s > unitizer:::read_line_set_vals("y") 312s > capture.output(q.res.1 <- unitizer:::unitizer_quit(truly.quit = FALSE)) 312s | You are attempting to quit R from within `unitizer`. If you do so 312s | you will lose any unsaved `unitizers`. Use `Q` to quit `unitizer` 312s | gracefully. Are you sure you want to exit R? 312s 312s [1] "Quit R? [y/n]: y" 312s > q.res.1 312s [1] TRUE 312s > unitizer:::read_line_set_vals("n") 312s > capture.output(q.res.2 <- unitizer:::unitizer_quit(truly.quit = FALSE)) 312s | You are attempting to quit R from within `unitizer`. If you do so 312s | you will lose any unsaved `unitizers`. Use `Q` to quit `unitizer` 312s | gracefully. Are you sure you want to exit R? 312s 312s [1] "Quit R? [y/n]: n" 312s > q.res.2 # FALSE 312s [1] FALSE 312s > unitizer:::read_line_set_vals(c("q", "q", "q", "q", "q", "q")) 312s > capture.output(q.res.3 <- unitizer:::unitizer_quit(truly.quit = FALSE)) 312s | You are attempting to quit R from within `unitizer`. If you do so 312s | you will lose any unsaved `unitizers`. Use `Q` to quit `unitizer` 312s | gracefully. Are you sure you want to exit R? 312s 312s | Sorry, could not understand you, quitting then. 312s 312s [1] "Quit R? [y/n]: q" "Quit R? [y/n]: q" "Quit R? [y/n]: q" "Quit R? [y/n]: q" 312s [5] "Quit R? [y/n]: q" "Quit R? [y/n]: q" 312s > q.res.3 312s [1] TRUE 312s > unitizer:::read_line_set_vals(NULL) 312s > 312s > # - "mock_item" ---------------------------------------------------------------- 312s > 312s > is(mock_item(), "unitizerItem") 312s [1] TRUE 312s > 312s > # - "diff conditionList" ------------------------------------------------------- 312s > 312s > cond1 <- new("conditionList", .items = list(simpleWarning("hello", 312s + call = quote(fun())), simpleWarning("goodbye", call = quote(fun())))) 312s > is(diffobj::diffObj(cond1, cond1), "Diff") 312s [1] TRUE 312s > 312s > # - "Condition object structure" ----------------------------------------------- 312s > 312s > # We're assuming a particular structure for the condition object in 312s > # `faux_prompt` and `unitizer_prompt` so we put in a test here to make sure it 312s > # doesn't change 312s > cond <- simpleError("hello") 312s > is.list(cond) 312s [1] TRUE 312s > identical(names(cond), c("message", "call")) 312s [1] TRUE 312s > identical(class(cond), c("simpleError", "error", "condition")) 312s [1] TRUE 312s > 312s > # - "options" ------------------------------------------------------------------ 312s > 312s > # not great tests... 312s > 312s > old.opts <- options() 312s > new.opts <- unitizer:::options_zero() 312s > 312s > all(names(new.opts) %in% names(old.opts)) 312s [1] TRUE 312s > length(new.opts) <= length(old.opts) 312s [1] TRUE 312s > options(old.opts) 312s > 312s > 312s PASS 312s Begin testing t-nav.R 312s 312s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 312s Copyright (C) 2024 The R Foundation for Statistical Computing 312s Platform: arm-unknown-linux-gnueabihf (32-bit) 312s 312s R is free software and comes with ABSOLUTELY NO WARRANTY. 312s You are welcome to redistribute it under certain conditions. 312s Type 'license()' or 'licence()' for distribution details. 312s 312s R is a collaborative project with many contributors. 312s Type 'contributors()' for more information and 312s 'citation()' on how to cite R or R packages in publications. 312s 312s Type 'demo()' for some demos, 'help()' for on-line help, or 312s 'help.start()' for an HTML browser interface to help. 312s Type 'q()' to quit R. 312s 313s > source(file.path("_helper", "init.R")) 313s > nav <- file.path("_helper", "unitizers", "nav.R") 313s > 313s > # Simple navigation tests that don't require complex unitizers 313s > 313s > # - "Re-run bookmark" -----=---------------------------------------------------- 313s > 313s > # Relates to #278. Tests both Review and Browse 313s > 313s > unitizer:::read_line_set_vals( 313s + c("R", "Y", "B", "7", "R", "Y", "B", "9", "R", "Y", "Q") 313s + ) 313s > unitize(nav, interactive.mode=TRUE) 313s 314s +------------------------------------------------------------------------------+ 314s | unitizer for: nav.R | 314s +------------------------------------------------------------------------------+ 314s 314s Pass Fail New 314s A - - 2 314s B - - 2 314s .................. 314s - - 4 314s 314s = A ============================================================================ 314s 314s - New -------------------------------------------------------------------------- 314s 314s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 314s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 314s 314s > a <- 42 314s > a + 1 314s [1] 43 314s 314s unitizer> R 314s 314s | Toggling re-run mode ON for this unitizer 314s 314s = Finalize Unitizer ============================================================ 314s 314s | You have 4 unreviewed tests; press `B` to browse tests, `U` to go to first 314s | unreviewed test. 314s 314s | You made no changes to the unitizer so there is no need to update it. While 314s | unnecessary, you can force an update by typing O at the prompt. 314s 314s | Re-run unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 314s 314s unitizer> Y 314s 314s | unitizer unchanged. 314s 314s +------------------------------------------------------------------------------+ 314s | unitizer for: nav.R | 314s +------------------------------------------------------------------------------+ 314s 314s Pass Fail New 314s A - - 2 314s B - - 2 314s .................. 314s - - 4 314s 315s = A ============================================================================ 315s 315s - New -------------------------------------------------------------------------- 315s 315s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 315s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 315s 315s | Jumping to test #3 because that was the test under review when test re-run was 315s | requested. 315s 315s > a <- 42 315s > a + 1 315s [1] 43 315s 315s unitizer> B 315s 315s = ============== 315s *1. z <- 24 . . -:- 315s = A ======================= 315s *2. a <- 42 . . -:- 315s 3. a + 1 . . . New:- 315s 4. a + 2 . . . New:- 315s = B ======================= 315s *5. b <- 25 . . -:- 315s *6. bb <- 26 . . -:- 315s 7. b + 1 . . . New:- 315s *8. bbb <- 27 . . -:- 315s 9. b + 2 . . . New:- 315s 315s | What test do you wish to review (input a test number, [U]nreviewed)? 315s 315s unitizer> 7 315s = B ============================================================================ 315s 315s - New -------------------------------------------------------------------------- 315s 315s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 315s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 315s 315s > b <- 25 315s > bb <- 26 315s > b + 1 315s [1] 26 315s 315s unitizer> R 315s 315s | Toggling re-run mode ON for this unitizer 315s 315s = Finalize Unitizer ============================================================ 315s 315s | You have 4 unreviewed tests; press `B` to browse tests, `U` to go to first 315s | unreviewed test. 315s 315s | You made no changes to the unitizer so there is no need to update it. While 315s | unnecessary, you can force an update by typing O at the prompt. 315s 315s | Re-run unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 315s 315s unitizer> Y 315s 315s | unitizer unchanged. 315s 315s +------------------------------------------------------------------------------+ 315s | unitizer for: nav.R | 315s +------------------------------------------------------------------------------+ 315s 315s Pass Fail New 315s A - - 2 315s B - - 2 315s .................. 315s - - 4 315s 315s = B ============================================================================ 315s 315s - New -------------------------------------------------------------------------- 315s 315s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 315s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 315s 315s | Jumping to test #7 because that was the test under review when test re-run was 315s | requested. 315s 315s > b <- 25 315s > bb <- 26 315s > b + 1 315s [1] 26 315s 315s unitizer> B 315s 315s = ============== 315s *1. z <- 24 . . -:- 315s = A ======================= 315s *2. a <- 42 . . -:- 315s 3. a + 1 . . . New:- 315s 4. a + 2 . . . New:- 315s = B ======================= 315s *5. b <- 25 . . -:- 315s *6. bb <- 26 . . -:- 315s 7. b + 1 . . . New:- 315s *8. bbb <- 27 . . -:- 315s 9. b + 2 . . . New:- 315s 315s | What test do you wish to review (input a test number, [U]nreviewed)? 315s 315s unitizer> 9 315s = B ============================================================================ 315s 315s - New -------------------------------------------------------------------------- 315s 315s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 315s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 315s 315s > bbb <- 27 315s > b + 2 315s [1] 27 315s 315s unitizer> R 315s 315s | Toggling re-run mode ON for this unitizer 315s 315s = Finalize Unitizer ============================================================ 315s 315s | You have 4 unreviewed tests; press `B` to browse tests, `U` to go to first 315s | unreviewed test. 315s 315s | You made no changes to the unitizer so there is no need to update it. While 315s | unnecessary, you can force an update by typing O at the prompt. 315s 315s | Re-run unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 315s 315s unitizer> Y 315s 315s | unitizer unchanged. 315s 315s +------------------------------------------------------------------------------+ 315s | unitizer for: nav.R | 315s +------------------------------------------------------------------------------+ 315s 315s Pass Fail New 315s A - - 2 315s B - - 2 315s .................. 315s - - 4 315s 315s = B ============================================================================ 315s 315s - New -------------------------------------------------------------------------- 315s 315s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 315s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 315s 315s | Jumping to test #9 because that was the test under review when test re-run was 315s | requested. 315s 315s > bbb <- 27 315s > b + 2 315s [1] 27 315s 315s unitizer> Q 315s 315s | No changes recorded. 315s | unitizer unchanged. 315s 316s > 316s > 316s PASS 316s Begin testing t-parse.R 316s 316s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 316s Copyright (C) 2024 The R Foundation for Statistical Computing 316s Platform: arm-unknown-linux-gnueabihf (32-bit) 316s 316s R is free software and comes with ABSOLUTELY NO WARRANTY. 316s You are welcome to redistribute it under certain conditions. 316s Type 'license()' or 'licence()' for distribution details. 316s 316s R is a collaborative project with many contributors. 316s Type 'contributors()' for more information and 316s 'citation()' on how to cite R or R packages in publications. 316s 316s Type 'demo()' for some demos, 'help()' for on-line help, or 316s 'help.start()' for an HTML browser interface to help. 316s Type 'q()' to quit R. 316s 316s > source(file.path("_helper", "init.R")) 316s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 316s > 316s > 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 " 316s > all <- unitizer:::parse_dat_get(text = txt) 316s > prs <- all$expr 316s > dat <- all$dat 316s > dat$parent <- pmax(0L, dat$parent) 316s > # With R4.0 some of the ids started changing 316s > normalize_id <- function(dat) { 316s + idu <- sort(unique(dat[["id"]])) 316s + id <- with(dat, match(id, idu)) 316s + parent <- with(dat, ifelse(parent == 0L, 0L, match(parent, 316s + idu))) 316s + dat[["id"]] <- id 316s + dat[["parent"]] <- parent 316s + dat 316s + } 316s > dat <- normalize_id(dat) 316s > dat.split <- dat.split.2 <- par.ids.3 <- NULL 316s > if.text <- "if # IFFY\n(x > 3 # ifcond\n){ hello\n #whome to attach?\n} else #final\ngoodbye" 316s > 316s > # - "Top Level Parents Identified Correctly" ----------------------------------- 316s > 316s > # "Identified top level parents?" 316s > par.ids <- with(dat, unitizer:::top_level_parse_parents(id, parent)) 316s > par.ids 316s [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 316s [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 316s [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 316s [76] 0 0 83 83 83 83 83 83 0 90 90 90 90 90 90 0 316s > dat.split <- split(dat, par.ids) 316s > 316s > # "Identified sub-level top level parents correctly" 316s > par.ids.2 <- with(dat.split$`64`, unitizer:::top_level_parse_parents(id, 316s + parent, 64L)) 316s > par.ids.2 316s [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 316s [26] 62 62 62 62 62 62 62 62 62 62 62 62 64 316s > dat.split.2 <- split(dat.split$`64`, par.ids.2) 316s > 316s > # "Parent relationships in `unitizer_sect` piece." 316s > 316s > par.ids.3 <- with(dat.split.2$`62`, unitizer:::top_level_parse_parents(id, 316s + parent, 62L)) 316s > par.ids.3 316s [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 316s [26] 59 59 59 62 62 316s > 316s > # - "Comments Are Assigned" ---------------------------------------------------- 316s > 316s > # "Did we assign comments correctly to topmost level?" 316s > lapply(unitizer:::comments_assign(prs, dat.split$`0`), attr, "comment") 316s [[1]] 316s [1] "# This is an early comment" 316s 316s [[2]] 316s [1] "# multi" "# line" "# comment" "# and another!" 316s 316s [[3]] 316s NULL 316s 316s [[4]] 316s NULL 316s 316s [[5]] 316s [1] "# and this comment belongs to whom?" 316s 316s [[6]] 316s [1] "# and I?" 316s 316s > 316s > # "No comments here so no changes should occur" 316s > all.equal(unitizer:::comments_assign(prs[[3]], dat.split.2$`64`), prs[[3]]) 316s [1] TRUE 316s > 316s > # "Comments in `unitizer_sect` body assigned correctly" 316s > lapply(unitizer:::comments_assign(prs[[3]][[3]], split(dat.split.2$`62`, 316s + par.ids.3)$`62`), attr, "comment") 316s [[1]] 316s NULL 316s 316s [[2]] 316s [1] "# test that were not crazy" "# TRUE hopefully" 316s 316s [[3]] 316s [1] "# Still not crazy" 316s 316s > 316s > # - "Ancestry Descend" --------------------------------------------------------- 316s > 316s > x <- unitizer:::parse_dat_get(text = "1 + 1; fun(x, fun(y + z))")$dat 316s > x <- normalize_id(x) 316s > 316s > unitizer:::ancestry_descend(x$id, x$parent, 0) 316s children level 316s [1,] 7 0 316s [2,] 6 0 316s [3,] 26 0 316s [4,] 2 1 316s [5,] 3 1 316s [6,] 5 1 316s [7,] 10 1 316s [8,] 9 1 316s [9,] 13 1 316s [10,] 12 1 316s [11,] 24 1 316s [12,] 25 1 316s [13,] 1 2 316s [14,] 4 2 316s [15,] 8 2 316s [16,] 11 2 316s [17,] 16 2 316s [18,] 15 2 316s [19,] 23 2 316s [20,] 21 2 316s [21,] 14 3 316s [22,] 19 3 316s [23,] 18 3 316s [24,] 22 3 316s [25,] 17 4 316s [26,] 20 4 316s > 316s > # - "Clean up Parse Data" ------------------------------------------------------ 316s > 316s > dat <- unitizer:::parse_dat_get(text = "{function(x) NULL;; #comment\n}")$dat 316s > # set negative ids to be top level parents 316s > dat <- transform(dat, parent = ifelse(parent < 0, 0L, parent)) 316s > dat <- normalize_id(dat) 316s > 316s > # "Ancestry Descend" 316s > dat.anc <- unitizer:::ancestry_descend(dat$id, dat$parent, 0L) 316s > dat.anc 316s children level 316s [1,] 15 0 316s [2,] 1 1 316s [3,] 13 1 316s [4,] 12 1 316s [5,] 14 1 316s [6,] 11 2 316s [7,] 10 2 316s [8,] 9 3 316s [9,] 8 3 316s [10,] 2 4 316s [11,] 3 4 316s [12,] 4 4 316s [13,] 5 4 316s [14,] 7 4 316s [15,] 6 5 316s > 316s > # "Excise `exprlist`" 316s > unitizer:::prsdat_fix_exprlist(dat, dat.anc)$token 316s [1] "expr" "'{'" "expr" "FUNCTION" 316s [5] "'('" "SYMBOL_FORMALS" "')'" "NULL_CONST" 316s [9] "expr" "COMMENT" "'}'" 316s > 316s > dat.1 <- unitizer:::parse_dat_get(text = "{1 ; ; ;2;}")$dat 316s > # set negative ids to be top level parents 316s > dat.1 <- transform(dat.1, parent = ifelse(parent < 0, 0L, parent)) 316s > dat.1 <- normalize_id(dat.1) 316s > 316s > # "Another `exprlist` test" 316s > unname( 316s + as.list( 316s + unitizer:::prsdat_fix_exprlist( 316s + dat.1, 316s + unitizer:::ancestry_descend(dat.1$id, dat.1$parent, 0L) 316s + )[c("parent", "token")] 316s + ) ) 316s [[1]] 316s [1] 0 14 3 14 10 14 14 316s 316s [[2]] 316s [1] "expr" "'{'" "NUM_CONST" "expr" "NUM_CONST" "expr" 316s [7] "'}'" 316s 316s > dat.2 <- unitizer:::parse_dat_get(text = "{NULL; yowza; #comment\nhello\n}")$dat 316s > # set negative ids to be top level parents 316s > dat.2 <- transform(dat.2, parent = ifelse(parent < 0, 0L, parent)) 316s > dat.2 <- normalize_id(dat.2) 316s > 316s > # "Yet another `exprlist`" 316s > unname( 316s + as.list( 316s + unitizer:::prsdat_fix_exprlist( 316s + dat.2, unitizer:::ancestry_descend(dat.2$id, dat.2$parent, 0L) 316s + )[c("parent", "token")] 316s + ) ) 316s [[1]] 316s [1] 0 13 3 13 7 13 13 11 13 13 316s 316s [[2]] 316s [1] "expr" "'{'" "NULL_CONST" "expr" "SYMBOL" 316s [6] "expr" "COMMENT" "SYMBOL" "expr" "'}'" 316s 316s > 316s > dat.2a <- normalize_id( 316s + unitizer:::parse_dat_get(text = "for(i in x) {if(x) break else next}")$dat 316s + ) 316s > # "`for` cleanup" 316s > 316s > as.list(unitizer:::prsdat_fix_for(dat.2a[-1L, ])) 316s $line1 316s [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 316s 316s $col1 316s [1] 1 5 10 10 13 13 14 14 16 17 17 18 20 20 26 31 31 35 316s 316s $line2 316s [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 316s 316s $col2 316s [1] 3 5 10 10 35 13 34 15 16 17 17 18 24 24 29 34 34 35 316s 316s $id 316s [1] 1 3 5 7 22 9 21 10 11 12 14 13 15 16 17 18 19 20 316s 316s $parent 316s [1] 23 23 7 23 23 22 22 21 21 14 21 21 16 21 21 19 21 22 316s 316s $token 316s [1] "FOR" "SYMBOL" "SYMBOL" "expr" "expr" "'{'" "expr" "IF" 316s [9] "'('" "SYMBOL" "expr" "')'" "BREAK" "expr" "ELSE" "NEXT" 316s [17] "expr" "'}'" 316s 316s $terminal 316s [1] TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE FALSE TRUE 316s [13] TRUE FALSE TRUE TRUE FALSE TRUE 316s 316s $text 316s [1] "for" "i" "x" "" "" "{" "" "if" "(" 316s [10] "x" "" ")" "break" "" "else" "next" "" "}" 316s 316s > 316s > dat.3 <- normalize_id(unitizer:::parse_dat_get(text = if.text)$dat) 316s > 316s > # "`if` cleanup" 316s > 316s > unname(as.list(unitizer:::prsdat_fix_if(dat.3[-1, ])[c("id", "token")])) 316s [[1]] 316s [1] 1 2 11 4 6 5 7 8 9 17 12 13 14 15 16 19 20 21 316s 316s [[2]] 316s [1] "IF" "COMMENT" "expr" "SYMBOL" "expr" "GT" 316s [7] "NUM_CONST" "expr" "COMMENT" "expr" "'{'" "SYMBOL" 316s [13] "expr" "COMMENT" "'}'" "COMMENT" "SYMBOL" "expr" 316s 316s > 316s > # - "Full Parse Works Properly" ------------------------------------------------ 316s > 316s > # "Full Comment Parse" 316s > unitizer:::comm_extract(unitizer:::parse_with_comments(text = txt)) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s [1] "# This is an early comment" 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[4]] 316s [[2]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[3]] 316s [[3]][[1]] 316s [1] "# multi" "# line" "# comment" "# and another!" 316s 316s [[3]][[2]] 316s [[3]][[2]][[1]] 316s NULL 316s 316s 316s [[3]][[3]] 316s [[3]][[3]][[1]] 316s NULL 316s 316s [[3]][[3]][[2]] 316s [[3]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[3]][[3]][[3]] 316s [[3]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[3]][[3]][[4]] 316s [[3]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[3]][[4]] 316s [[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[4]] 316s [[4]][[1]] 316s NULL 316s 316s [[4]][[2]] 316s [[4]][[2]][[1]] 316s NULL 316s 316s 316s [[4]][[3]] 316s [[4]][[3]][[1]] 316s NULL 316s 316s 316s [[4]][[4]] 316s [[4]][[4]][[1]] 316s NULL 316s 316s [[4]][[4]][[2]] 316s [[4]][[4]][[2]][[1]] 316s NULL 316s 316s 316s [[4]][[4]][[3]] 316s [[4]][[4]][[3]][[1]] 316s [1] "# test that were not crazy" "# TRUE hopefully" 316s 316s [[4]][[4]][[3]][[2]] 316s [[4]][[4]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[4]][[4]][[3]][[3]] 316s [[4]][[4]][[3]][[3]][[1]] 316s NULL 316s 316s [[4]][[4]][[3]][[3]][[2]] 316s [[4]][[4]][[3]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[4]][[4]][[3]][[3]][[3]] 316s [[4]][[4]][[3]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[4]][[4]][[3]][[3]][[4]] 316s [[4]][[4]][[3]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[4]][[4]][[3]][[4]] 316s [[4]][[4]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[4]][[4]][[4]] 316s [[4]][[4]][[4]][[1]] 316s [1] "# Still not crazy" 316s 316s [[4]][[4]][[4]][[2]] 316s [[4]][[4]][[4]][[2]][[1]] 316s NULL 316s 316s 316s [[4]][[4]][[4]][[3]] 316s [[4]][[4]][[4]][[3]][[1]] 316s NULL 316s 316s [[4]][[4]][[4]][[3]][[2]] 316s [[4]][[4]][[4]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[4]][[4]][[4]][[3]][[3]] 316s [[4]][[4]][[4]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[4]][[4]][[4]][[3]][[4]] 316s [[4]][[4]][[4]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[4]][[4]][[4]][[4]] 316s [[4]][[4]][[4]][[4]][[1]] 316s NULL 316s 316s [[4]][[4]][[4]][[4]][[2]] 316s [[4]][[4]][[4]][[4]][[2]][[1]] 316s NULL 316s 316s 316s [[4]][[4]][[4]][[4]][[3]] 316s [[4]][[4]][[4]][[4]][[3]][[1]] 316s NULL 316s 316s 316s [[4]][[4]][[4]][[4]][[4]] 316s [[4]][[4]][[4]][[4]][[4]][[1]] 316s NULL 316s 316s 316s 316s 316s 316s 316s [[5]] 316s [[5]][[1]] 316s NULL 316s 316s [[5]][[2]] 316s [[5]][[2]][[1]] 316s NULL 316s 316s 316s [[5]][[3]] 316s [[5]][[3]][[1]] 316s NULL 316s 316s [[5]][[3]][[2]] 316s [[5]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[5]][[3]][[3]] 316s [[5]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[5]][[3]][[4]] 316s [[5]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s 316s [[6]] 316s [[6]][[1]] 316s [1] "# and this comment belongs to whom?" 316s 316s [[6]][[2]] 316s [[6]][[2]][[1]] 316s NULL 316s 316s 316s [[6]][[3]] 316s [[6]][[3]][[1]] 316s NULL 316s 316s 316s 316s [[7]] 316s [[7]][[1]] 316s [1] "# and I?" 316s 316s [[7]][[2]] 316s [[7]][[2]][[1]] 316s NULL 316s 316s 316s [[7]][[3]] 316s [[7]][[3]][[1]] 316s NULL 316s 316s 316s 316s > 316s > # "EQ_SUB and SYMBOL_SUB test" 316s > unitizer:::comm_extract( 316s + unitizer:::parse_with_comments( 316s + text = "structure(1:3, # the data\nclass # the label\n=#the equal sign\n'hello' # the class\n)" 316s + ) ) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s NULL 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s [1] "# the data" 316s 316s [[2]][[3]][[2]] 316s [[2]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]][[3]] 316s [[2]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[3]][[4]] 316s [[2]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[2]]$class 316s [[2]]$class[[1]] 316s [1] "# the label" "#the equal sign" "# the class" 316s 316s 316s 316s > 316s > # "Function with `exprlist`" 316s > 316s > unitizer:::comm_extract( 316s + unitizer:::parse_with_comments( 316s + 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;}" 316s + ) ) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s NULL 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s [1] "#first arg" 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s NULL 316s 316s [[2]][[3]]$x 316s [[2]][[3]]$x[[1]] 316s NULL 316s 316s 316s [[2]][[3]]$y 316s [[2]][[3]]$y[[1]] 316s NULL 316s 316s 316s 316s [[2]][[4]] 316s [[2]][[4]][[1]] 316s [1] "#second arg with default" 316s 316s [[2]][[4]][[2]] 316s [[2]][[4]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[3]] 316s [[2]][[4]][[3]][[1]] 316s [1] "# first comment" 316s 316s [[2]][[4]][[3]][[2]] 316s [[2]][[4]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[3]][[3]] 316s [[2]][[4]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[3]][[4]] 316s [[2]][[4]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[2]][[4]][[4]] 316s [[2]][[4]][[4]][[1]] 316s [1] "#second comment" 316s 316s 316s [[2]][[4]][[5]] 316s [[2]][[4]][[5]][[1]] 316s [1] "#lastcomment " 316s 316s [[2]][[4]][[5]][[2]] 316s [[2]][[4]][[5]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[5]][[3]] 316s [[2]][[4]][[5]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[5]][[4]] 316s [[2]][[4]][[5]][[4]][[1]] 316s NULL 316s 316s 316s 316s 316s [[2]][[5]] 316s [[2]][[5]][[1]] 316s NULL 316s 316s [[2]][[5]][[2]] 316s [[2]][[5]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[3]] 316s [[2]][[5]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[4]] 316s [[2]][[5]][[4]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[5]] 316s [[2]][[5]][[5]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[6]] 316s [[2]][[5]][[6]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[7]] 316s [[2]][[5]][[7]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[8]] 316s [[2]][[5]][[8]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[9]] 316s [[2]][[5]][[9]][[1]] 316s NULL 316s 316s 316s 316s 316s > 316s > # "`for` loop" 316s > unitizer:::comm_extract( 316s + unitizer:::parse_with_comments( 316s + 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;}" 316s + ) ) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s NULL 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s [1] "#in counter" 316s 316s 316s [[2]][[4]] 316s [[2]][[4]][[1]] 316s [1] "#incounter again" 316s 316s [[2]][[4]][[2]] 316s [[2]][[4]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[3]] 316s [[2]][[4]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[4]] 316s [[2]][[4]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[2]][[5]] 316s [[2]][[5]][[1]] 316s NULL 316s 316s [[2]][[5]][[2]] 316s [[2]][[5]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[3]] 316s [[2]][[5]][[3]][[1]] 316s [1] "# first comment" 316s 316s [[2]][[5]][[3]][[2]] 316s [[2]][[5]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[3]][[3]] 316s [[2]][[5]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[3]][[4]] 316s [[2]][[5]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[2]][[5]][[4]] 316s [[2]][[5]][[4]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[5]] 316s [[2]][[5]][[5]][[1]] 316s [1] "#second comment" 316s 316s 316s [[2]][[5]][[6]] 316s [[2]][[5]][[6]][[1]] 316s NULL 316s 316s [[2]][[5]][[6]][[2]] 316s [[2]][[5]][[6]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[6]][[3]] 316s [[2]][[5]][[6]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[5]][[6]][[4]] 316s [[2]][[5]][[6]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[2]][[5]][[7]] 316s [[2]][[5]][[7]][[1]] 316s [1] "#lastcomment " 316s 316s 316s 316s 316s > 316s > # "`if` statement" 316s > unitizer:::comm_extract(unitizer:::parse_with_comments(text = if.text)) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s NULL 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s [1] "# IFFY" 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s [1] "# ifcond" 316s 316s [[2]][[3]][[2]] 316s [[2]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]][[3]] 316s [[2]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[3]][[4]] 316s [[2]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[2]][[4]] 316s [[2]][[4]][[1]] 316s NULL 316s 316s [[2]][[4]][[2]] 316s [[2]][[4]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[3]] 316s [[2]][[4]][[3]][[1]] 316s NULL 316s 316s 316s 316s [[2]][[5]] 316s [[2]][[5]][[1]] 316s [1] "#final" 316s 316s 316s 316s > 316s > # "formula" 316s > unitizer:::comm_extract( 316s + unitizer:::parse_with_comments( 316s + text = ". + x # hello\n#yowza\n~#bust a move\ny" 316s + ) ) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s [1] "# hello" 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[4]] 316s [[2]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[3]] 316s [[3]][[1]] 316s [1] "#yowza" 316s 316s [[3]][[2]] 316s [[3]][[2]][[1]] 316s [1] "#bust a move" 316s 316s 316s [[3]][[3]] 316s [[3]][[3]][[1]] 316s NULL 316s 316s 316s 316s > 316s > # "`repeat`" 316s > unitizer:::comm_extract( 316s + unitizer:::parse_with_comments( 316s + text = "repeat #first\n{runif(10); #comm\nbreak;}" 316s + ) ) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s NULL 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s [1] "#first" 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s NULL 316s 316s [[2]][[3]][[2]] 316s [[2]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]][[3]] 316s [[2]][[3]][[3]][[1]] 316s [1] "#comm" 316s 316s [[2]][[3]][[3]][[2]] 316s [[2]][[3]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]][[3]][[3]] 316s [[2]][[3]][[3]][[3]][[1]] 316s NULL 316s 316s 316s 316s [[2]][[3]][[4]] 316s [[2]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s 316s > 316s > # "S4 slot" 316s > unitizer:::comm_extract( 316s + unitizer:::parse_with_comments(text = "test@#comment\nhello <- 3") 316s + ) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s NULL 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s NULL 316s 316s [[2]][[3]][[2]] 316s [[2]][[3]][[2]][[1]] 316s [1] "#comment" 316s 316s 316s [[2]][[3]][[3]] 316s [[2]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[3]][[4]] 316s [[2]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[2]][[4]] 316s [[2]][[4]][[1]] 316s NULL 316s 316s 316s 316s > 316s > # "`while`" 316s > unitizer:::comm_extract( 316s + unitizer:::parse_with_comments( 316s + text = "while(x > 5 # a comment\n) { hello; goodbye } #yay" 316s + ) ) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s NULL 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s [1] "# a comment" 316s 316s [[2]][[3]][[2]] 316s [[2]][[3]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]][[3]] 316s [[2]][[3]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[3]][[4]] 316s [[2]][[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[2]][[4]] 316s [[2]][[4]][[1]] 316s NULL 316s 316s [[2]][[4]][[2]] 316s [[2]][[4]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[3]] 316s [[2]][[4]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[4]][[4]] 316s [[2]][[4]][[4]][[1]] 316s NULL 316s 316s 316s 316s 316s > 316s > 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 " 316s > test.comp <- unitizer:::comm_extract(unitizer:::parse_with_comments(text = txt2)) 316s > 316s > # "A more complex test" 316s > lapply(test.comp[4:5], `[[`, 1) 316s [[1]] 316s [1] "# Need to add tests:" 316s [2] "# - with complex objects? (did I mean in the definition? Or the call??)" 316s 316s [[2]] 316s [1] "# These should be identical to match.call()" 316s 316s > 316s > # "Added SYMBOL_PACKAGE token" 316s > unitizer:::comm_extract( 316s + unitizer:::parse_with_comments( 316s + text = "# a comment before\nunitizer:::browse() #a comment after" 316s + ) ) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s [1] "# a comment before" "#a comment after" 316s 316s 316s > # "Added SYMBOL_PACKAGE token v2" 316s > unitizer:::comm_extract( 316s + unitizer:::parse_with_comments( 316s + text = "# a comment before\nunitizer::browse() #a comment after" 316s + ) ) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s [1] "# a comment before" "#a comment after" 316s 316s 316s > # LBB used to break stuff 316s > txt3 <- "# This is an early comment\n hello <- 25\n # multi\n hello[[1]] # and another!" 316s > # "LBB test" 316s > unitizer:::comm_extract(unitizer:::parse_with_comments(text = txt3)) 316s [[1]] 316s NULL 316s 316s [[2]] 316s [[2]][[1]] 316s [1] "# This is an early comment" 316s 316s [[2]][[2]] 316s [[2]][[2]][[1]] 316s NULL 316s 316s 316s [[2]][[3]] 316s [[2]][[3]][[1]] 316s NULL 316s 316s 316s [[2]][[4]] 316s [[2]][[4]][[1]] 316s NULL 316s 316s 316s 316s [[3]] 316s [[3]][[1]] 316s [1] "# multi" "# and another!" 316s 316s [[3]][[2]] 316s [[3]][[2]][[1]] 316s NULL 316s 316s 316s [[3]][[3]] 316s [[3]][[3]][[1]] 316s NULL 316s 316s 316s [[3]][[4]] 316s [[3]][[4]][[1]] 316s NULL 316s 316s 316s 316s > 316s > # - "Weird missing comment on `res` works" ------------------------------------- 316s > 316s > 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" 316s > expr <- unitizer:::parse_with_comments(text = txt3) 316s > my.unitizer <- new("unitizer", id = 1, zero.env = new.env()) 316s > capture.output(my.unitizer <- my.unitizer + expr) 316s character(0) 316s > 316s > lapply(unitizer:::as.list(my.unitizer@items.new), slot, "comment") 316s [[1]] 316s [1] "# Calls to `library` and assignments are not normally considered tests, so" 316s [2] "# you will not be prompted to review them" 316s 316s [[2]] 316s character(0) 316s 316s [[3]] 316s character(0) 316s 316s [[4]] 316s character(0) 316s 316s [[5]] 316s [1] "# first reviewable expression" 316s 316s [[6]] 316s character(0) 316s 316s [[7]] 316s character(0) 316s 316s [[8]] 316s [1] "# This should cause an error; press Y to add to store" 316s 316s > 316s > # - "exprlist excission with negative par ids" --------------------------------- 316s > 316s > txt <- "# For random tests\n\nunitizer_sect(\"blah\", {\n identity(1);\n})\n" 316s > prs.dat <- unitizer:::parse_dat_get(text = txt)$dat 316s > # set negative ids to be top level parents 316s > prs.dat <- transform(prs.dat, parent = ifelse(parent < 0, 0L, 316s + parent)) 316s > prs.dat <- normalize_id(prs.dat) 316s > ancestry <- with(prs.dat, unitizer:::ancestry_descend(id, parent, 316s + 0L)) 316s > x <- unitizer:::prsdat_fix_exprlist(prs.dat, ancestry) 316s > unname(as.matrix(x[, 5:6])) 316s [,1] [,2] 316s [1,] 1 0 316s [2,] 21 0 316s [3,] 2 4 316s [4,] 4 21 316s [5,] 3 21 316s [6,] 5 7 316s [7,] 7 21 316s [8,] 6 21 316s [9,] 19 21 316s [10,] 8 19 316s [11,] 15 19 316s [12,] 9 11 316s [13,] 11 15 316s [14,] 10 15 316s [15,] 12 13 316s [16,] 13 15 316s [17,] 14 15 316s [18,] 18 19 316s [19,] 20 21 316s > 316s > # - "empty symbols handled okay" ----------------------------------------------- 316s > 316s > # the empty second argument to `[` caused problems before 316s > txt <- "mtcars[1:10,]\n" 316s > # shouldn't cause error 316s > unitizer:::parse_with_comments(text = txt) 316s expression(mtcars[1:10,]) 316s > 316s > # - "uncommenting works" ------------------------------------------------------- 316s > 316s > unitizer:::uncomment(expr[[1]]) 316s library(utzflm) 316s > 316s > # "don't blow away function arg names" 316s > unitizer:::uncomment(quote(function(a, b) NULL)) 316s function(a, b) NULL 316s > # 316s > # Recover comments and uncomment 316s > 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))" 316s > exp <- unitizer:::parse_with_comments(text = txt) 316s > candc <- unitizer:::comm_and_call_extract(exp) 316s > 316s > candc$call[[1L]] 316s .alike(quote(fun(b = fun2(x, y), 1, 3)), quote(fun(NULL, fun2(a, 316s b), 1)), alike_settings(lang.mode = 1)) 316s > 316s > candc$comments 316s [1] "# FALSE, match.call disabled" "# first sub.call" 316s [3] "# second sub.call" 316s > 316s > # - "failing parses produce proper errors" ------------------------------------- 316s > 316s > txt <- "this is a + syntax error that cannot be parsed" 316s > try(capture.output(unitizer:::parse_tests(text = txt), type = "message")) 316s Error in value[[3L]](cond) : 316s Unable to parse test file; see previous messages 316s > f <- tempfile() 316s > on.exit(unlink(f)) 316s > cat(txt, "\n", sep = "", file = f) 316s > try(capture.output(unitizer:::parse_tests(f), type = "message")) 316s Error in value[[3L]](cond) : 316s Unable to parse test file; see previous messages 316s > # try in normal mode (just fall back to normal parse) 316s > try(unitizer:::parse_tests(text = txt, comments = FALSE)) 316s Error in parse(text = text, keep.source = FALSE) : 316s :1:6: unexpected symbol 316s 1: this is 316s ^ 316s > 316s > any( 316s + grepl( 316s + "unexpected symbol", 316s + capture.output(try(unitizer:::parse_tests(f, comments = FALSE)), type='message'), 316s + ) ) 316s [1] TRUE 317s > 317s > # - "NULL, constants, and new tokens" ------------------------------------------ 317s > 317s > # These were added with 3.6.3? Previously, it seems that the equal assign did 317s > # not generate a master expression to wrap all the pieces, which means these 317s > # tests just don't work because all the eq_assign at the top level end up with 317s > # the same parent and the parser gets confused. 317s > 317s > txt <- c("a = 2", "# ho how", "b = 3", "", "b + a # oh here", 317s + "", "b + # oh there", "a # bear", "", "NULL") 317s > if(getRversion() >= "3.6.3") { 317s + identical( 317s + unitizer:::comm_extract(unitizer:::parse_with_comments(text = txt)), 317s + rds('parse-eq') 317s + ) 317s + } else TRUE 317s [1] TRUE 317s > 317s > with.const <- unitizer:::parse_with_comments(text = "3 # comment on const") 317s > unitizer:::symb_mark_rem(with.const[[1]]) 317s [1] 3 317s > 317s > 317s PASS 317s Begin testing t-prompt.R 317s 317s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 317s Copyright (C) 2024 The R Foundation for Statistical Computing 317s Platform: arm-unknown-linux-gnueabihf (32-bit) 317s 317s R is free software and comes with ABSOLUTELY NO WARRANTY. 317s You are welcome to redistribute it under certain conditions. 317s Type 'license()' or 'licence()' for distribution details. 317s 317s R is a collaborative project with many contributors. 317s Type 'contributors()' for more information and 317s 'citation()' on how to cite R or R packages in publications. 317s 317s Type 'demo()' for some demos, 'help()' for on-line help, or 317s 'help.start()' for an HTML browser interface to help. 317s Type 'q()' to quit R. 317s 317s > source(file.path("_helper", "init.R")) 317s > 317s > # - "read_line works" ---------------------------------------------------------- 317s > 317s > # read through prompt vals 317s > 317s > unitizer:::read_line_set_vals(letters[1:3]) 317s > u.ns <- asNamespace("unitizer") 317s > unitizer:::read_line() 317s a 317s [1] "a" 317s > identical(u.ns$.global$prompt.vals, letters[2:3]) 317s [1] TRUE 317s > unitizer:::read_line() 317s b 317s [1] "b" 317s > u.ns$.global$prompt.vals 317s [1] "c" 317s > unitizer:::read_line() 317s c 317s [1] "c" 317s > u.ns$.global$prompt.vals 317s character(0) 317s > 317s > try(unitizer:::read_line()) 317s Error : Internal Error: ran out of predefined readline input; contact maintainer. 317s > 317s > # - "simple prompts" ----------------------------------------------------------- 317s > 317s > unitizer:::read_line_set_vals(c("y", "Y", "n", "N")) 317s > try(unitizer:::simple_prompt(1:5)) 317s Error in unitizer:::simple_prompt(1:5) : 317s Argument `message` must be character 317s > try(unitizer:::simple_prompt("hello", attempts = 1:5)) 317s Error in unitizer:::simple_prompt("hello", attempts = 1:5) : 317s Argument `attempts` must be numeric(1L), not NA, and one or greater 317s > try(unitizer:::simple_prompt("hello", values = NA_character_)) 317s Error in unitizer:::simple_prompt("hello", values = NA_character_) : 317s Argument `values` must be character with no NAs 317s > try(unitizer:::simple_prompt("hello", case.sensitive = 1)) 317s Error in unitizer:::simple_prompt("hello", case.sensitive = 1) : 317s Argument `case.sensitive` must be TRUE or FALSE 317s > 317s > unitizer:::simple_prompt("hello") 317s | hello 317s 317s unitizer> y 317s [1] "Y" 317s > unitizer:::simple_prompt("hello")# 317s | hello 317s 317s unitizer> Y 317s [1] "Y" 317s > unitizer:::simple_prompt("hello") 317s | hello 317s 317s unitizer> n 317s [1] "N" 317s > unitizer:::read_line_set_vals(c("y", "y", "n")) 317s > try(unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE)) 317s | hello 317s 317s unitizer> y 317s | Invalid input, please select one of: Y, N 317s 317s Error in unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE) : 317s Gave up trying to collect user input after 1 attempts. 317s > try(unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE), 317s + silent = TRUE) 317s | hello 317s 317s unitizer> y 317s | Invalid input, please select one of: Y, N 317s 317s > try(unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE)) 317s | hello 317s 317s unitizer> n 317s | Invalid input, please select one of: Y, N 317s 317s Error in unitizer:::simple_prompt("hello", attempts = 1L, case.sensitive = TRUE) : 317s Gave up trying to collect user input after 1 attempts. 317s > 317s > # - "faux prompt" -------------------------------------------------------------- 317s > 317s > unitizer:::read_line_set_vals(c("1 +", "1")) 317s > unitizer:::faux_prompt(prompt = "> ", continue = "+ ")[[1L]] 317s > 1 + 317s + 1 317s 1 + 1 317s > unitizer:::read_line_set_vals(c("(})")) 317s > try(unitizer:::faux_prompt(prompt = "> ", continue = "+ ")) 317s > (}) 317s Error in "(})" : :1:2: unexpected '}' 317s 1: (} 317s ^ 317s > 317s > ## Test the new readLines based read_line 317s > ## This test will not work in interactive mode, requiring input 317s > unitizer:::read_line_set_vals(c("1 +", "1")) 317s > unitizer:::faux_prompt() 317s > 1 + 317s + 1 317s expression(1 + 1) 317s > 317s > ## This one embeds a CTRL+C to test interrupt, but we can't test this without 317s > ## read_line_setvals 317s > unitizer:::read_line_set_vals(c("1 +", "\x03", "2 + ", "1")) 317s > unitizer:::faux_prompt() 317s > 1 + 317s +  317s 317s > 2 + 317s + 1 317s expression(2 + 1) 317s > 317s > unitizer:::read_line_set_vals(c("\x03", "2 + ", "1")) 317s > unitizer:::faux_prompt() 317s >  317s 317s 317s | Type "Q" at the prompt to quit unitizer. 317s 317s > 2 + 317s + 1 317s expression(2 + 1) 317s > 317s > ## Test that changing language doesn't affect partial parsing 317s > lang <- Sys.getenv("LANGUAGE", unset=NA) 317s > Sys.setenv("LANGUAGE"="fr") 317s > unitizer:::read_line_set_vals(c("1 +", "1")) 317s > unitizer:::faux_prompt(prompt = "> ", continue = "+ ") 317s > 1 + 317s + 1 317s expression(1 + 1) 317s > if(is.na(lang)) Sys.unsetenv("LANGUAGE") else Sys.setenv("LANGUAGE"=lang) 317s > 317s > # - "unitizer prompt" ---------------------------------------------------------- 317s > 317s > # Some of this needs to be done outside of testthat due to sinking 317s > suppressWarnings(glob <- unitizer:::unitizerGlobal$new()) 317s > unitizer:::read_line_set_vals(c("1 +", "1", "H", "Y")) 317s > unitizer:::unitizer_prompt( 317s + "hello", valid.opts = c(Y = "[Y]es", N = "[N]o"), global = glob 317s + ) 317s unitizer> 1 + 317s + 1 317s [1] 2 317s unitizer> H 317s 317s | No help available. 317s | 317s | hello ([Y]es, [N]o, [Q]uit, [H]elp)? 317s 317s unitizer> Y 317s 317s [1] "Y" 317s > 317s > unitizer:::read_line_set_vals(c("1 +", "1", "H", "Q")) 317s > unitizer:::unitizer_prompt("hello", 317s + valid.opts = c(Y = "[Y]es", N = "[N]o"), help = "This is all the help you get", 317s + global = glob) 317s unitizer> 1 + 317s + 1 317s [1] 2 317s unitizer> H 317s 317s | This is all the help you get 317s | 317s | hello ([Y]es, [N]o, [Q]uit, [H]elp)? 317s 317s unitizer> Q 317s 317s [1] "Q" 317s > 317s > unitizer:::read_line_set_vals(c("hell())", "Q")) 317s > txt3 <- unitizer:::capture_output(unitizer:::unitizer_prompt("hello", 317s + valid.opts = c(Y = "[Y]es", N = "[N]o"), global = glob)) 317s > txt3$message 317s [1] "Error in \"hell())\": :1:7: unexpected ')'" 317s [2] "1: hell())" 317s [3] " ^" 317s > 317s > # and multiline stuff (#242) 317s > unitizer:::read_line_set_vals(c("{\n 1 + 1\n 2 + 1\n}", "N")) 317s > unitizer:::unitizer_prompt( 317s + "hello", valid.opts = c(Y = "[Y]es", N = "[N]o"), global = glob 317s + ) 317s unitizer> { 317s 1 + 1 317s 2 + 1 317s } 317s [1] 3 317s unitizer> N 317s 317s [1] "N" 317s > 317s > try( 317s + unitizer:::unitizer_prompt( 317s + "hello", valid.opts = c(Y = "[Y]es", N = "[N]o"), 317s + browse.env = "not an env", global = glob 317s + ) ) 317s Error in unitizer:::unitizer_prompt("hello", valid.opts = c(Y = "[Y]es", : 317s Argument `browse.env` must be an environment 317s > 317s > unitizer:::read_line_set_vals(character()) 317s > try( 317s + unitizer:::unitizer_prompt( 317s + "hello", valid.opts = c(Y = "[Y]es", N = "[N]o"), global = glob 317s + ) ) 317s Error : Internal Error: ran out of predefined readline input; contact maintainer. 317s > unitizer:::read_line_set_vals("1L") 317s > try( 317s + unitizer:::unitizer_prompt( 317s + "hello", 317s + valid.opts = c(Y = "[Y]es", N = "[N]o"), 317s + exit.condition = unitizer:::exit_fun, 317s + valid.vals = 2:3, global = glob 317s + ) ) 317s unitizer> 1L 317s | Type a number in `2:3` at the prompt 317s [1] 1 317s Error : Internal Error: ran out of predefined readline input; contact maintainer. 317s > unitizer:::read_line_set_vals("2L") 317s > unitizer:::unitizer_prompt("hello", valid.opts = c(Y = "[Y]es", 317s + N = "[N]o"), exit.condition = unitizer:::exit_fun, valid.vals = 2:3, 317s + global = glob) 317s unitizer> 2L 317s [1] 2 317s > 317s > 317s PASS 317s Begin testing t-random.R 317s 317s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 317s Copyright (C) 2024 The R Foundation for Statistical Computing 317s Platform: arm-unknown-linux-gnueabihf (32-bit) 317s 317s R is free software and comes with ABSOLUTELY NO WARRANTY. 317s You are welcome to redistribute it under certain conditions. 317s Type 'license()' or 'licence()' for distribution details. 317s 317s R is a collaborative project with many contributors. 317s Type 'contributors()' for more information and 317s 'citation()' on how to cite R or R packages in publications. 317s 317s Type 'demo()' for some demos, 'help()' for on-line help, or 317s 'help.start()' for an HTML browser interface to help. 317s Type 'q()' to quit R. 317s 317s > source(file.path("_helper", "init.R")) 318s > 318s > # - "random seed" -------------------------------------------------------------- 318s > 318s > dir <- file.path(TMP.DIR, "randdir") 318s > dir.create(dir) 318s > file <- file.path(dir, "randtest.R") 318s > cat("sample(1:100)\n", file = file) 318s > set.seed(1) 318s > coi(unitize(file, auto.accept = "new")) 318s Warning in history_capt(history, interactive.mode) : 318s Unable to capture history in non-interactive mode. 318s | Auto-accepting changes... 318s | unitizer updated. 318s 318s > # changing seed should have no effect on result 318s > set.seed(23) 318s > coi(res <- unitize(file)) 318s Warning in history_capt(history, interactive.mode) : 318s Unable to capture history in non-interactive mode. 319s | 1/1 test passed; nothing to review. 319s 319s > # expect_equal(as.character(res$status), "Passed") 319s > as.character(res$status) 319s [1] "Passed" 319s > 319s > 319s PASS 319s Begin testing t-rename.R 319s 319s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 319s Copyright (C) 2024 The R Foundation for Statistical Computing 319s Platform: arm-unknown-linux-gnueabihf (32-bit) 319s 319s R is free software and comes with ABSOLUTELY NO WARRANTY. 319s You are welcome to redistribute it under certain conditions. 319s Type 'license()' or 'licence()' for distribution details. 319s 319s R is a collaborative project with many contributors. 319s Type 'contributors()' for more information and 319s 'citation()' on how to cite R or R packages in publications. 319s 319s Type 'demo()' for some demos, 'help()' for on-line help, or 319s 'help.start()' for an HTML browser interface to help. 319s Type 'q()' to quit R. 319s 319s > source(file.path("_helper", "init.R")) 319s > 319s > # - "Rename Works" ------------------------------------------------------------- 319s > 319s > x <- readRDS("_helper/unitizers/trivial.unitizer/data.rds") 319s > x.edit <- editCalls(x, quote(x), quote(y), interactive.only = FALSE) 319s Warning in .local(x, lang.old, lang.new, ...) : 319s This is an experimental function; make sure you backup any unitizers before you edit them 319s > x.edit@items.ref.calls.deparse 319s [1] "TRUE" "y <- 1 + 1" "y + 2" "y <- y" "y * y" 319s [6] "y/y + 2" 319s > !identical(x@items.ref.calls.deparse, x.edit@items.ref.calls.deparse) 319s [1] TRUE 319s > identical( 319s + x.edit@items.ref.calls.deparse, 319s + gsub("\\bx\\b", "y", x@items.ref.calls.deparse) 319s + ) 319s [1] TRUE 319s > 319s > # warn 319s > unitizer:::read_line_set_vals("Y") 319s > x.edit2 <- editCalls(x, quote(x), quote(y), interactive.mode = TRUE) 319s Warning in .local(x, lang.old, lang.new, ...) : 319s This is an experimental function; make sure you backup any unitizers before you edit them 319s | Do you wish to proceed ([Y]es/[N]o)? 319s 319s unitizer> Y 319s > # message 319s > unitizer:::read_line_set_vals("N") 319s > x.edit3 <- editCalls(x, quote(x), quote(y), interactive.mode = TRUE) 319s Warning in .local(x, lang.old, lang.new, ...) : 319s This is an experimental function; make sure you backup any unitizers before you edit them 319s | Do you wish to proceed ([Y]es/[N]o)? 319s 319s unitizer> N 319s Exiting without edits 319s > identical(x.edit3, x) 319s [1] TRUE 319s > 319s > unitizer:::read_line_set_vals(NULL) 319s > x.edit@items.ref.calls.deparse 319s [1] "TRUE" "y <- 1 + 1" "y + 2" "y <- y" "y * y" 319s [6] "y/y + 2" 319s > 319s PASS 319s Begin testing t-repairenvs.R 319s 319s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 319s Copyright (C) 2024 The R Foundation for Statistical Computing 319s Platform: arm-unknown-linux-gnueabihf (32-bit) 319s 319s R is free software and comes with ABSOLUTELY NO WARRANTY. 319s You are welcome to redistribute it under certain conditions. 319s Type 'license()' or 'licence()' for distribution details. 319s 319s R is a collaborative project with many contributors. 319s Type 'contributors()' for more information and 319s 'citation()' on how to cite R or R packages in publications. 319s 319s Type 'demo()' for some demos, 'help()' for on-line help, or 319s 'help.start()' for an HTML browser interface to help. 319s Type 'q()' to quit R. 319s 319s > source(file.path("_helper", "init.R")) 320s > 320s > exps <- expression(1 + 1, a <- 54, b <- 38, a + b, e <- 5 * a, 320s + a^2, f <- e * a, matrix(rep(f, 20))) 320s > my.unitizer <- new("unitizer", id = 1, zero.env = new.env()) 320s > # add ref.exps as new items 320s > coi(my.unitizer <- my.unitizer + exps) 320s > my.unitizer2 <- new("unitizer", id = 2, zero.env = new.env()) 320s > # now convert them to reference items 320s > coi(my.unitizer2 <- my.unitizer2 + my.unitizer@items.new) 320s > # - "messed up env ancestry repair works" -------------------------------------- 320s > 320s > # Purposefully mess up the environments 320s > parent.env(my.unitizer2@items.ref[[2]]@env) <- baseenv() 320s > x <- unitizer:::healEnvs(my.unitizer2@items.ref, my.unitizer2) 320s Error in parent.env(env) : the empty environment has no parent 320s Error in run_ls(env = x@env, stop.env = base.env, all.names = TRUE, store.env = ref.env.store) : 320s Specified `stop.env` does not appear to be in parent environments. 320s Warning in repairEnvs(items.final) : 320s 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. 320s > old.opt <- options(unitizer.max.env.depth = 20) 320s > res <- unitizer:::healEnvs(my.unitizer2@items.ref, my.unitizer2) 320s Error in try(while (!identical(env, stop.env)) { : 320s Logic error: not finding `stop.env` after 20 iterations; contact package maintainer if this is an error. 320s Error in run_ls(env = x@env, stop.env = base.env, all.names = TRUE, store.env = ref.env.store) : 320s Specified `stop.env` does not appear to be in parent environments. 320s Warning in repairEnvs(items.final) : 320s 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. 320s > is(res, "unitizerItems") 320s [1] TRUE 320s > ref.anc <- unitizer:::env_ancestry(x@base.env) 320s > itm.anc <- unitizer:::env_ancestry(x[[1L]]@env) 320s > # Items should belong to base env for reference 320s > identical(rev(ref.anc), head(rev(itm.anc), length(ref.anc))) 320s [1] TRUE 320s > options(old.opt) 320s > 320s > # - "re-assigning to ignored environments handled properly" -------------------- 320s > 320s > # now `a + b` could try to re-assign to `a <- 54`, but that is same env as 320s > # `a + b` b/c it is ignored 320s > items.picked <- my.unitizer@items.new[-3L] 320s > # expect_error(items.heal <- unitizer:::healEnvs(items.picked, 320s > # my.unitizer), NA) 320s > # no error 320s > items.heal <- unitizer:::healEnvs(items.picked, my.unitizer) 320s > 320s > # - "full repair process works" ------------------------------------------------ 320s > 320s > # copy files and then try messing up environment for the object 320s > file_test("-d", file.path("_helper")) 320s [1] TRUE 320s > store <- file.path("_helper", "unitizers", "trivial.unitizer") 320s > store.new <- file.path(TMP.DIR, store) 320s > dir.create(store.new, recursive = TRUE) 320s > cpy.files <- c( 320s + list.files(store, full.names = TRUE), 320s + file.path("helper", "unitizers", "trivial.R") 320s + ) 320s > file.copy(cpy.files, file.path(TMP.DIR, cpy.files), overwrite = TRUE) 320s [1] TRUE FALSE 320s > 320s > untz <- unitizer:::load_unitizers( 320s + list(store.new), NA_character_, 320s + par.frame = .GlobalEnv, interactive.mode = TRUE, mode = "unitize", 320s + show.progress=0L, transcript=FALSE 320s + ) 320s Warning in unitizer:::load_unitizers(list(store.new), NA_character_, par.frame = .GlobalEnv, : 320s Upgraded test file does not match original test file ('trivial.R' vs 'NA'). 320s Warning in .Object$initialize(...) : 320s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 320s > # Break env chain, store, and reload 320s > untz[[1L]]@items.ref.calls.deparse[[5L]] 320s [1] "y * x" 320s > parent.env(untz[[1L]]@items.ref[[5L]]@env) <- baseenv() 320s > # warning 320s > unitizer:::store_unitizer(untz[[1L]]) 320s | unitizer updated. 320s 320s > untz.rep <- repair_environments(store.new) 320s Warning in .Object$initialize(...) : 320s Instantiated global object without global namespace registry; you should only see this warning you are using `repair_environments`. 320s Warning in repairEnvs(x@items.ref) : 320s 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. 320s | unitizer updated. 320s 320s > # this should not give warnings 320s > unitizer:::healEnvs(untz.rep@items.ref, untz.rep) 320s An object of class "unitizerItems" 320s Slot "base.env": 320s 320s 320s Slot ".items": 320s [[1]] 320s ~~~ Reference Test ~~~ 320s TRUE 320s * value: logi[1] 320s * output: 9 chars 320s 320s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 320s 320s [[2]] 320s ~~~ Reference Test ~~~ 320s x <- 1 + 1 320s * value: unitizerDummy 320s 320s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 320s 320s [[3]] 320s ~~~ Reference Test ~~~ 320s x + 2 320s * value: num[1] 320s * output: 6 chars 320s 320s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 320s 320s [[4]] 320s ~~~ Reference Test ~~~ 320s y <- x 320s * value: unitizerDummy 320s 320s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 320s 320s [[5]] 320s ~~~ Reference Test ~~~ 320s y * x 320s * value: num[1] 320s * output: 6 chars 320s 320s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 320s 320s [[6]] 320s ~~~ Reference Test ~~~ 320s y/x + 2 320s * value: num[1] 320s * output: 6 chars 320s 320s Access components with `$`, e.g. `.REF$value`; see `help("$", "unitizer")` 320s 320s 320s Slot ".pointer": 320s [1] 0 320s 320s Slot ".seek.fwd": 320s [1] TRUE 320s 320s > 320s > 320s PASS 320s Begin testing t-search.R 320s 320s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 320s Copyright (C) 2024 The R Foundation for Statistical Computing 320s Platform: arm-unknown-linux-gnueabihf (32-bit) 320s 320s R is free software and comes with ABSOLUTELY NO WARRANTY. 320s You are welcome to redistribute it under certain conditions. 320s Type 'license()' or 'licence()' for distribution details. 320s 320s R is a collaborative project with many contributors. 320s Type 'contributors()' for more information and 320s 'citation()' on how to cite R or R packages in publications. 320s 320s Type 'demo()' for some demos, 'help()' for on-line help, or 320s 'help.start()' for an HTML browser interface to help. 320s Type 'q()' to quit R. 320s 320s > source(file.path("_helper", "init.R")) 321s > source(file.path("_helper", "pkgs.R")) 321s Install Packages 324s Setup Demos 324s > 324s > unitizer.dummy.list <- list(A = 1, B = 2, C = 3) 324s > unitizer.dummy.list.2 <- list(A = 13, B = 24, C = 35) 324s > # can't unload `unitizer`, ruins `covr` 324s > try(detach("package:unitizer"), silent = TRUE) 324s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 324s > try(detach("package:unitizerdummypkg2", unload = TRUE), silent = TRUE) 324s > while ("unitizer.dummy.list" %in% search()) try(detach("unitizer.dummy.list")) 324s > state.set <- setNames(rep(2L, length(unitizer:::.unitizer.global.settings.names)), 324s + unitizer:::.unitizer.global.settings.names) 324s > library(unitizer) 324s > library(unitizerdummypkg1, lib.loc = TMP.LIB) 324s > library(unitizerdummypkg2, lib.loc = TMP.LIB) 324s > 324s > # - "Detecting packages" ------------------------------------------------------- 324s > 324s > unitizer:::is.loaded_package("package:unitizer") 324s [1] TRUE 324s > unitizer:::is.loaded_package("unitizer") # FALSE 324s [1] FALSE 324s > unitizer:::is.loaded_package("package:stats") 324s [1] TRUE 324s > try(unitizer:::is.loaded_package(1)) 324s Error in unitizer:::is.loaded_package(1) : 324s Argument `pkg.name` must be character 1L 324s > try(unitizer:::is.loaded_package(letters)) 324s Error in unitizer:::is.loaded_package(letters) : 324s Argument `pkg.name` must be character 1L 324s > unitizer:::is.loaded_package("Autoloads") # FALSE 324s [1] FALSE 324s > is.list(pkg.dat <- unitizer:::get_package_data()) 324s [1] TRUE 324s > all( 324s + vapply( 324s + pkg.dat, function(x) is.list(x) && identical(names(x), 324s + c("names", "lib.loc", "version")), logical(1L) 324s + ) ) 324s [1] TRUE 324s > 324s > # - "Path Compression" --------------------------------------------------------- 324s > 324s > search.init.full <- unitizer:::search_as_envs() 324s > search.init <- search.init.full$search.path 324s > 324s > head(unitizer:::compress_search_data(search.init.full), 3L) 324s [1] ".GlobalEnv" "package:unitizerdummypkg2 (v0.1)" 324s [3] "package:unitizerdummypkg1 (v0.1)" 324s > 324s > # - "Moving Objects on Search Path Works" -------------------------------------- 324s > 324s > if (length(search.init) < 6L) stop("Unexpetedly short search path") 324s > untz.glob <- unitizer:::unitizerGlobal$new(enable.which = state.set, 324s + set.global = TRUE) 324s > 324s > try(unitizer:::move_on_path(5L, 2L, untz.glob)) 324s Error in unitizer:::move_on_path(5L, 2L, untz.glob) : 324s old.pos > new.pos is not TRUE 324s > try(unitizer:::move_on_path(1L, 2L, untz.glob)) 324s Error in unitizer:::move_on_path(1L, 2L, untz.glob) : 324s new.pos > 1L is not TRUE 324s > unitizer:::move_on_path(2L, 5L, untz.glob) 324s > # can't compare actual environments as they change when detached and 324s > # re-attached 324s > 324s > all.equal( 324s + names(unitizer:::search_as_envs()$search.path), 324s + names(search.init[c(1L, 5L, 2L:4L, 6L:length(search.init))]) 324s + ) 324s [1] TRUE 324s > # Now let's undo the previous move, by pushing second pack back to 324s > # original position 324s > for (i in rep(5L, 3L)) unitizer:::move_on_path(2L, 5L, untz.glob) 324s > unitizer:::search_dat_equal(unitizer:::search_as_envs(), search.init.full) 324s [1] TRUE 324s > untz.glob$release() 324s > 324s > # - "Search Path Journaling Works" --------------------------------------------- 324s > 324s > try(detach("package:unitizer"), silent = TRUE) 324s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 324s > try(detach("package:unitizerdummypkg2", unload = TRUE), silent = TRUE) 324s > library(unitizer) 324s > # Initialize a global tracking object. Doing it funny here because we don't 324s > # want to run the search_path_trim command yet, and that would happen if we 324s > # did a normal init 324s > # will be modified later 324s > search.ref <- NULL 324s > search.init <- unitizer:::search_as_envs() 324s > untz.glob <- unitizer:::unitizerGlobal$new(enable.which = state.set, 324s + set.global = TRUE) 324s > 324s > stat.tpl <- new("unitizerGlobalStatus", search.path = 2L, working.directory = 2L, 324s + options = 2L, random.seed = 2L, namespaces = 2L) 324s > # these need to be done outside of `test_that` b/c `test_that` sets the 324s > # rlang_trace_top_env option 324s > st.0 <- untz.glob$indices.last 324s > st.1 <- untz.glob$state() 324s > 324s > # Note, these are intended to be run without the shimming in place 324s > identical(untz.glob$status, stat.tpl) 324s [1] TRUE 324s > 324s > # state should only be recorded if it changes 324s > st.0 324s An object of class "unitizerGlobalIndices" 324s Slot "search.path": 324s [1] 1 324s 324s Slot "options": 324s [1] 1 324s 324s Slot "working.directory": 324s [1] 1 324s 324s Slot "random.seed": 324s [1] 1 324s 324s Slot "namespaces": 324s [1] 1 324s 324s > identical(st.0, st.1) 324s [1] TRUE 324s > # Add a package 324s > library("unitizerdummypkg1", lib.loc = TMP.LIB) 324s > st.2 <- untz.glob$state() 324s > # have two recorded states 324s > st.2@search.path 324s [1] 2 324s > # should have one more item 324s > diff(sapply(untz.glob$tracking@search.path, function(x) length(x$search.path))) 324s [1] 1 324s > environmentName(untz.glob$tracking@search.path[[2L]]$search.path[[2L]]) 324s [1] "package:unitizerdummypkg1" 324s > sp.tmp <- untz.glob$tracking@search.path 324s > # note we compare attribute separately because subsetting drops them 324s > identical(sp.tmp[[1L]]$search.path, sp.tmp[[2L]]$search.path[-2L]) 324s [1] TRUE 324s > 324s > identical( 324s + sp.tmp[[1L]]$ns.dat, 324s + sp.tmp[[2L]]$ns.dat[names(sp.tmp[[2L]]$ns.dat) != "unitizerdummypkg1"] 324s + ) 324s [1] TRUE 324s > # Add another package at a different position 324s > library("unitizerdummypkg2", pos = 4L, lib.loc = TMP.LIB) 324s > st.3 <- untz.glob$state() 324s > diff(sapply(untz.glob$tracking@search.path, function(x) length(x$search.path))) 324s [1] 1 1 324s > environmentName( 324s + untz.glob$tracking@search.path[[st.3@search.path]]$search.path[[4L]] 324s + ) 324s [1] "package:unitizerdummypkg2" 324s > # Attach a list 324s > attach(unitizer.dummy.list) 324s > search.ref <- untz.glob$state() 324s > environmentName( 324s + untz.glob$tracking@search.path[[search.ref@search.path]]$search.path[[2L]] 324s + ) 324s [1] "unitizer.dummy.list" 324s > identical( 324s + as.list( 324s + untz.glob$tracking@search.path[[search.ref@search.path]]$search.path[[2L]] 324s + ), 324s + unitizer.dummy.list 324s + ) 324s [1] TRUE 324s > # And one more, but modified 324s > unitizer.dummy.list.2 <- list(A = 13, B = 24, C = 35) 324s > attach(unitizer.dummy.list.2, pos = 4L, name = "unitizer.dummy.list") 324s The following objects are masked _by_ unitizer.dummy.list (pos = 2): 324s 324s A, B, C 324s 324s > st.4 <- untz.glob$state() 324s > curr.sp.ind <- untz.glob$indices.last@search.path 324s > environmentName(untz.glob$tracking@search.path[[curr.sp.ind]]$search.path[[4L]]) 324s [1] "unitizer.dummy.list" 324s > # Make sure search path is lining up 324s > all.equal( 324s + names(untz.glob$tracking@search.path[[curr.sp.ind]]$search.path), search() 324s + ) 324s [1] TRUE 324s > identical( 324s + as.list(untz.glob$tracking@search.path[[curr.sp.ind]]$search.path[[4L]]), 324s + unitizer.dummy.list.2 324s + ) 324s [1] TRUE 324s > identical( 324s + as.list(untz.glob$tracking@search.path[[curr.sp.ind]]$search.path[[2L]]), 324s + unitizer.dummy.list 324s + ) 324s [1] TRUE 324s > # should still point to same environment 324s > identical( 324s + untz.glob$tracking@search.path[[curr.sp.ind - 1L]]$search.path[[2L]], 324s + untz.glob$tracking@search.path[[curr.sp.ind]]$search.path[[2L]] 324s + ) 324s [1] TRUE 324s > # state shouldn't have changed 324s > identical(untz.glob$state(), st.4) 324s [1] TRUE 324s > 324s > # detach some stuff 324s > # this is the first list 324s > detach(2L) 324s > untz.glob$state() 324s An object of class "unitizerGlobalIndices" 324s Slot "search.path": 324s [1] 6 324s 324s Slot "options": 324s [1] 1 324s 324s Slot "working.directory": 324s [1] 1 324s 324s Slot "random.seed": 324s [1] 1 324s 324s Slot "namespaces": 324s [1] 3 324s 324s > curr.sp.ind <- untz.glob$indices.last@search.path 324s > identical( 324s + untz.glob$tracking@search.path[[curr.sp.ind]]$search.path, 324s + untz.glob$tracking@search.path[[curr.sp.ind - 1L]]$search.path[-2L] 324s + ) 324s [1] TRUE 324s > detach("package:unitizerdummypkg2") 324s > untz.glob$state() 324s An object of class "unitizerGlobalIndices" 324s Slot "search.path": 324s [1] 7 324s 324s Slot "options": 324s [1] 1 324s 324s Slot "working.directory": 324s [1] 1 324s 324s Slot "random.seed": 324s [1] 1 324s 324s Slot "namespaces": 324s [1] 3 324s 324s > curr.sp.ind <- untz.glob$indices.last@search.path 324s > identical( 324s + untz.glob$tracking@search.path[[curr.sp.ind]]$search.path, 324s + untz.glob$tracking@search.path[[curr.sp.ind - 1L]]$search.path[-5L] 324s + ) 324s [1] TRUE 324s > 324s > # - "Resetting search path" ---------------------------------------------------- 324s > 324s > identical( 324s + as.list(as.environment("unitizer.dummy.list")), unitizer.dummy.list.2 324s + ) 324s [1] TRUE 324s > # set to just after we added the original dummy list 324s > untz.glob$reset(search.ref) 324s An object of class "unitizerGlobalIndices" 324s Slot "search.path": 324s [1] 4 324s 324s Slot "options": 324s [1] 1 324s 324s Slot "working.directory": 324s [1] 1 324s 324s Slot "random.seed": 324s [1] 1 324s 324s Slot "namespaces": 324s [1] 3 324s 324s > identical(as.list(as.environment("unitizer.dummy.list")), unitizer.dummy.list) 324s [1] TRUE 324s > # Confirm we actually set to expected path 324s > # NOTE: not sure if with updates this can work 324s > all.equal( 324s + names(unitizer:::search_as_envs()$search.path), 324s + names(untz.glob$tracking@search.path[[search.ref@search.path]]$search.path) 324s + ) 324s [1] TRUE 324s > # Reset to very beginning 324s > untz.glob$resetFull() 324s An object of class "unitizerGlobalIndices" 324s Slot "search.path": 324s [1] 1 324s 324s Slot "options": 324s [1] 1 324s 324s Slot "working.directory": 324s [1] 1 324s 324s Slot "random.seed": 324s [1] 1 324s 324s Slot "namespaces": 324s [1] 1 324s 324s > untz.glob$release() 324s > # compare with all.equal to make sure we use S4 method 324s > unitizer:::search_dat_equal(unitizer:::search_as_envs(), search.init) 324s [1] TRUE 324s > 324s > # - "Search Path Trim / Restore" ----------------------------------------------- 324s > 324s > search.init <- unitizer:::search_as_envs() 324s > untz.glob <- unitizer:::unitizerGlobal$new(enable.which = state.set, 324s + set.global = TRUE) 324s > library(unitizerdummypkg1, lib.loc = TMP.LIB) 324s > library(unitizerdummypkg2, lib.loc = TMP.LIB) 325s > unitizer:::search_path_trim(global = untz.glob) 325s > untz.glob$state() 325s An object of class "unitizerGlobalIndices" 325s Slot "search.path": 325s [1] 2 325s 325s Slot "options": 325s [1] 1 325s 325s Slot "working.directory": 325s [1] 1 325s 325s Slot "random.seed": 325s [1] 1 325s 325s Slot "namespaces": 325s [1] 2 325s 325s > sp.keep <- unitizer:::keep_sp_default() 325s > identical( 325s + search(), 325s + sp.keep[match(names(search.init$search.path), sp.keep, nomatch = 0L)] 325s + ) 325s [1] TRUE 325s > untz.glob$resetFull() 325s An object of class "unitizerGlobalIndices" 325s Slot "search.path": 325s [1] 1 325s 325s Slot "options": 325s [1] 1 325s 325s Slot "working.directory": 325s [1] 1 325s 325s Slot "random.seed": 325s [1] 1 325s 325s Slot "namespaces": 325s [1] 1 325s 325s > untz.glob$release() 325s > unitizer:::search_dat_equal(unitizer:::search_as_envs(), search.init) 325s [1] TRUE 325s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 325s > try(detach("package:unitizerdummypkg2", unload = TRUE), silent = TRUE) 325s > while ("unitizer.dummy.list" %in% search()) try(detach("unitizer.dummy.list")) 325s > 325s > # - "Loaded Namespaces don't cause issues" ------------------------------------- 325s > 325s > # had a problem earlier trying to re-attach namespaces 325s > loadNamespace("unitizerdummypkg1", lib.loc = TMP.LIB) 325s 325s > untz.glob <- unitizer:::unitizerGlobal$new(enable.which = state.set, 325s + set.global = TRUE) 325s > unitizer:::search_path_trim(global = untz.glob) 325s > unitizer:::namespace_trim(global = untz.glob) 325s > untz.glob$state() 325s An object of class "unitizerGlobalIndices" 325s Slot "search.path": 325s [1] 2 325s 325s Slot "options": 325s [1] 1 325s 325s Slot "working.directory": 325s [1] 1 325s 325s Slot "random.seed": 325s [1] 1 325s 325s Slot "namespaces": 325s [1] 2 325s 325s > loadNamespace("unitizerdummypkg2", lib.loc = TMP.LIB) 325s 325s > untz.glob$state() 325s An object of class "unitizerGlobalIndices" 325s Slot "search.path": 325s [1] 3 325s 325s Slot "options": 325s [1] 1 325s 325s Slot "working.directory": 325s [1] 1 325s 325s Slot "random.seed": 325s [1] 1 325s 325s Slot "namespaces": 325s [1] 3 325s 325s > "unitizerdummypkg1" %in% loadedNamespaces() # FALSE 325s [1] FALSE 325s > "unitizerdummypkg2" %in% loadedNamespaces() 325s [1] TRUE 325s > untz.glob$resetFull() 325s An object of class "unitizerGlobalIndices" 325s Slot "search.path": 325s [1] 1 325s 325s Slot "options": 325s [1] 1 325s 325s Slot "working.directory": 325s [1] 1 325s 325s Slot "random.seed": 325s [1] 1 325s 325s Slot "namespaces": 325s [1] 1 325s 325s > untz.glob$release() 325s > "unitizerdummypkg1" %in% loadedNamespaces() 325s [1] TRUE 325s > "unitizerdummypkg2" %in% loadedNamespaces() # FALSE 325s [1] FALSE 325s > unloadNamespace("unitizerdummypkg1") 325s > 325s > # - "Prevent Namespace Unload Works" ------------------------------------------- 325s > 325s > old.opt <- options(unitizer.namespace.keep = "unitizerdummypkg1") 325s > loadNamespace("unitizerdummypkg1", lib.loc = TMP.LIB) 325s 325s > glb <- unitizer:::unitizerGlobal$new(set.global = TRUE) 325s > glb$status@options <- 2L 325s > unitizer:::unload_namespaces("unitizerdummypkg1", global = glb) 325s NULL 325s > glb$ns.opt.conflict@conflict 325s [1] TRUE 325s > glb$ns.opt.conflict@namespaces 325s [1] "unitizerdummypkg1" 325s > unloadNamespace("unitizerdummypkg1") 325s > options(old.opt) 325s > glb$release() 325s > 325s > # - "Generate unique names" ---------------------------------------------------- 325s > 325s > unitizer:::unitizerUniqueNames(list(search.path = c(goodbye = "0", 325s + hello = "1", goodbye = "2", goodbye = "3"))) 325s [1] "goodbye" "hello" "goodbye.1" "goodbye.2" 325s > 325s > # - "Fake Package Re-attach" --------------------------------------------------- 325s > 325s > # Make sure that aspects of search path management other than search path 325s > # survive a failure caused by bad search path env (#252, #253). 325s > 325s > owd <- getwd() 325s > test.f <- paste0(tempfile(), ".R") 325s > writeLines(" 325s + f <- tempfile() 325s + dir.create(f) 325s + setwd(f) 325s + # Package assumed non-existing; R could disallow this in the future 325s + # which could change the test. 325s + attach(list(x=42), name='package:adfaadcxuqyojfnkfadsf') 325s + 1 + 1", test.f) 325s > out <- unitizer:::capture_output( 325s + try(unitize(test.f, state='recommended', interactive.mode=FALSE)) 325s + ) 325s > any(grepl("mismatch between actual search path and tracked", out$message)) 325s [1] TRUE 325s > identical(owd, getwd()) # confirm working directory restored 325s [1] TRUE 325s > 325s > 325s PASS 325s Begin testing t-section.R 325s 325s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 325s Copyright (C) 2024 The R Foundation for Statistical Computing 325s Platform: arm-unknown-linux-gnueabihf (32-bit) 325s 325s R is free software and comes with ABSOLUTELY NO WARRANTY. 325s You are welcome to redistribute it under certain conditions. 325s Type 'license()' or 'licence()' for distribution details. 325s 325s R is a collaborative project with many contributors. 325s Type 'contributors()' for more information and 325s 'citation()' on how to cite R or R packages in publications. 325s 325s Type 'demo()' for some demos, 'help()' for on-line help, or 325s 'help.start()' for an HTML browser interface to help. 325s Type 'q()' to quit R. 325s 325s > source(file.path("_helper", "init.R")) 326s > 326s > expr.1 <- expression(1 + 1, b <- 5, matrix(integer(), nrow = b, 326s + ncol = b)) 326s > expr.2 <- { 326s + 1 + 1 326s + b <- 5 326s + matrix(integer(), nrow = b, ncol = b) 326s + } 326s > expr.3 <- quote(expression(1 + 1, b <- 5, matrix(integer(), nrow = b, 326s + ncol = b))) 326s > expr.4 <- quote({ 326s + 1 + 1 326s + b <- 5 326s + matrix(integer(), nrow = b, ncol = b) 326s + }) 326s > # - "simple tests" ------------------------------------------------------------- 326s > 326s > try(unitizer_sect(1:3)) 326s Error in unitizer_sect(1:3) : 326s Argument `title` must be a 1 length character vector. 326s > try(unitizer_sect(letters)) 326s Error in unitizer_sect(letters) : 326s Argument `title` must be a 1 length character vector. 326s > try(unitizer_sect("mytest", expr.1, 1:3)) 326s Error in unitizer_sect("mytest", expr.1, 1:3) : 326s Argument `details` must be character 326s > # note the following two produce error messages, but it's not actually an error, 326s > # it's just that there are multiple errors and `expect_error` only suppresses 326s > # the last one, not the preceding ones. 326s > try(unitizer_sect("mytest", expr.1, letters, letters)) 326s Error in unitizer_sect("mytest", expr.1, letters, letters) : 326s Argument `compare` must be "testFuns" or a function 326s > try(unitizer_sect("mytest", expr.1, letters, identity)) 326s Error in unitizer_sect("mytest", expr.1, letters, identity) : 326s Argument `compare`, if a function, must accept two arguments and require no more than two (does not have at least two arguments) 326s > try(unitizer_sect("mytest", expr.2)) 326s Error in unitizer_sect("mytest", expr.2) : 326s Argument `expr` must be an expression, or an unevaluated call that evaluates to an expression or `{`. 326s > try(unitizer_sect("mytest", matrix(1:9, nrow = 3))) 326s Error in unitizer_sect("mytest", matrix(1:9, nrow = 3)) : 326s Argument `expr` must be an expression, or an unevaluated call that evaluates to an expression or `{`. 326s > is(sect.1 <- unitizer_sect("mytest", expr.1), "unitizerSectionExpression") 326s [1] TRUE 326s > identical(unitizer:::as.expression(sect.1), expr.1) 326s [1] TRUE 326s > 326s > is(sect.2 <- unitizer_sect("mytest", { 326s + 1 + 1 326s + b <- 5 326s + matrix(integer(), nrow = b, ncol = b) 326s + }), "unitizerSectionExpression") 326s [1] TRUE 326s > identical(sect.1, sect.2) 326s [1] TRUE 326s > is(sect.3 <- unitizer_sect("mytest", expr.3), "unitizerSectionExpression") 326s [1] TRUE 326s > identical(sect.1, sect.3) 326s [1] TRUE 326s > is(sect.4 <- unitizer_sect("mytest", expr.4), "unitizerSectionExpression") 326s [1] TRUE 326s > identical(sect.1, sect.4) 326s [1] TRUE 326s > is(sect.5 <- unitizer_sect("mytest", expression(1 + 1, 326s + b <- 5, matrix(integer(), nrow = b, ncol = b))), "unitizerSectionExpression") 326s [1] TRUE 326s > identical(sect.1, sect.5) 326s [1] TRUE 326s > is(sect.1 <- unitizer_sect("mytest", expr.1, compare = identical), 326s + "unitizerSectionExpression") 326s [1] TRUE 326s > unitizer_sect("hello") # warn 326s Warning in unitizer_sect("hello") : `unitizer_sect` "hello" is empty. 326s NULL 326s > 326s > # - "Custom Comparison Functions" ---------------------------------------------- 326s > 326s > # Run expressions with different comparison functions 326s > set.seed(1) 326s > expr.1 <- expression(50 + runif(1)/10^10, message("Hello There", 326s + runif(1)), cat("Hello there", runif(1)), stop("Yo", runif(1))) 326s > expr.2 <- expression(50 + runif(1)/10^10, message("Hello There", 326s + runif(1)), cat("Hello there", runif(1)), stop("Yo", runif(1))) 326s > expr.3 <- expression(unitizer_sect("change comp funs", compare = identical, 326s + { 326s + 50 + runif(1)/10^10 326s + message("Hello There", runif(1)) 326s + cat("Hello there", runif(1)) 326s + stop("Yo", runif(1)) 326s + })) 326s > expr.4 <- expression( 326s + unitizer_sect( 326s + "change comp funs", 326s + compare = testFuns( 326s + value = identical, output = all.equal, message = all.equal, 326s + conditions = function(x, y) TRUE), 326s + { 326s + 50 + runif(1)/10^10 326s + message("Hello There", runif(1)) 326s + cat("Hello there", runif(1)) 326s + stop("Yo", runif(1)) 326s + })) 326s > my.unitizer <- new("unitizer", id = 1, zero.env = new.env()) 326s > coi(my.unitizer <- my.unitizer + expr.1) 326s > my.unitizer2 <- new("unitizer", id = 2, zero.env = new.env()) 326s > # make previous items into reference items 326s > coi(my.unitizer2 <- my.unitizer2 + my.unitizer@items.new) 326s > # now add back items to compare 326s > coi(my.unitizer2 <- my.unitizer2 + expr.2) 326s > my.unitizer3 <- new("unitizer", id = 3, zero.env = new.env()) 326s > # make previous items into reference items 326s > coi(my.unitizer3 <- my.unitizer3 + my.unitizer@items.new) 326s > # now add back items to compare 326s > coi(my.unitizer3 <- my.unitizer3 + expr.3) 326s > my.unitizer4 <- new("unitizer", id = 4, zero.env = new.env()) 326s > # make previous items into reference items 326s > coi(my.unitizer4 <- my.unitizer4 + my.unitizer@items.new) 326s > # now add back items to compare 326s > coi(my.unitizer4 <- my.unitizer4 + expr.4) 326s > 326s > my.unitizer2@tests.result 326s value conditions output message aborted 326s [1,] TRUE TRUE TRUE TRUE TRUE 326s [2,] TRUE FALSE TRUE TRUE TRUE 326s [3,] TRUE TRUE TRUE TRUE TRUE 326s [4,] TRUE FALSE TRUE TRUE TRUE 326s > my.unitizer3@tests.result 326s value conditions output message aborted 326s [1,] FALSE TRUE TRUE TRUE TRUE 326s [2,] TRUE FALSE TRUE TRUE TRUE 326s [3,] TRUE TRUE TRUE TRUE TRUE 326s [4,] TRUE FALSE TRUE TRUE TRUE 326s > my.unitizer4@tests.result 326s value conditions output message aborted 326s [1,] FALSE TRUE TRUE TRUE TRUE 326s [2,] TRUE TRUE TRUE FALSE TRUE 326s [3,] TRUE TRUE FALSE TRUE TRUE 326s [4,] TRUE TRUE TRUE FALSE TRUE 326s > 326s > 326s PASS 326s Begin testing t-shim.R 326s 326s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 326s Copyright (C) 2024 The R Foundation for Statistical Computing 326s Platform: arm-unknown-linux-gnueabihf (32-bit) 326s 326s R is free software and comes with ABSOLUTELY NO WARRANTY. 326s You are welcome to redistribute it under certain conditions. 326s Type 'license()' or 'licence()' for distribution details. 326s 326s R is a collaborative project with many contributors. 326s Type 'contributors()' for more information and 326s 'citation()' on how to cite R or R packages in publications. 326s 326s Type 'demo()' for some demos, 'help()' for on-line help, or 326s 'help.start()' for an HTML browser interface to help. 326s Type 'q()' to quit R. 326s 326s > source(file.path("aammrtf", "mock.R")) 326s > source(file.path("_helper", "init.R")) 327s > source(file.path("_helper", "pkgs.R")) 327s Install Packages 330s Setup Demos 330s > 330s > old.state <- tracingState(TRUE) 330s > 330s > # - "trace_at_end" ------------------------------------------------------------- 330s > 330s > if (is(unitizer:::trace_test_fun, "functionWithTrace")) 330s + untrace("trace_test_fun", where = asNamespace("unitizer")) 330s > unitizer:::trace_at_end("trace_test_fun", quote(if (!inherits(.res, 330s + "try-error")) cat(sprintf("x: %d\n", .res$value))), print = FALSE, 330s + where = asNamespace("unitizer")) 330s Tracing function "trace_test_fun" in package "namespace:unitizer" 330s > coi(unitizer:::trace_test_fun()) 330s > tracingState(FALSE) 330s [1] TRUE 330s > identical(capture.output(unitizer:::trace_test_fun()), character()) 330s [1] TRUE 330s > tracingState(TRUE) 330s [1] FALSE 330s > 330s > err <- try(unitizer:::trace_test_fun(stop("hello")), silent = TRUE) 330s > cond <- attr(err, "condition") 330s > conditionMessage(cond) 330s [1] "hello" 330s > conditionCall(cond) 330s unitizer:::trace_test_fun(stop("hello")) 330s > # return/missing etc. corner cases 330s > f <- function(x, y, z = 5) { 330s + if (missing(x)) { 330s + return(TRUE) 330s + } 330s + else if (z > 5) { 330s + stop("OMG, z > 5") 330s + } 330s + else if (identical(substitute(y), "hey")) { 330s + "substitute!" 330s + } 330s + else FALSE 330s + } 330s > unitizer:::trace_at_end("f", quote(cat("hello\n")), FALSE, environment()) 330s > res <- f() 330s hello 330s > res 330s [1] TRUE 330s > res2 <- f(1) 330s hello 330s > res2 # FALSE 330s [1] FALSE 330s > err <- try(f(1, z = 6), silent = TRUE) 330s hello 330s > is(err, "try-error") 330s [1] TRUE 330s > attr(err, "condition") 330s 5> 330s > res3 <- f(1, y = "hey") 330s hello 330s > res3 330s [1] "substitute!" 330s > 330s > # - "Parent Env Stays on Top" -------------------------------------------------- 330s > 330s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 330s > while ("unitizer.dummy.list" %in% search()) try(detach("unitizer.dummy.list")) 330s > unitizer.dummy.list <- list(z = 23, x = 1, y = "hello") 330s > my.env <- new.env() 330s > state.set <- c(search.path = 2L) 330s > # make sure to unset this at end 330s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 330s + enable.which = state.set, set.global = TRUE) 330s > untz.glob$shimFuns() 330s [1] TRUE 330s > sp <- search() 330s > curr2 <- sp[[2L]] 330s > 330s > 330s > identical(environmentName(parent.env(my.env)), curr2) 330s [1] TRUE 330s > library("unitizerdummypkg1", lib.loc = TMP.LIB) 330s > identical(environmentName(parent.env(my.env)), "package:unitizerdummypkg1") 330s [1] TRUE 330s > attach(unitizer.dummy.list) 331s > identical(environmentName(parent.env(my.env)), "unitizer.dummy.list") 331s [1] TRUE 331s > detach("unitizer.dummy.list") 331s > identical(environmentName(parent.env(my.env)), "package:unitizerdummypkg1") 331s [1] TRUE 331s > detach("package:unitizerdummypkg1", unload = TRUE) 331s > identical(environmentName(parent.env(my.env)), curr2) 331s [1] TRUE 331s > untz.glob$checkShims() 331s [1] TRUE 331s > 331s > # - "Parent env tracking with search path manip" ------------------------------- 331s > 331s > untz.glob$state() 331s An object of class "unitizerGlobalIndices" 331s Slot "search.path": 331s [1] 1 331s 331s Slot "options": 331s [1] 0 331s 331s Slot "working.directory": 331s [1] 0 331s 331s Slot "random.seed": 331s [1] 0 331s 331s Slot "namespaces": 331s [1] 0 331s 331s > keep.more <- c(getOption("unitizer.search.path.keep.base")) 331s > unitizer:::search_path_trim(keep.more, global = untz.glob) 331s > untz.glob$state() 331s An object of class "unitizerGlobalIndices" 331s Slot "search.path": 331s [1] 1 331s 331s Slot "options": 331s [1] 0 331s 331s Slot "working.directory": 331s [1] 0 331s 331s Slot "random.seed": 331s [1] 0 331s 331s Slot "namespaces": 331s [1] 0 331s 331s > identical(environmentName(parent.env(my.env)), search()[[2L]]) 331s [1] TRUE 331s > untz.glob$resetFull() 331s An object of class "unitizerGlobalIndices" 331s Slot "search.path": 331s [1] 1 331s 331s Slot "options": 331s [1] 1 331s 331s Slot "working.directory": 331s [1] 1 331s 331s Slot "random.seed": 331s [1] 1 331s 331s Slot "namespaces": 331s [1] 1 331s 331s > identical(environmentName(parent.env(my.env)), curr2) 331s [1] TRUE 331s > 331s > # - "Disable Unshims, etc." ---------------------------------------------------- 331s > 331s > untz.glob$unshimFuns() 331s [1] TRUE 331s > !any(vapply(list(library, detach, attach), inherits, logical(1L), 331s + "functionWithTrace")) 331s [1] TRUE 331s > untz.glob$release() 331s > 331s > # - "Checks, errors, etc." ----------------------------------------------------- 331s > 331s > # make sure to unset this at end 331s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 331s + enable.which = state.set, set.global = TRUE) 331s > tracingState(FALSE) 331s [1] TRUE 331s > untz.glob$shimFuns() # warning 331s Warning in untz.glob$shimFuns() : 331s Unable to shim required functions to run with `par.env=NULL` because tracing state is FALSE. Setting `par.env=.GlobalEnv`. 331s [1] FALSE 331s > parent.env(my.env) 331s 331s > tracingState(TRUE) 331s [1] FALSE 331s > untz.glob$release() 331s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 331s + set.global = TRUE) 331s > trace("library", quote(cat("I am traced\n")), where = .BaseNamespaceEnv) 331s Tracing function "library" in package "namespace:base" 331s [1] "library" 331s > lib.trace <- library 331s > untz.glob$shimFuns() # warning 331s Warning in untz.glob$shimFuns() : 331s Unable to shim required functions to run with `par.env=NULL` because they are already traced. Setting `par.env=.GlobalEnv`. 331s [1] FALSE 331s > parent.env(my.env) 331s 331s > inherits(attach, "functionWithTrace") # FALSE 331s [1] FALSE 331s > inherits(detach, "functionWithTrace") # FALSE 331s [1] FALSE 331s > inherits(library, "functionWithTrace") 331s [1] TRUE 331s > identical(lib.trace, library) 331s [1] TRUE 331s > untrace("library", where = .BaseNamespaceEnv) 331s Untracing function "library" in package "namespace:base" 331s > untz.glob$release() 331s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 331s + set.global = TRUE) 331s > untz.glob$shimFuns() 331s [1] TRUE 331s > trace("attach", quote(cat("I am traced\n")), where = .BaseNamespaceEnv) 331s Tracing function "attach" in package "namespace:base" 331s [1] "attach" 331s > attach.trace <- attach 331s > untz.glob$checkShims() # warning 331s Warning in untz.glob$checkShims() : 331s Traced functions unexpectedly changed, disabling clean parent env 331s Warning in unshimFuns() : 331s `attach` was not untraced because they were modified by something other than unitizer. 331s `FALSE`, `TRUE`, and `FALSE` were not untraced for unknown reasons; please report to maintainer. 331s 331s you should consider manually untracing the function, or restarting your R session to restore function to original value. 331s [1] FALSE 331s > parent.env(my.env) 331s 331s > inherits(detach, "functionWithTrace") # FALSE 331s [1] FALSE 331s > inherits(library, "functionWithTrace") # FALSE 331s [1] FALSE 331s > inherits(attach, "functionWithTrace") 331s [1] TRUE 331s > identical(attach.trace, attach) 331s [1] TRUE 331s > untrace("attach", where = .BaseNamespaceEnv) 331s Untracing function "attach" in package "namespace:base" 331s > untz.glob$release() 331s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, 331s + set.global = TRUE) 331s > untz.glob$shimFuns() 331s [1] TRUE 331s > tracingState(FALSE) 331s [1] TRUE 331s > untz.glob$checkShims() # warning 331s Warning in untz.glob$checkShims() : 331s Tracing state off, so disabling clean parent env 331s [1] FALSE 331s > parent.env(my.env) 331s 331s > tracingState(TRUE) 331s [1] FALSE 331s > inherits(detach, "functionWithTrace") # FALSE 331s [1] FALSE 331s > inherits(library, "functionWithTrace") # FALSE 331s [1] FALSE 331s > inherits(attach, "functionWithTrace") # FALSE 331s [1] FALSE 331s > # try tracing some stuff that shouldn't be 331s > untz.glob$shimFuns("baljevzxhjLsdc") # Warning 331s Warning in untz.glob$shimFuns("baljevzxhjLsdc") : 331s Unable to shim required functions to run with `par.env=NULL` because some cannot be found. Setting `par.env=.GlobalEnv`. 331s [1] FALSE 331s > # test unexpected message or behavior from `trace_at_end` 331s > try(untz.glob$shimFun("sum")) 331s Error in untz.glob$shimFun("sum") : Internal Error: missing shim data 331s > 331s > mock(unitizer:::trace_at_end, quote(stop("trace_at_end fail"))) 331s > any( 331s + grepl( 331s + "trace_at_end fail", 331s + capture.output( 331s + trace.fail <- untz.glob$shimFun("library"), type = "message" 331s + ), 331s + fixed = TRUE 331s + ) 331s + ) 331s [1] TRUE 331s > unmock(unitizer:::trace_at_end) 331s > 331s > trace.fail # FALSE 331s [1] FALSE 331s > mock(unitizer:::trace_at_end, quote(message("random message"))) 331s > untz.glob$shimFun("library") 331s random message 331s Warning in untz.glob$shimFun("library") : 331s Function `library` was not traced even though tracing attempt did not produce errors. 331s [1] FALSE 331s > unmock(unitizer:::trace_at_end) 331s > 331s > mock(unitizer:::trace_at_end, quote(TRUE)) 331s > dont.trace <- untz.glob$shimFun("library") # Warning "not traced" 331s Warning in untz.glob$shimFun("library") : 331s Function `library` was not traced even though tracing attempt did not produce errors. 331s > unmock(unitizer:::trace_at_end) 331s > 331s > dont.trace # FALSE 331s [1] FALSE 331s > untz.glob$release() 331s > # untrace condition 331s > untz.glob <- unitizer:::unitizerGlobal$new(par.env = my.env, set.global = TRUE) 331s > untz.glob$shimFuns() 331s [1] TRUE 331s > 331s > mock( 331s + unitizer:::untrace_utz, 331s + quote({ 331s + message("untrace dummy") 331s + base::untrace(what = what, signature = signature, where = where) 331s + }) 331s + ) 331s > untz.glob$unshimFuns() # message untrace dummy 331s untrace dummy 331s untrace dummy 331s untrace dummy 331s [1] TRUE 331s > unmock(unitizer:::untrace_utz) 331s > untz.glob$release() 331s > 331s > try(detach("package:unitizerdummypkg1", unload = TRUE), silent = TRUE) 331s > 331s > while ("unitizer.dummy.list" %in% search()) try(detach("unitizer.dummy.list")) 331s > 331s > # - "find_returns" ------------------------------------------------------------- 331s > 331s > fun <- function() { 331s + if (TRUE) 331s + return(1) 331s + else { 331s + { 331s + 2 + 2 331s + identity(c(1, 2, return(3), { 331s + list(1, 2, 5) 331s + return(return(4)) 331s + })) 331s + return(5) 331s + } 331s + return(6) 331s + } 331s + if (TRUE) 331s + return(7) 331s + else return(8) 331s + return(9) 331s + return(10) 331s + } 331s > ret.loc <- unitizer:::find_returns(fun) 331s > ret.loc 331s [[1]] 331s [1] 2 3 331s 331s [[2]] 331s [1] 2 4 2 3 2 4 331s 331s [[3]] 331s [1] 2 4 2 3 2 5 3 331s 331s [[4]] 331s [1] 2 4 2 4 331s 331s [[5]] 331s [1] 2 4 3 331s 331s [[6]] 331s [1] 3 3 331s 331s [[7]] 331s [1] 3 4 331s 331s [[8]] 331s [1] 4 331s 331s [[9]] 331s [1] 5 331s 331s > 331s > # Validate visually that this worked 331s > 331s > all(vapply(unitizer:::get_returns(fun, ret.loc), function(x) x[[1L]] == 331s + quote(return), logical(1L))) 331s [1] TRUE 331s > 331s > 331s PASS 331s Begin testing t-state.R 331s 331s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 331s Copyright (C) 2024 The R Foundation for Statistical Computing 331s Platform: arm-unknown-linux-gnueabihf (32-bit) 331s 331s R is free software and comes with ABSOLUTELY NO WARRANTY. 331s You are welcome to redistribute it under certain conditions. 331s Type 'license()' or 'licence()' for distribution details. 331s 331s R is a collaborative project with many contributors. 331s Type 'contributors()' for more information and 331s 'citation()' on how to cite R or R packages in publications. 331s 331s Type 'demo()' for some demos, 'help()' for on-line help, or 331s 'help.start()' for an HTML browser interface to help. 331s Type 'q()' to quit R. 331s 331s > source(file.path("_helper", "init.R")) 332s > 332s > options(unitizer.color = FALSE, width = 80L) 332s > 332s > # - "Random Seed" -------------------------------------------------------------- 332s > 332s > old.seed <- if (!exists(".Random.seed")) NULL else .Random.seed 332s > seed.dat <- getOption("unitizer.seed") 332s > 332s > suppressWarnings( 332s + untz.glob <- 332s + unitizer:::unitizerGlobal$new(enable.which = setNames(2L, "random.seed")) 332s + ) 332s > do.call(set.seed, seed.dat) 332s > new.seed <- .Random.seed 332s > state <- untz.glob$state() 332s > invisible(runif(10)) # see if we can reset state after this 332s > untz.glob$reset(state) 332s An object of class "unitizerGlobalIndices" 332s Slot "search.path": 332s [1] 0 332s 332s Slot "options": 332s [1] 0 332s 332s Slot "working.directory": 332s [1] 0 332s 332s Slot "random.seed": 332s [1] 2 332s 332s Slot "namespaces": 332s [1] 0 332s 332s > identical(.Random.seed, new.seed) 332s [1] TRUE 332s > untz.glob$resetFull() 332s An object of class "unitizerGlobalIndices" 332s Slot "search.path": 332s [1] 1 332s 332s Slot "options": 332s [1] 1 332s 332s Slot "working.directory": 332s [1] 1 332s 332s Slot "random.seed": 332s [1] 1 332s 332s Slot "namespaces": 332s [1] 1 332s 332s > 332s > if (is.null(old.seed)) { 332s + !isTRUE(exists(".Random.seed")) 332s + } else identical(old.seed, .Random.seed) 332s [1] TRUE 332s > 332s > # - "State Show" --------------------------------------------------------------- 332s > 332s > show(unitizer:::unitizerStatePristine()) 332s Settings Values 332s 1 par.env 332s 2 search.path 2 332s 3 options 2 332s 4 working.directory 2 332s 5 random.seed 2 332s 6 namespaces 2 332s ----- 332s 0: off 332s 1: track starting with initial state 332s 2: track starting with clean state 332s : use special unitizer environment as 'par.env' 332s See `?unitizerState` for more details. 332s > 332s > # - "all.equal.unitizerDummy" -------------------------------------------------- 332s > 332s > dummy <- new("unitizerDummy") 332s > blah <- "hello" 332s > ref.txt <- "`.REF` value was not recorded, but `.NEW` value was; they are likely different" 332s > identical(all.equal(dummy, blah), ref.txt) 332s [1] TRUE 332s > all.equal(dummy, dummy) 332s [1] TRUE 332s > identical( 332s + all.equal(blah, dummy), 332s + "`.NEW` value was not recorded, but `.REF` value was; they are likely different" 332s + ) 332s [1] TRUE 332s > # testing S4 / S3 methods, first works, second doesn't since we can't 332s > # have an S3 generic with dispatch on 2nd arg 332s > 332s > identical( 332s + evalq(all.equal(new("unitizerDummy"), "hello"), getNamespace("stats")), 332s + ref.txt 332s + ) 332s [1] TRUE 332s > evalq(all.equal("hello", new("unitizerDummy")), getNamespace("stats")) 332s [1] "Modes: character, S4" 332s [2] "Attributes: < target is NULL, current is list >" 332s [3] "target is character, current is unitizerDummy" 332s > 332s > # - "All Equal States" --------------------------------------------------------- 332s > 332s > # Doesn't seem like we're comparing these to anything? Maybe should look into 332s > # doing so? 332s > 332s > state.A <- new("unitizerGlobalState", search.path = letters[1:3], 332s + options = list(a = 5:7, b = new("unitizerDummy"), c = "hello"), 332s + working.directory = "a/b/c") 332s > state.B <- new("unitizerGlobalState", search.path = letters[1:3], 332s + options = list(a = 5:7, b = new("unitizerDummy"), d = "goodbye", 332s + c = new("unitizerDummy")), working.directory = new("unitizerDummy"), 332s + random.seed = 1:3) 332s > state.C <- new("unitizerGlobalState", search.path = letters, 332s + options = list(a = list(5, 6, 7), c = LETTERS), working.directory = new("unitizerDummy"), 332s + random.seed = 1:3) 332s > # just compare to A 332s > state.D <- new("unitizerGlobalState", search.path = letters[1:3], 332s + options = list(a = list(1, 2, 3), b = new("unitizerDummy"), 332s + c = "hello"), working.directory = "a/b/c") 332s > state.E <- new("unitizerGlobalState", options = setNames(as.list(1:20), 332s + head(letters, 20))) 332s > state.F <- new("unitizerGlobalState", options = setNames(as.list(1:20), 332s + tail(letters, 20))) 332s > # This one is supposed to return something non-character or TRUE when used 332s > # with the provided all.equal 332s > state.G <- new("unitizerGlobalState", options = list(a = structure(TRUE, 332s + class = "unitizer_glob_state_test"), b = 0)) 332s > state.H <- new("unitizerGlobalState", options = list(a = structure(FALSE, 332s + class = "unitizer_glob_state_test"), b = 2)) 332s > 332s > # - "as.state" ----------------------------------------------------------------- 332s > 332s > identical( 332s + unitizer:::as.state("recommended"), 332s + unitizer:::as.state(unitizer:::unitizerStateSuggested()) 332s + ) 332s [1] TRUE 332s > identical( 332s + unitizer:::as.state("suggested"), 332s + unitizer:::as.state(unitizer:::unitizerStateSuggested()) 332s + ) 332s [1] TRUE 332s > identical( 332s + unitizer:::as.state("pristine"), 332s + unitizer:::as.state(unitizer:::unitizerStatePristine()) 332s + ) 332s [1] TRUE 332s > 332s > # unitizerStateProcessed should produce the default object (which currently 332s > # is "off") 332s > 332s > all.equal( 332s + unitizer:::as.state(.GlobalEnv), 332s + unitizer:::as.state(unitizer:::unitizerStateSuggested(par.env = .GlobalEnv)) 332s + ) 332s [1] TRUE 332s > all.equal( 332s + unitizer:::as.state(in_pkg("stats")), 332s + unitizer:::as.state( 332s + unitizer:::unitizerStateSuggested(par.env = getNamespace("stats")) 332s + ) ) 332s [1] TRUE 332s > 332s > stats.lib <- file.path(system.file(package = "stats"), "R") 332s > all.equal( 332s + unitizer:::as.state(in_pkg(), test.files = stats.lib), 332s + unitizer:::as.state( 332s + unitizer:::unitizerStateSuggested(par.env = getNamespace("stats")) 332s + ) ) 332s [1] TRUE 332s > try(unitizer:::as.state(200)) 332s Error in as.state_raw(x) : 332s Argument `x` must be character(1L) %in% c("pristine", "recommended", "suggested" 332s , "basic", "off", "safe"), NULL, an environment, or must inherit from S4 classes 332s `unitizerStateRaw`, `unitizerStateProcessed` or `unitizerInPkg` in order to be 332s interpreted as a unitizer state object. 332s > state <- unitizer:::unitizerStateOff() 332s > # bypass validity method 332s > state@options <- 2L 332s > try(validObject(state)) 332s Error in validObject(state) : 332s invalid class "unitizerStateOff" object: Argument `state` is an invalid state: 'options' is set to 2, but 'search.path' and 'namespaces' are not 332s > # state raw conversions 332s > identical( 332s + unitizer:::as.state(unitizer:::unitizerStateRaw()), 332s + unitizer:::unitizerStateProcessed() 332s + ) 332s [1] TRUE 332s > identical( 332s + unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = "stats")), 332s + unitizer:::unitizerStateProcessed(par.env = getNamespace("stats")) 332s + ) 332s [1] TRUE 332s > state@options <- 0L 332s > state.proc <- unitizer:::as.unitizerStateProcessed(state) 332s > state.raw <- unitizer:::as.unitizerStateRaw(state.proc) 332s > is(state.raw, "unitizerStateRaw") 332s [1] TRUE 332s > all.equal( 332s + lapply(slotNames(state), slot, object = state.proc), 332s + lapply(slotNames(state.raw), slot, object = state.raw) 332s + ) 332s [1] TRUE 332s > try(unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = in_pkg()))) 332s Error in in_pkg_to_env(x.raw@par.env, test.files) : 332s Unable to detect package to use namespace of as parent environment; see `? 332s unitizerState` for how to specify a package namespace explicitly as a parent 332s environment. 332s Error in unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = in_pkg())) : 332s Unable to convert `par.env` value to a namespace environment 332s > 332s > identical( 332s + unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = in_pkg("stats"))), 332s + unitizer:::unitizerStateProcessed(par.env = getNamespace("stats")) 332s + ) 332s [1] TRUE 332s > try( 332s + unitizer:::as.state( 332s + unitizer:::unitizerStateRaw(par.env = in_pkg("asdfalkdfasd")) 332s + ) ) 332s Error in loadNamespace(name) : there is no package called 'asdfalkdfasd' 332s Error in in_pkg_to_env(x.raw@par.env, test.files) : 332s Unable to load "asdfalkdfasd" namespace to use as parent environment; see 332s `?unitizerState` for instructions on how to specify a package namespace as a 332s parent environment for tests. 332s Error in unitizer:::as.state(unitizer:::unitizerStateRaw(par.env = in_pkg("asdfalkdfasd"))) : 332s Unable to convert `par.env` value to a namespace environment 332s > try( 332s + unitizer:::as.state( 332s + unitizer:::unitizerStateRaw(par.env = in_pkg("")), test.files = getwd() 332s + ) ) 332s Error in in_pkg("") : Argument `package` may not be an empty string 332s > # impossible states 332s > state.obj <- unitizer:::unitizerStateRaw() 332s > state.obj@options <- 2L 332s > try(unitizer:::as.state(state.obj)) 332s Error in unitizer:::as.state(state.obj) : 332s Options state tracking (2) must be less than namespace state tracking (0). 332s > state.obj@namespaces <- 2L 332s > state.obj@search.path <- 1L 332s > try(unitizer:::as.state(state.obj)) 332s Error in unitizer:::as.state(state.obj) : 332s Namespace state tracking (2) must be less than or equal to search path state 332s tracking (1). 332s > 332s > # - "as.state_raw" ------------------------------------------------------------- 332s > 332s > old.opt.loc <- options(unitizer.state = .GlobalEnv) 332s > try(unitizer:::as.state_raw(.GlobalEnv)) 332s Error in unitizer:::as.state_raw(.GlobalEnv) : 332s 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. 332s > options(unitizer.state = 42L) 332s > try(unitizer:::as.state_raw(.GlobalEnv)) 332s Error in unitizer:::as.state_raw(.GlobalEnv) : 332s `getOption('unitizer.state')` must be character(1L) %in% c("pristine", "recom- 332s mended", "suggested", "basic", "off", "safe"), NULL, an environment, or must 332s inherit from S4 classes `unitizerStateRaw`, `unitizerStateProcessed` or ` 332s unitizerInPkg` in order to be interpreted as a unitizer state object. 332s > state.raw <- unitizer:::as.unitizerStateRaw(unitizer:::unitizerStateOff()) 332s > state.proc <- unitizer:::as.unitizerStateProcessed(state.raw) 332s > my.env <- new.env() 332s > options(unitizer.state = state.raw) 332s > state.raw@par.env <- my.env 332s > all.equal(unitizer:::as.state_raw(my.env), state.raw) 332s [1] TRUE 332s > options(unitizer.state = state.proc) 332s > my.env <- new.env() 332s > state.proc@par.env <- my.env 332s > all.equal( 332s + unitizer:::as.state_raw(my.env), 332s + unitizer:::as.unitizerStateRaw(state.proc) 332s + ) 332s [1] TRUE 332s > options(old.opt.loc) 332s > 332s > # - "state" -------------------------------------------------------------------- 332s > 332s > # all these assume we set the options to be in recommended mode 332s > 332s > all.equal(state("stats"), unitizer:::unitizerStateSuggested(par.env = "stats")) 332s [1] TRUE 332s > 332s > all.equal( 332s + state(in_pkg("stats")), 332s + unitizer:::unitizerStateSuggested(par.env = in_pkg("stats")) 332s + ) 332s [1] TRUE 332s > all.equal( 332s + state(in_pkg()), unitizer:::unitizerStateSuggested(par.env = in_pkg()) 332s + ) 332s [1] TRUE 332s > all.equal( 332s + state(search.path = 1), unitizer:::unitizerStateSuggested(search.path = 1L) 332s + ) 332s [1] TRUE 332s > s1 <- unitizer:::unitizerStateSuggested(par.env = .GlobalEnv) 332s > for (i in setdiff(slotNames(s1), "par.env")) slot(s1, i) <- 0L 332s > s2 <- unitizer:::unitizerStateOff() 332s > all.equal(s1, s2) 332s [1] TRUE 332s > # invalid state 332s > try(state(search.path = 3)) 332s Error in state(search.path = 3) : 332s Argument `search.path` must be integer(1L) in 0:2 332s > try(state(options = 2, namespaces = 1)) 332s Error in state(options = 2, namespaces = 1) : 332s Unable to create valid `unitizerStateRaw` object: Argument `state` is an invalid state: 'options' is set to 2, but 'search.path' and 'namespaces' are not 332s > try(state(namespaces = 2, search.path = 1)) 332s Error in state(namespaces = 2, search.path = 1) : 332s Unable to create valid `unitizerStateRaw` object: Argument `state` is an invalid state: 'namespaces' is set to 2, but 'search.path' is not 332s > state.inv <- unitizer:::unitizerStateProcessed() 332s > state.inv@options <- 2L 332s > try(unitizer:::as.state(state.inv)) 332s Error in unitizer:::as.state(state.inv) : 332s Options state tracking (2) must be less than namespace state tracking (0). 332s > state.inv@namespaces <- 2L 332s > try(unitizer:::as.state(state.inv)) 332s Error in unitizer:::as.state(state.inv) : 332s Namespace state tracking (2) must be less than or equal to search path state 332s tracking (0). 332s > # captured 332s > any(grepl("", capture.output(show(state(in_pkg()))))) 332s [1] TRUE 332s > any(grepl("", capture.output(show(state(in_pkg("stats")))))) 332s [1] TRUE 332s > any(grepl("namespace:stats", capture.output(show(state(asNamespace("stats")))))) 332s [1] TRUE 332s > 332s > # - "in_pkg" ------------------------------------------------------------------- 332s > 332s > try(in_pkg("")) 332s Error in in_pkg("") : Argument `package` may not be an empty string 332s > identical(as.character(in_pkg()), "") 332s [1] TRUE 332s > identical(as.character(in_pkg("stats")), "") 332s [1] TRUE 332s > identical(capture.output(show(in_pkg())), "") 332s [1] TRUE 332s > try(unitizer:::in_pkg_to_env(in_pkg(), "/")) 332s Error in unitizer:::in_pkg_to_env(in_pkg(), "/") : 332s Unable to detect package to use namespace of as parent environment; see `? 332s unitizerState` for how to specify a package namespace explicitly as a parent 332s environment. 332s > 332s > # - "merge states" ------------------------------------------------------------- 332s > 332s > trk.new <- new("unitizerGlobalTrackingStore", search.path = list(1, 332s + 2, 3), options = list("a", "b")) 332s > trk.ref <- new("unitizerGlobalTrackingStore", search.path = list(4, 332s + 5, 6), options = list("c", "d")) 332s > items <- new("unitizerItems") 332s > items <- items + new("unitizerItem", call = quote(1 + 1), glob.indices = new("unitizerGlobalIndices", 332s + search.path = 1L, options = 2L)) 332s > items <- items + new("unitizerItem", call = quote(2 + 1), glob.indices = new("unitizerGlobalIndices", 332s + search.path = 2L, options = 1L)) 332s > items <- items + new("unitizerItem", call = quote(1 * 1), reference = TRUE, 332s + glob.indices = new("unitizerGlobalIndices", search.path = 1L, 332s + options = 1L)) 332s > items <- items + new("unitizerItem", call = quote(2 * 1), reference = TRUE, 332s + glob.indices = new("unitizerGlobalIndices", search.path = 3L, 332s + options = 2L)) 332s > res <- unitizer:::mergeStates(items, trk.new, trk.ref) 332s > 332s > sapply(res$items, function(x) as.integer(slot(x, "glob.indices"))) 332s [,1] [,2] [,3] [,4] 332s search.path 1 2 4 5 332s options 2 1 3 4 332s working.directory 0 0 0 0 332s random.seed 0 0 0 0 332s namespaces 0 0 0 0 332s > s.n.to.check <- c("search.path", "options", "working.directory", 332s + "random.seed", "namespaces") 332s > sapply(s.n.to.check, slot, object = res$states) 332s $search.path 332s $search.path[[1]] 332s [1] 1 332s 332s $search.path[[2]] 332s [1] 2 332s 332s $search.path[[3]] 332s [1] 3 332s 332s $search.path[[4]] 332s [1] 4 332s 332s $search.path[[5]] 332s [1] 6 332s 332s 332s $options 332s $options[[1]] 332s [1] "a" 332s 332s $options[[2]] 332s [1] "b" 332s 332s $options[[3]] 332s [1] "c" 332s 332s $options[[4]] 332s [1] "d" 332s 332s 332s $working.directory 332s list() 332s 332s $random.seed 332s list() 332s 332s $namespaces 332s list() 332s 332s > # No reference items 332s > items.no.ref <- items[1:2] 332s > identical( 332s + unitizer:::mergeStates(items.no.ref, trk.new, trk.ref), 332s + list(items = items.no.ref, states = trk.new) 332s + ) 332s [1] TRUE 332s > # No new items; note that we only remap the used states to the new state 332s > # which is why we need all the .mod objects 332s > 332s > items.no.new <- items[3:4] 332s > items.no.new.mod <- items.no.new 332s > items.no.new.mod[[2L]]@glob.indices@search.path <- 2L 332s > trk.ref.mod <- trk.ref 332s > trk.ref.mod@search.path[[2L]] <- NULL 332s > 332s > identical( 332s + unitizer:::mergeStates( 332s + items.no.new, new("unitizerGlobalTrackingStore"),trk.ref 332s + ), 332s + list(items = items.no.new.mod, states = trk.ref.mod) 332s + ) 332s [1] TRUE 332s > 332s > 332s PASS 332s Begin testing t-text.R 332s 332s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 332s Copyright (C) 2024 The R Foundation for Statistical Computing 332s Platform: arm-unknown-linux-gnueabihf (32-bit) 332s 332s R is free software and comes with ABSOLUTELY NO WARRANTY. 332s You are welcome to redistribute it under certain conditions. 332s Type 'license()' or 'licence()' for distribution details. 332s 332s R is a collaborative project with many contributors. 332s Type 'contributors()' for more information and 332s 'citation()' on how to cite R or R packages in publications. 332s 332s Type 'demo()' for some demos, 'help()' for on-line help, or 332s 'help.start()' for an HTML browser interface to help. 332s Type 'q()' to quit R. 332s 332s > source(file.path("_helper", "init.R")) 332s > 332s > # - "cap_first" ---------------------------------------------------------------- 332s > 332s > set.seed(1, "Mersenne-Twister") 332s > words <- replicate(2, paste0(sample(letters, 5), collapse = "")) 333s > WORDS <- toupper(words) 333s > 333s > unitizer:::cap_first(c("", letters[1:2], letters[25:26], words, WORDS)) 333s [1] "" "A" "B" "Y" "Z" "Gjnue" "Xzpob" "GJNUE" "XZPOB" 333s > 333s > unitizer:::decap_first(c("", letters[1:2], letters[25:26], words, WORDS)) 333s [1] "" "a" "b" "y" "z" "gjnue" "xzpob" "gJNUE" "xZPOB" 333s > 333s > # - "header" ------------------------------------------------------------------- 333s > 333s > try(unitizer:::header("hello world", letters)) 333s Error in unitizer:::header("hello world", letters) : 333s Argument `level` must be 1 length integer-like and in 1:3 333s > try(unitizer:::header(letters, 1)) 333s Error in unitizer:::header(letters, 1) : 333s Argument `x` must be a one length character vector 333s > 333s > # - "word_wrap" ---------------------------------------------------------------- 333s > 333s > 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?" 333s > lorem2 <- "/Volumes/FIXED/folder1/folder2/folder.2345/folderabac/file.text.batch" 333s > lorem3 <- "\"untz.state.test\", \"add.smooth\", \"bitmapType\", \"browser\", \"browserNLdisabled\", \"CBoundsCheck\", \"check.bounds\", \"citation.bibtex.max\", \"continue\", \"contrasts\"" 333s > range(nchar(head(unitizer:::word_wrap(lorem1, 25L), -1L))) 333s [1] 18 25 333s > t.rn <- range(nchar(head(unitizer:::word_wrap(lorem1, 25L, 3L), 333s + -1L))) 333s > # for some reason can't get test to produce same thing in windows when 333s > # running all tests vs. single one at the prompt; the > 20 is a cop-out that 333s > # should catch both the expected case (23) and what actually happens when 333s > # you run the tests on windows 333s > # expect_true(min(t.rn) > 20 && max(t.rn) <= 25) 333s > min(t.rn) > 20 && max(t.rn) <= 25 333s [1] TRUE 333s > 333s > unitizer:::word_wrap(substr(lorem1, 1, 147), 45L, 3L) 333s [1] "Today, with Kiernan on the stand offering co-" 333s [2] "nfirmation, Howard walked the jury through " 333s [3] "the enormous amount of data pulled from Ulb-" 333s [4] "richt's computer." 333s > unitizer:::word_wrap(substr(lorem1, 1, 147), 45L, 3L, FALSE) 333s [1] "Today, with Kiernan on the stand offering con" 333s [2] "firmation, Howard walked the jury through the" 333s [3] "enormous amount of data pulled from Ulbricht'" 333s [4] "s computer." 333s > unitizer:::word_wrap(lorem2, 15L, 3L) 333s [1] "/Volumes/FIXED/" "folder1/fol-" "der2/folder.23-" "45/folderabac/" 333s [5] "file.text.batch" 333s > unitizer:::word_wrap(lorem2, 15L, 8L) 333s [1] "/Volumes/FIXED/" "folder1/" "folder2/folder." "2345/fol-" 333s [5] "derabac/file." "text.batch" 333s > 333s > unitizer:::word_wrap(lorem3, 76L, 8L) 333s [1] "\"untz.state.test\", \"add.smooth\", \"bitmapType\", \"browser\", \"browserNLdisab-" 333s [2] "led\", \"CBoundsCheck\", \"check.bounds\", \"citation.bibtex.max\", \"continue\", " 333s [3] "\"contrasts\"" 333s > unitizer:::word_wrap("hello sunset \nthere moonrise", width = 12L) 333s [1] "hello sunset" "there " "moonrise" 333s > 333s > 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") 333s > 333s > unitizer:::word_wrap(x1, unlist = FALSE, width = 80L) 333s [[1]] 333s [1] "this is supposed to be a particularly long string" 333s [2] "that allows us to test the behavior of bullets once we start seeing" 333s [3] "some wrapping kicking in which was a problem once upon a time" 333s 333s > com <- "# this is supposed to be a relatively long comment that will get re-flowed" 333s > old.opt <- options(crayon.enabled = FALSE) 333s > unitizer:::word_comment(com, width = 30L) 333s [1] "# this is supposed to be a " "#relatively long comment that " 333s [3] "#will get re-flowed" 333s > unitizer:::word_wrap(c("\nhello\nthere", "\nhow")) 333s [1] "" "hello" "there" "" "how" 333s > # too narrow 333s > no.wrap <- "hello I won't be wrapped" 333s > unitizer:::word_wrap(no.wrap, width = 3) # warning 333s Warning in unitizer:::word_wrap(no.wrap, width = 3) : 333s Display width too narrow to properly wrap text; setting to 80L 333s [1] "hello I won't be wrapped" 333s > options(old.opt) 333s > 333s > # - "bullets" ------------------------------------------------------------------ 333s > 333s > x <- c("there was once a time when the fantastic unicorns could fly", 333s + "bugs bunny ate carrots and drank milk while hunting ducks") 333s > xx <- unitizer:::UL(x) 333s > 333s > as.character(xx, width = 30L) 333s [1] "- there was once a time when " " the fantastic unicorns could" 333s [3] " fly" "- bugs bunny ate carrots and " 333s [5] " drank milk while hunting " " ducks" 333s > print(xx, width = 80L) 333s - there was once a time when the fantastic unicorns could fly 333s - bugs bunny ate carrots and drank milk while hunting ducks 333s > yy <- unitizer:::OL(x) 333s > as.character(yy, width = 30L) 333s [1] "1. there was once a time when " " the fantastic unicorns " 333s [3] " could fly" "2. bugs bunny ate carrots and " 333s [5] " drank milk while hunting " " ducks" 333s > # hopefully always C locale collation in tests? 333s > sort(as.character(unitizer:::OL(rep(letters, 2), style = "LETTERS"))) 333s [1] " A. a" " B. b" " C. c" " D. d" " E. e" " F. f" " G. g" " H. h" " I. i" 333s [10] " J. j" " K. k" " L. l" " M. m" " N. n" " O. o" " P. p" " Q. q" " R. r" 333s [19] " S. s" " T. t" " U. u" " V. v" " W. w" " X. x" " Y. y" " Z. z" "AA. a" 333s [28] "AB. b" "AC. c" "AD. d" "AE. e" "AF. f" "AG. g" "AH. h" "AI. i" "AJ. j" 333s [37] "AK. k" "AL. l" "AM. m" "AN. n" "AO. o" "AP. p" "AQ. q" "AR. r" "AS. s" 333s [46] "AT. t" "AU. u" "AV. v" "AW. w" "AX. x" "AY. y" "AZ. z" 333s > xl <- as.list(x) 333s > y <- unitizer:::UL(c(xl, list(unitizer:::OL(c(xl, list(unitizer:::UL(x))))), 333s + "yowza it is raining toads today!")) 333s > as.character(y, width = 30) 333s [1] "- there was once a time when " " the fantastic unicorns could" 333s [3] " fly" "- bugs bunny ate carrots and " 333s [5] " drank milk while hunting " " ducks" 333s [7] " 1. there was once a time " " when the fantastic " 333s [9] " unicorns could fly" " 2. bugs bunny ate carrots " 333s [11] " and drank milk while " " hunting ducks" 333s [13] " - there was once a time " " when the fantastic " 333s [15] " unicorns could fly" " - bugs bunny ate carrots " 333s [17] " and drank milk while " " hunting ducks" 333s [19] "- yowza it is raining toads " " today!" 333s > try(unitizer:::as.character.bullet(hello, 1:10)) 333s Error in unitizer:::as.character.bullet(hello, 1:10) : 333s Argument `width` must be a one length positive numeric. 333s > # Extra args to word_wrap 333s > try(as.character(unitizer:::OL(c("hello", "there")), unlist = TRUE)) 333s Error in as.character.bullet(unitizer:::OL(c("hello", "there")), unlist = TRUE) : 333s You may not specify `unlist` as part of `...` as that argument is used internally 333s > as.character(unitizer:::OL("asdfasdfqwerjhdfkasdfasdfasd"), width = 20L) 333s [1] "1. asdfasdfqwerjhdf-" " kasdfasdfasd" 333s > as.character(unitizer:::OL("asdfasdfqwerjhdfkasdfasdfasd"), width = 20L, 333s + hyphens = FALSE) 333s [1] "1. asdfasdfqwerjhdfk" " asdfasdfasd" 333s > 333s > # - "substr_const" ------------------------------------------------------------- 333s > 333s > unitizer:::substr_cons(c("ab", "abcde", "abce"), 4L) 333s [1] "ab " "abcd" "abc " 333s > unitizer:::substr_cons(c("ab", "abcde", "abce"), 4L, justify = "right") 333s [1] " ab" "abcd" " abc" 333s > unitizer:::substr_cons(c("NEW", "PASS", "FAIL", "DELETED", "Error"), 4L) 333s [1] "NEW " "PASS" "FAIL" "DEL " "Err " 333s > 333s > # - "str_reduce_unique" -------------------------------------------------------- 333s > 333s > str1 <- c("abcdef", "abcdefgh", "abcql") 333s > res1 <- c("def", "defgh", "ql") 333s > unitizer:::str_reduce_unique(str1) 333s [1] "def" "defgh" "ql" 333s > unitizer:::str_reduce_unique(str1, from = "right") 333s [1] "abcdef" "abcdefgh" "abcql" 333s > str2 <- vapply(strsplit(str1, ""), function(x) paste0(rev(x), 333s + collapse = ""), "") 333s > res2 <- vapply(strsplit(res1, ""), function(x) paste0(rev(x), 333s + collapse = ""), "") 333s > all.equal(unitizer:::str_reduce_unique(str2, from = "right"), res2) 333s [1] TRUE 333s > unitizer:::str_reduce_unique("aaa") 333s [1] "" 333s > identical(unitizer:::str_reduce_unique(rep("aaa", 5L)), rep("", 5L)) 333s [1] TRUE 333s > 333s > # - "strtrunc" ----------------------------------------------------------------- 333s > 333s > str1 <- c(paste0(letters, collapse = ""), paste0(LETTERS, collapse = "")) 333s > unitizer:::strtrunc(str1, 10L) 333s [1] "abcdefg..." "ABCDEFG..." 333s > unitizer:::strtrunc(str1, 10L, from = "left") 333s [1] "...tuvwxyz" "...TUVWXYZ" 333s > unitizer:::strtrunc(c("abc", "cab"), 3L) 333s [1] "abc" "cab" 333s > try(unitizer:::strtrunc(c("abc", "cab"), 2L)) 333s Error in unitizer:::strtrunc(c("abc", "cab"), 2L) : 333s `nchar.max` too small, make bigger or make `ctd` shorter. 333s > 333s > # - "oneline" ------------------------------------------------------------------ 333s > 333s > dep <- c("res <- data %>% group_by(ID) %>% summarise(date2 = nth(date, ", 333s + " 2), time2 = nth(time, 2), first_date = first(date), last_date = last(date), ", 333s + " first_time = first(time), last_time = last(time))") 333s > unitizer:::one_line(dep) 333s [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))" 333s > unitizer:::one_line(dep, 50) 333s [1] "res <- data %>% group_by(ID) %>% summarise(date..." 333s > 333s > # - "let_comb_fun" ------------------------------------------------------------- 333s > 333s > (unitizer:::make_let_combn_fun(letters))(12) 333s [1] "a." "b." "c." "d." "e." "f." "g." "h." "i." "j." "k." "l." 333s > 333s > # - "cc" ----------------------------------------------------------------------- 333s > 333s > unitizer:::cc("a", "b") 333s [1] "ab" 333s > unitizer:::cc(c("a", "b"), "c") 333s [1] "abc" 333s > unitizer:::cc(c("a", "b"), "c", c = " ") 333s [1] "a b c" 333s > 333s > # - "screen_out" --------------------------------------------------------------- 333s > 333s > string <- "once upon a time in a fairy land very far away lived a green dragon" 333s > unitizer:::screen_out(string, max.len = c(3L, 2L), width = 13L) 333s once upon a 333s time in a 333s ... truncated 4 lines 333s > 333s > # - "text_wrap" ---------------------------------------------------------------- 333s > 333s > try(unitizer:::text_wrap(list(1, 2, 3), 5)) 333s Error in unitizer:::text_wrap(list(1, 2, 3), 5) : 333s Arguments `x` and `width` must be character and integer like (all values >= 1) respectively 333s > try(unitizer:::text_wrap(letters, 1:3)) 333s Error in unitizer:::text_wrap(letters, 1:3) : 333s Argument `x` must be a multiple in length of argument `width` 333s > 333s > # - "capture_output" ----------------------------------------------------------- 333s > 333s > capt <- unitizer:::capture_output({ 333s + cat("hello") 333s + cat("goodbye", file = stderr()) 333s + }) 333s > capt 333s - Output ----------------------------------------------------------------------- 333s 333s hello 333s - Message ---------------------------------------------------------------------- 333s 333s goodbye 333s > sum(grepl("Output|Message", capture.output(print(capt)))) 333s [1] 2 333s > 333s > # - "meta_word_cat" ------------------------------------------------------------ 333s > 333s > unitizer:::meta_word_cat("hello") 333s | hello 333s 333s > capture.output(unitizer:::meta_word_cat("hello", trail.nl = FALSE)) 333s [1] "| hello" 333s > # Newline issues 333s > unitizer:::meta_word_cat("hello\n", sep = "") 333s | hello 333s 333s > unitizer:::meta_word_cat("hello", "there") 333s | hello 333s | there 333s 333s > unitizer:::meta_word_cat("hello", "there", sep = " ") 333s | hello there 333s 333s > 333s > # - "meta_word_msg" ------------------------------------------------------------ 333s > 333s > unitizer:::meta_word_msg("hello") 333s | hello 333s 333s > txt <- "hello there how are you this wraps" 333s > unitizer:::meta_word_msg(txt, width = 20) 333s | hello there how 333s | are you this wraps 333s 333s > # legacy fun 333s > unitizer:::word_msg("hello") 333s hello 333s > 333s > # - "desc" --------------------------------------------------------------------- 333s > 333s > obj1 <- list(a = iris, b = lm(dist ~ speed, cars), 1:10, matrix(letters, 333s + 2)) 333s > desc(obj1, 80) 333s [1] "list(a=data.frame[150,5], b=lm[12], int[10], chr mat[2,13])" 333s > desc(obj1, 40) 333s [1] "list[4]" 333s > desc(iris, 80) 333s [1] "data.frame[150,5]" 333s > desc(iris, 200) 333s [1] "data.frame(Sepal.Length=num[150], Sepal.Width=num[150], Petal.Length=num[150], Petal.Width=num[150], Species=fct[150])" 333s > desc(list(NULL, 1L)) 333s [1] "list(NULL, int[1])" 333s > desc(NULL) 333s [1] "NULL" 333s > unitizer:::desc(NULL) 333s [1] "NULL" 333s > unitizer:::desc(lm(y ~ x, data.frame(y = 1:10, x = runif(10)))) 333s [1] "lm[12]" 333s > unitizer:::desc(new("unitizerItem", call = quote(1 + 1), env = new.env())) 333s [1] "unitizerItem" 333s > unitizer:::desc(array(1:27, dim = rep(3, 3))) 333s [1] "array[3,3,3]" 333s > unitizer:::desc(data.frame(a = letters[1:10], b = 1:10, stringsAsFactors = TRUE)) 333s [1] "data.frame(a=fct[10], b=int[10])" 333s > 333s > # - "char_to_eng" -------------------------------------------------------------- 333s > 333s > unitizer:::char_to_eng(character(), "", "") 333s [1] "" 333s > unitizer:::char_to_eng(letters[1:4], "", "") 333s [1] "a, b, c, and d" 333s > unitizer:::char_to_eng(letters[1:2], "", "") 333s [1] "a, and b" 333s > unitizer:::char_to_eng(letters[1], "", "") 333s [1] "a" 333s > unitizer:::char_to_eng(letters[1]) 333s [1] "a was" 333s > unitizer:::char_to_eng(letters[1:2]) 333s [1] "a, and b were" 333s > 333s > 333s PASS 333s Begin testing t-translate.R 333s 333s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 333s Copyright (C) 2024 The R Foundation for Statistical Computing 333s Platform: arm-unknown-linux-gnueabihf (32-bit) 333s 333s R is free software and comes with ABSOLUTELY NO WARRANTY. 333s You are welcome to redistribute it under certain conditions. 333s Type 'license()' or 'licence()' for distribution details. 333s 333s R is a collaborative project with many contributors. 333s Type 'contributors()' for more information and 333s 'citation()' on how to cite R or R packages in publications. 333s 333s Type 'demo()' for some demos, 'help()' for on-line help, or 333s 'help.start()' for an HTML browser interface to help. 333s Type 'q()' to quit R. 333s 333s > source(file.path("_helper", "init.R")) 333s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 333s > 333s > test.file.dir <- file.path("_helper", "ref-objs", "translate") 333s > test.file <- file.path(test.file.dir, "testthat", "test-translate2.R") 333s > test.file.min <- file.path(test.file.dir, "testthat2", "test-translate-min.R") 333s > target.dir.base <- file.path(TMP.DIR, basename(tempfile())) 333s > target.dir <- file.path(target.dir.base, "helper", "translate", "unitizer") 333s > 333s > # - "Prompt to create dir" ----------------------------------------------------- 333s > 333s > try( 333s + testthat_translate_file( 333s + test.file, target.dir, prompt = "always", interactive.mode = FALSE 333s + ) ) 333s Error in testthat_transcribe_file(file.name, target.dir, keep.testthat.call, : 333s Unable to proceed without creating target directory 333s > # translations have to be outside of `testthat`; second translation should fail 333s > # except we allow manual input 333s > 333s > # - "translate a file" --------------------------------------------------------- 333s > 333s > unitizer:::capture_output({ 333s + unitizer:::read_line_set_vals(c("Y")) 333s + res1 <- testthat_translate_file(test.file, target.dir, prompt = "always", 333s + interactive.mode = TRUE) 333s + res1.txt <- readLines(res1) 333s + unitizer:::read_line_set_vals(c("Y")) 333s + res2 <- testthat_translate_file(test.file, target.dir, prompt = "overwrite", 333s + interactive.mode = TRUE) 333s + res2.txt <- readLines(res2) 333s + unitizer:::read_line_set_vals(NULL) 333s + }) 335s > dummy <- new("unitizerDummy") 335s > 335s > all.equal(res1.txt, rds("translate_res1")) 335s [1] TRUE 335s > all.equal(res1.txt, res2.txt) 335s [1] TRUE 335s > 335s > # Can't do this twice in a row without prompting in non-interactive mode 335s > # note test above does work because we use interactive mode to accept prompt 335s > 335s > any( 335s + grepl( 335s + "already exists", 335s + capture.output( 335s + try( 335s + testthat_translate_file( 335s + test.file, target.dir, prompt = "always", interactive.mode = FALSE 335s + ) ), 335s + type='message' 335s + ) ) ) 335s [1] TRUE 335s > untz <- get_unitizer(file.path(target.dir, "translate2.unitizer")) 335s > all.equal(untz@items.ref.calls.deparse, rds("translate_res2")) 335s [1] TRUE 335s > 335s > lapply(unitizer:::as.list(untz@items.ref), function(x) x@data@value[[1L]]) 335s [[1]] 335s 335s 335s [[2]] 335s [1] 1 2 3 4 5 6 7 8 9 10 335s 335s [[3]] 335s NULL 335s 335s [[4]] 335s NULL 335s 335s [[5]] 335s NULL 335s 335s [[6]] 335s NULL 335s 335s [[7]] 335s [1] "yoyo" 335s 335s [[8]] 335s NULL 335s 335s > unlink(target.dir, recursive = TRUE) 335s > 335s > target.dir.base <- file.path(TMP.DIR, basename(tempfile())) 335s > target.dir <- file.path(target.dir.base, "_helper", "translate", "unitizer") 335s > 335s > test.dir <- file.path("_helper", "ref-objs", "translate", "testthat") 335s > 335s > # - "translate a dir" ---------------------------------------------------------- 335s > 335s > unitizer:::capture_output(res2 <- testthat_translate_dir(test.dir, target.dir)) 335s > all.equal(lapply(res2, readLines), rds("translate_res3")) 335s [1] TRUE 335s > untz <- get_unitizer(file.path(target.dir, "translate2.unitizer")) 335s > all.equal(untz@items.ref.calls.deparse, rds("translate_res4")) 335s [1] TRUE 335s > 335s > # Note not the same as when we did just the single file because the helper 335s > # file is loaded so `fun0` and `fun1` are actually defined 335s > lapply(unitizer:::as.list(untz@items.ref), function(x) x@data@value[[1L]]) 335s [[1]] 335s 335s 335s [[2]] 335s [1] 1 2 3 4 5 6 7 8 9 10 335s 335s [[3]] 335s [1] 42 335s 335s [[4]] 335s [1] 24 335s 335s [[5]] 335s [1] 24 335s 335s [[6]] 335s NULL 335s 335s [[7]] 335s [1] "yoyo" 335s 335s [[8]] 335s NULL 335s 335s > 335s > # Can't do it again since there are files there 335s > any( 335s + grepl( 335s + "safety feature to ensure files are not accidentally overwritten", 335s + capture.output( 335s + try(testthat_translate_dir(test.dir, target.dir)), type='message' 335s + ) ) ) 335s [1] TRUE 335s > 335s > # - minimal -------------------------------------------------------------------- 335s > 335s > # to test parameters 335s > 335s > writeLines( 335s + readLines( 335s + testthat_translate_file( 335s + test.file.min, target.dir, prompt = "never", interactive.mode = TRUE, 335s + unitize = FALSE 335s + ) ) ) 335s # Minimal translation 335s # test_that("simple tests", { 335s # expect_equal(fun0(a), 1:10) 335s # }) 335s unitizer_sect("simple tests", { 335s # expect_equal(fun0(a), 1:10) 335s fun0(a) 335s }) 335s > writeLines( 335s + readLines( 335s + testthat_translate_file( 335s + test.file.min, target.dir, prompt = "never", interactive.mode = TRUE, 335s + use.sects = FALSE, unitize = FALSE 335s + ) ) ) 335s # Minimal translation 335s # test_that("simple tests", { 335s # expect_equal(fun0(a), 1:10) 335s # }) 335s # - "simple tests" ------------------------------------------------------------- 335s 335s 335s # expect_equal(fun0(a), 1:10) 335s fun0(a) 335s > writeLines( 335s + readLines( 335s + testthat_translate_file( 335s + test.file.min, target.dir, prompt = "never", interactive.mode = TRUE, 335s + use.sects = FALSE, keep.testthat.call = FALSE, unitize = FALSE 335s + ) ) ) 335s # Minimal translation 335s # - "simple tests" ------------------------------------------------------------- 335s 335s 335s fun0(a) 335s > 335s > 335s > 335s PASS 335s Begin testing t-upgrade.R 335s 335s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 335s Copyright (C) 2024 The R Foundation for Statistical Computing 335s Platform: arm-unknown-linux-gnueabihf (32-bit) 335s 335s R is free software and comes with ABSOLUTELY NO WARRANTY. 335s You are welcome to redistribute it under certain conditions. 335s Type 'license()' or 'licence()' for distribution details. 335s 335s R is a collaborative project with many contributors. 335s Type 'contributors()' for more information and 335s 'citation()' on how to cite R or R packages in publications. 335s 335s Type 'demo()' for some demos, 'help()' for on-line help, or 335s 'help.start()' for an HTML browser interface to help. 335s Type 'q()' to quit R. 335s 335s > source(file.path("_helper", "init.R")) 336s > blat_vers <- function(x) sub("'\\d+(?:\\.\\d+)*'", "''", x) 336s > 336s > # - "Upgrade works" ------------------------------------------------------------ 336s > 336s > # this is also now tested as part of load 336s > unitizer <- 336s + get_unitizer(file.path("_helper", "unitizers", "trivial.unitizer.0.4.2")) 336s > try(validObject(unitizer, complete = TRUE)) 336s Error in validObject(object[[x]], complete = TRUE) : 336s invalid class "unitizerItem" object: 1: slots in class definition but not in object: "call.dep", "section.id", "section.name", "glob.indices", "state" 336s 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" 336s > as.character(unitizer@version) 336s [1] "0.4.2" 336s > unitizer.up <- unitizer:::upgrade_internal(unitizer) # warning 336s Warning in addSlot(object, "cons", NULL) : 336s Slot `cons` does not exist in current version of `unitizer` so not added to object. 336s Warning in addSlot(object, "jump.to.test", 0L) : 336s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 336s > validObject(unitizer.up) 336s [1] TRUE 336s > identical(unitizer.up@version, as.character(packageVersion("unitizer"))) 336s [1] TRUE 336s > 336s > # - Upgrade Warnings in Unitize ------------------------------------------------ 336s > 336s > tdir <- tempfile() 336s > dir.create(tdir) 336s > dir.create(file.path(tdir, "trivial.unitizer")) 336s > file.copy(file.path("_helper", "unitizers", "trivial.R"), tdir) 336s [1] TRUE 336s > file.copy( 336s + file.path("_helper", "unitizers", "trivial.unitizer.0.4.2", "data.rds"), 336s + file.path(tdir, "trivial.unitizer") 336s + ) 336s [1] TRUE 336s > odir <- setwd(tdir) 336s > unitizer:::read_line_set_vals('N') 336s > out <- unitizer:::capture_output( 336s + try(unitize(file.path(tdir, "trivial.R"), interactive.mode=TRUE)) 336s + ) 337s > out[] <- lapply(out, blat_vers) 337s > out 337s - Output ----------------------------------------------------------------------- 337s 337s 337s | 337s | The following unitizer will be upgraded to version '': 337s | 337s | - trivial.unitizer (at '') 337s 337s unitizer> N 337s 337s - Message ---------------------------------------------------------------------- 337s 337s Warning in check_call_stack() : 337s It appears you are running unitizer inside an error handling function such as 337s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 337s couraged as it may cause unpredictable behavior from unitizer in the event tests 337s produce conditions / errors. We strongly recommend you re-run your tests 337s outside of such handling functions. 337s Warning in addSlot(object, "cons", NULL) : 337s Slot `cons` does not exist in current version of `unitizer` so not added to object. 337s Warning in addSlot(object, "jump.to.test", 0L) : 337s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 337s Warning in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 337s Upgraded test file does not match original test file ('NA' vs 'trivial.R'). 337s | unitizer upgrades are IRREVERSIBLE and not backwards compatible. 337s | Proceed? 337s 337s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 337s Cannot proceed without upgrading unitizers. 337s > 337s > unitizer:::read_line_set_vals(c('Y','Q')) 337s > out <- unitizer:::capture_output( 337s + unitize(file.path(tdir, "trivial.R"), interactive.mode=TRUE) 337s + ) 337s > out[] <- lapply(out, blat_vers) 337s > out 337s - Output ----------------------------------------------------------------------- 337s 337s 337s | 337s | The following unitizer will be upgraded to version '': 337s | 337s | - trivial.unitizer (at '') 337s 337s unitizer> Y 337s 337s +------------------------------------------------------------------------------+ 337s | unitizer for: trivial.R | 337s +------------------------------------------------------------------------------+ 337s 337s Pass Fail New 337s 1 - 3 337s ........................... 337s 1 - 3 337s 337s - New -------------------------------------------------------------------------- 337s 337s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 337s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 337s 337s > x <- 1 + 1 337s > x + 2 337s [1] 4 337s 337s unitizer> Q 337s 337s | unitizer unchanged. 337s 337s - Message ---------------------------------------------------------------------- 337s 337s Warning in addSlot(object, "cons", NULL) : 337s Slot `cons` does not exist in current version of `unitizer` so not added to object. 337s Warning in addSlot(object, "jump.to.test", 0L) : 337s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 337s Warning in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 337s Upgraded test file does not match original test file ('NA' vs 'trivial.R'). 337s | unitizer upgrades are IRREVERSIBLE and not backwards compatible. 337s | Proceed? 337s 337s | No changes recorded. 337s > unitizer:::read_line_set_vals(NULL) 337s > setwd(odir) 337s > unlink(tdir, recursive=TRUE) 337s > 337s > # - Upgrade Multiple Unitizers Unitize ----------------------------------------- 337s > 337s > tdir <- tempfile() 337s > dir.create(tdir) 337s > dir.create(file.path(tdir, "trivial1.unitizer")) 337s > dir.create(file.path(tdir, "trivial2.unitizer")) 337s > file.copy( 337s + file.path("_helper", "unitizers", "trivial.R"), 337s + file.path(tdir, c("trivial1.R", "trivial2.R")) 337s + ) 337s [1] TRUE TRUE 337s > file.copy( 337s + file.path("_helper", "unitizers", "trivial.unitizer.0.4.2", "data.rds"), 337s + file.path(tdir, "trivial1.unitizer") 337s + ) 337s [1] TRUE 337s > file.copy( 337s + file.path("_helper", "unitizers", "trivial.unitizer.0.4.2", "data.rds"), 337s + file.path(tdir, "trivial2.unitizer") 337s + ) 337s [1] TRUE 337s > odir <- setwd(tdir) 337s > unitizer:::read_line_set_vals(c('Y','Q')) 337s > out <- unitizer:::capture_output( 337s + unitize_dir(tdir, interactive.mode=TRUE) 337s + ) 337s > out[] <- lapply(out, blat_vers) 337s > out 337s - Output ----------------------------------------------------------------------- 337s 337s 337s | 337s | The following unitizers will be upgraded to version '': 337s | 337s | - trivial1.unitizer (at '') 337s | - trivial2.unitizer (at '') 337s 337s unitizer> Y 337s 337s | Summary of files in common directory '.': 337s | 337s | Pass Fail New 337s | *1. trivial1.R 1 - 3 337s | *2. trivial2.R 1 - 3 337s | .............................. 337s | 2 - 6 337s | Legend: 337s | * `unitizer` requires review 337s 337s | Type number of unitizer to review, 'A' to review all that require review 337s 337s unitizer> Q 337s 337s - Message ---------------------------------------------------------------------- 337s 337s Warning in addSlot(object, "cons", NULL) : 337s Slot `cons` does not exist in current version of `unitizer` so not added to object. 337s Warning in addSlot(object, "jump.to.test", 0L) : 337s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 337s Warning in addSlot(object, "cons", NULL) : 337s Slot `cons` does not exist in current version of `unitizer` so not added to object. 337s Warning in addSlot(object, "jump.to.test", 0L) : 337s Slot `jump.to.test` does not exist in current version of `unitizer` so not added to object. 337s Warning in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 337s Upgraded test file does not match original test file ('NA' vs 'trivial1.R'). 337s Warning in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 337s Upgraded test file does not match original test file ('NA' vs 'trivial2.R'). 337s | unitizer upgrades are IRREVERSIBLE and not backwards compatible. 337s | Proceed? 337s 337s > unitizer:::read_line_set_vals(NULL) 337s > setwd(odir) 337s > unlink(tdir, recursive=TRUE) 337s > 337s > # - "Rename" ------------------------------------------------------------------- 337s > 337s > setClass("untzUpgrTest", slots = c(a = "character")) 337s > x <- new("untzUpgrTest", a = letters) 337s > validObject(x) 337s [1] TRUE 337s > setClass("untzUpgrTest", slots = c(b = "character")) 337s > try(validObject(x)) 337s Error in validObject(x) : 337s invalid class "untzUpgrTest" object: slots in class definition but not in object: "b" 337s > try(capture.output(unitizer:::renameSlot(x, "c", "b"), type = "message")) 337s Error in unitizer:::renameSlot(x, "c", "b") : 337s Old slot `c` doesn't exist in object 337s > x.rename <- unitizer:::renameSlot(x, "a", "b") 337s > validObject(x.rename) 337s [1] TRUE 337s > 337s > # - "Later but valid version" -------------------------------------------------- 337s > 337s > test.file <- file.path(TMP.DIR, "tests.R") 337s > cat("1 + 1", file = test.file) 337s > unitizer:::capture_output(unitize(test.file, auto.accept = "new")) 338s > version <- unlist(strsplit(as.character(packageVersion("unitizer")), 338s + ".", fixed = TRUE)) 338s > version[1] <- as.character(as.numeric(version[1]) + 1) 338s > version.new <- paste0(version, collapse = ".") 338s > unitizer.rds <- readRDS(file.path(TMP.DIR, "tests.unitizer", "data.rds")) 338s > unitizer.rds@version <- version.new 338s > # this should work 338s > !nchar(unitizer:::unitizer_valid(unitizer.rds)) 338s [1] TRUE 338s > # now lets cause an error 338s > unitizer.rds@eval.time <- runif(5) 338s > grepl("NB: ", unitizer:::unitizer_valid(unitizer.rds)) 338s [1] TRUE 338s > 338s > # - "Failing Test w/ Upgrade" -------------------------------------------------- 338s > 338s > # Unitizer will fail, but also requires an upgrade. This ensures the failure is 338s > # shown despite the need for an upgrade. 338s > tdir <- tempfile() 338s > dir.create(tdir) 338s > dir.create(file.path(tdir, "fail-and-upgrade.unitizer")) 338s > file.copy(file.path("_helper", "unitizers", "fail-and-upgrade.R"), tdir) 338s [1] TRUE 338s > file.copy( 338s + file.path("_helper", "unitizers", "fail-and-upgrade.unitizer", "data.rds"), 338s + file.path(tdir, "fail-and-upgrade.unitizer") 338s + ) 338s [1] TRUE 338s > odir <- setwd(tdir) 338s > try(unitize(file.path("fail-and-upgrade.R"))) 338s 338s Warning in check_call_stack() : 338s It appears you are running unitizer inside an error handling function such as 338s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 338s couraged as it may cause unpredictable behavior from unitizer in the event tests 338s produce conditions / errors. We strongly recommend you re-run your tests 338s outside of such handling functions. 338s Warning in history_capt(history, interactive.mode) : 338s Unable to capture history in non-interactive mode. 338s +------------------------------------------------------------------------------+ 338s | unitizer for: fail-and-upgrade.R | 338s +------------------------------------------------------------------------------+ 338s 338s Pass Fail 338s - 1 338s ...................... 338s - 1 338s 338s - Failed ----------------------------------------------------------------------- 338s 338s | The following test failed because the new evaluation does not match the 338s | reference value from the store. Overwrite with new result ([Y]es, [N]o, 338s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 338s 338s # fails with newer versions of unitizer so we can make sure upgrade shows error 338s # and doesn't just gag at the upgrade prompt 338s 338s > packageVersion("unitizer") < "1.4.15" 338s [1] FALSE 338s 338s | Value mismatch: 338s 338s < .ref > .new 338s @@ 1 @@ @@ 1 @@ 338s < [1] TRUE > [1] FALSE 338s 338s | State mismatch; see `.DIFF$state` for details. 338s 338s | User input required to proceed, but we are in non-interactive mode. 338s 338s | unitizer unchanged. 338s 338s | * Fail: packageVersion("unitizer") < "1.4.15" 338s | in 'fail-and-upgrade.R' 338s 338s | Newly evaluated tests do not match unitizer (Fail: 1); see above for more 338s | info, or run in interactive mode. 338s 338s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 338s Cannot proceed in non-interactive mode. 338s > 338s > # Confirm upgrade needed 338s > capture.output(unitizer:::read_line_set_vals(c('Y', 'Q'))) 338s character(0) 338s > out <- unitizer:::capture_output( 338s + unitize(file.path("fail-and-upgrade.R"), interactive.mode=TRUE) 338s + ) 338s > out[] <- lapply(out, blat_vers) 338s > out 338s - Output ----------------------------------------------------------------------- 338s 338s 338s | 338s | The following unitizer will be upgraded to version '': 338s | 338s | - fail-and-upgrade.unitizer (at '') 338s 338s unitizer> Y 338s 338s +------------------------------------------------------------------------------+ 338s | unitizer for: fail-and-upgrade.R | 338s +------------------------------------------------------------------------------+ 338s 338s Pass Fail 338s - 1 338s ...................... 338s - 1 338s 338s - Failed ----------------------------------------------------------------------- 339s 339s | The following test failed because the new evaluation does not match the 339s | reference value from the store. Overwrite with new result ([Y]es, [N]o, 339s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 339s 339s # fails with newer versions of unitizer so we can make sure upgrade shows error 339s # and doesn't just gag at the upgrade prompt 339s 339s > packageVersion("unitizer") < "1.4.15" 339s [1] FALSE 339s 339s | Value mismatch: 339s 339s < .ref > .new 339s @@ 1 @@ @@ 1 @@ 339s < [1] TRUE > [1] FALSE 339s 339s | State mismatch; see `.DIFF$state` for details. 339s 339s unitizer> Q 339s 339s | unitizer unchanged. 339s 339s - Message ---------------------------------------------------------------------- 339s 339s | unitizer upgrades are IRREVERSIBLE and not backwards compatible. 339s | Proceed? 339s 339s | No changes recorded. 339s > 339s > unitizer:::read_line_set_vals(NULL) 339s > setwd(odir) 339s > unlink(tdir, recursive=TRUE) 339s > 339s > 339s PASS 339s Begin testing t-utz1.R 339s 339s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 339s Copyright (C) 2024 The R Foundation for Statistical Computing 339s Platform: arm-unknown-linux-gnueabihf (32-bit) 339s 339s R is free software and comes with ABSOLUTELY NO WARRANTY. 339s You are welcome to redistribute it under certain conditions. 339s Type 'license()' or 'licence()' for distribution details. 339s 339s R is a collaborative project with many contributors. 339s Type 'contributors()' for more information and 339s 'citation()' on how to cite R or R packages in publications. 339s 339s Type 'demo()' for some demos, 'help()' for on-line help, or 339s 'help.start()' for an HTML browser interface to help. 339s Type 'q()' to quit R. 339s 339s > # - "No Attach Test" ----------------------------------------------------------- 339s > 339s > f <- paste0(tempfile(), ".R") 339s > writeLines("1 + 1", f) 339s > try(unitizer::unitize(f)) 339s 339s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 339s `unitizer` package must be attached to the search path, e.g. with `library(unitizer)` 339s > unlink(f) 339s > 339s > # - "Usual Setup" -------------------------------------------------------------- 339s > 339s > source(file.path("_helper", "init.R")) 339s > source(file.path("aammrtf", "ref.R")); make_ref_obj_funs("refobjs") 339s > source(file.path("_helper", "pkgs.R")) 339s Install Packages 343s Setup Demos 343s > 343s > # - "custom history file" ------------------------------------------------------ 343s > 343s > # Random history file 343s > unitizer:::read_line_set_vals(c("1 + 1", "Y", "Y", "Y", "Y", "N")) 343s > hist.file <- tempfile() 343s > invisible( 343s + unitizer:::capture_output( 343s + unitize(FLM.TEST.FILE, interactive.mode = TRUE, history = hist.file) 343s + ) ) 344s > hist.dat <- readLines(hist.file) 344s > unlink(hist.file) 344s > 344s > # History only works in interactive mode 344s > if (interactive()) { 344s + identical(hist.dat, c("## (original history will be restored on exit)", 344s + "library(utzflm, lib.loc = getOption(\"unitizer.tmp.lib.loc\"))", 344s + "dat <- data.frame(x = 1:100, y = (1:100)^2)", "res <- fastlm(dat$x, dat$y)", 344s + "res", "1 + 1", "get_slope(res)", "get_rsq(res)", "fastlm(1:100, 1:10)")) 344s + } else { 344s + identical(hist.dat, character()) 344s + } 344s [1] TRUE 344s > # - "bad history" -------------------------------------------------------------- 344s > 344s > bad.hist <- try(unitize(FLM.TEST.FILE, history = list()), silent = TRUE) 344s 344s > inherits(bad.hist, "try-error") 344s [1] TRUE 344s > conditionMessage(attr(bad.hist, "condition")) 344s [1] "Argument `history` must be the name of a file that can be opened in \"at\" mode, or \"\", or NULL" 344s > 344s > # - "bad seed" ----------------------------------------------------------------- 344s > 344s > # gsub needed b/c of inconsistent error calls in 3.3.2 and 3.4 344s > old.opt <- options(unitizer.seed = "bad.seed") 344s > txtopt1 <- unitizer:::capture_output(try(unitize(FLM.TEST.FILE))) 344s > options(unitizer.seed = list("bad.seed")) 344s > txtopt2 <- unitizer:::capture_output(try(unitize(FLM.TEST.FILE))) 344s > # set.seed gained an argument c.a. R3.6 that caused error mismatch 344s > txtopt2$message[grepl("\\(function \\(seed", txtopt2$message, 344s + ignore.case = TRUE)] <- "" 344s > options(old.opt) 344s > 344s > 344s > unitizer:::clean_eval_exp(txtopt1) 344s - Output ----------------------------------------------------------------------- 344s 344s 344s - Message ---------------------------------------------------------------------- 344s 344s Error in do.call(set.seed, seed.dat) : second argument must be a list 344s Error in as.state(state, test.files) : 344s 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.) 344s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 344s Argument `state` could not be evaluated. 344s > # supplied seed not valid int 344s > # unexpectedly exited; not clear why all stderr is not being captured by 344s > # capture_output... 344s > txtopt2 344s - Output ----------------------------------------------------------------------- 344s 344s 344s - Message ---------------------------------------------------------------------- 344s 344s 344s NAs introduced by coercion 344s 344s supplied seed is not a valid integer 344s Error in as.state(state, test.files) : 344s 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.) 344s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 344s Argument `state` could not be evaluated. 344s > 344s > # - "create dir" --------------------------------------------------------------- 344s > 344s > # Unitizers in different directories that don't exist; also test using a 344s > # function to generate those directories 344s > get_store_id <- function(x) { 344s + file <- basename(x) 344s + dir <- dirname(dirname(x)) 344s + file.path(dir, "unitizer2", sub("(.*)\\.R", "\\1.unitizer", 344s + file)) 344s + } 344s > unitizer:::read_line_set_vals(c("N")) 344s > txt1 <- unitizer:::capture_output( 344s + untz1 <- try(unitize_dir(FLM.TEST.DIR, get_store_id, interactive.mode = TRUE)) 344s + ) 344s > unitizer:::read_line_set_vals(c("Y", "Q")) 344s > txt2 <- unitizer:::capture_output(untz2 <- unitize_dir(FLM.TEST.DIR, 344s + get_store_id, interactive.mode = TRUE)) 344s > 344s > inherits(untz1, "try-error") 344s [1] TRUE 344s > inherits(untz2, "unitizer_results") 344s [1] TRUE 344s > 344s > # Some of the text must be ablated 344s > rem_txt <- function(x) { 344s + crd <- grep("Create directory\\?", x) 344s + if (!length(crd)) 344s + stop("Logic Error: this must be a create directory test") 344s + x[-(2L:(crd[[1L]] - 1L))] 344s + } 344s > txt1$output <- rem_txt(txt1$output) 344s > txt2$output <- rem_txt(txt2$output) 344s > 344s > # must create the following directory 344s > # cannot proceed w/o creating directories 344s > 344s > txt1 344s - Output ----------------------------------------------------------------------- 344s 344s 344s | Create directory? 344s 344s unitizer> N 344s 344s - Message ---------------------------------------------------------------------- 344s 344s Warning in check_call_stack() : 344s It appears you are running unitizer inside an error handling function such as 344s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 344s couraged as it may cause unpredictable behavior from unitizer in the event tests 344s produce conditions / errors. We strongly recommend you re-run your tests 344s outside of such handling functions. 344s Error in unitize_core(test.files = test.files, store.ids = store.ids, : 344s Cannot proceed without creating directories. 344s > txt2 344s - Output ----------------------------------------------------------------------- 344s 344s 344s | Create directory? 344s 344s unitizer> Y 344s 344s | Summary of files in common directory 'unitizer': 344s | 344s | Pass Fail New 344s | *1. fastlm1.R - - 4 344s | *2. fastlm2.R - - 1 344s | *3. unitizer.fastlm.R - - 3 344s | ..................................... 344s | - - 8 344s | Legend: 344s | * `unitizer` requires review 344s 344s | Type number of unitizer to review, 'A' to review all that require review 344s 344s unitizer> Q 344s 344s - Message ---------------------------------------------------------------------- 344s 344s 344s > 344s > # - print / dir ---------------------------------------------------------------- 344s > 344s > # quit from all at once 344s > unitizer:::read_line_set_vals(c("A", "QQ", "Q")) 344s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 344s 345s | Summary of files in common directory 'unitizer': 345s | 345s | Pass Fail New 345s | *1. fastlm1.R - - 4 345s | *2. fastlm2.R - - 1 345s | *3. unitizer.fastlm.R - - 3 345s | ..................................... 345s | - - 8 345s | Legend: 345s | * `unitizer` requires review 345s 345s | Type number of unitizer to review, 'A' to review all that require review 345s 345s unitizer> A 345s 345s +------------------------------------------------------------------------------+ 345s | unitizer for: unitizer/fastlm1.R | 345s +------------------------------------------------------------------------------+ 345s 345s Pass Fail New 345s - - 4 345s ........................... 345s - - 4 345s 345s - New -------------------------------------------------------------------------- 345s 345s | The 4 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 345s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 345s 345s # Assignments and calls to `library` are not considered tests by 345s # `unitizer` so you will not need to review them 345s 345s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 345s > dat <- data.frame(x = 1:100, y = (1:100)^2) 345s > res <- fastlm(dat$x, dat$y) 345s 345s # The `unitizer>` prompt is like the standard R prompt. You may 345s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 345s # `str(res)`. 345s # 345s # Once you are done reviewing, you need to tell `unitizer` you 345s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 345s 345s > res 345s intercept slope rsq 345s -1717.000 101.000 0.939 345s attr(,"class") 345s [1] "fastlm" 345s 345s unitizer> QQ 345s 345s | No changes recorded. 345s | unitizer unchanged. 345s 345s | Summary of files in common directory 'unitizer': 345s | 345s | Pass Fail New 345s | *1. fastlm1.R - - 4 345s | *2. fastlm2.R - - 1 345s | *3. unitizer.fastlm.R - - 3 345s | ..................................... 345s | - - 8 345s | Legend: 345s | * `unitizer` requires review 345s 345s | Type number of unitizer to review, 'A' to review all that require review 345s 345s unitizer> Q 345s 345s > 345s > # Now test `unitize_dir`; we are testing all different combination of whether 345s > # a unitizer is accepted and updated 345s > # Review all 345s > # Accept all 345s > # Quit 345s > # Quit 345s > # Re-evalute 345s > # Review remaining 345s > # Accept all 345s > # Quit from review 345s > # Quit completely 345s > 345s > unitizer:::read_line_set_vals(c("A", "Y", "Y", "Y", "Y", "Y", 345s + "Q", "Q", "R", "A", "Y", "Y", "Q", "Q")) 345s > untz3a <- unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 345s 345s | Summary of files in common directory 'unitizer': 345s | 345s | Pass Fail New 345s | *1. fastlm1.R - - 4 345s | *2. fastlm2.R - - 1 345s | *3. unitizer.fastlm.R - - 3 345s | ..................................... 345s | - - 8 345s | Legend: 345s | * `unitizer` requires review 345s 345s | Type number of unitizer to review, 'A' to review all that require review 345s 345s unitizer> A 345s 345s +------------------------------------------------------------------------------+ 345s | unitizer for: unitizer/fastlm1.R | 345s +------------------------------------------------------------------------------+ 345s 345s Pass Fail New 345s - - 4 345s ........................... 345s - - 4 345s 345s - New -------------------------------------------------------------------------- 345s 345s | The 4 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 345s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 345s 345s # Assignments and calls to `library` are not considered tests by 345s # `unitizer` so you will not need to review them 345s 345s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 345s > dat <- data.frame(x = 1:100, y = (1:100)^2) 345s > res <- fastlm(dat$x, dat$y) 345s 345s # The `unitizer>` prompt is like the standard R prompt. You may 345s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 345s # `str(res)`. 345s # 345s # Once you are done reviewing, you need to tell `unitizer` you 345s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 345s 345s > res 345s intercept slope rsq 345s -1717.000 101.000 0.939 345s attr(,"class") 345s [1] "fastlm" 345s 345s unitizer> Y 345s 345s # There are three more tests to review; accept them with 'Y' 345s 345s > get_slope(res) 345s [1] 101 345s 345s unitizer> Y 345s 345s > get_rsq(res) 345s [1] 0.939 345s 345s unitizer> Y 345s 345s # This last test is expected to cause an error; press 'Y' to 345s # accept it so future checks can confirm the same error persists 345s 345s > fastlm(1:100, 1:10) 345s Error in fastlm(1:100, 1:10) : 345s Arguments `x` and `y` must be the same length. 345s 345s unitizer> Y 345s 345s = Finalize Unitizer ============================================================ 345s 345s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 345s | - Adding 4 out of 4 new tests 345s 345s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [QQ]uit All)? 345s 345s unitizer> Y 345s 345s | unitizer updated. 345s 345s +------------------------------------------------------------------------------+ 345s | unitizer for: unitizer/fastlm2.R | 345s +------------------------------------------------------------------------------+ 345s 345s Pass Fail New 345s - - 1 345s ........................... 345s - - 1 345s 345s - New -------------------------------------------------------------------------- 345s 345s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 345s | [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 345s 345s # For internal tests only; not for demo 345s 345s > x <- 1:10 345s > y <- 1:10^3 345s > res <- summary(lm(y ~ x, data.frame(x = x, y = y))) 345s > intercept <- res$coefficients[1, 1] 345s > slope <- res$coefficients[2, 1] 345s > rsq <- res$r.squared 345s > structure(c(intercept = intercept, slope = slope, rsq = rsq), 345s + class = "fastlm") 345s intercept slope rsq 345s 4.95e+02 1.00e+00 9.90e-05 345s attr(,"class") 345s [1] "fastlm" 345s 345s unitizer> Q 345s 345s | No changes recorded. 345s | unitizer unchanged. 345s 345s +------------------------------------------------------------------------------+ 345s | unitizer for: unitizer/unitizer.fastlm.R | 345s +------------------------------------------------------------------------------+ 345s 345s Pass Fail New 345s - - 3 345s ........................... 345s - - 3 345s 345s - New -------------------------------------------------------------------------- 345s 345s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 345s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 345s 345s # Extra test file for internal tests; not for DEMO 345s 345s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 345s > x <- 1:10 345s > y <- x^3 345s > res <- fastlm(x, y) 345s > get_slope(res) 345s [1] 105 345s 345s unitizer> Q 345s 345s | No changes recorded. 345s | unitizer unchanged. 345s 345s | Summary of files in common directory 'unitizer': 345s | 345s | Pass Fail New 345s | $1. fastlm1.R ? ? ? 345s | *2. fastlm2.R - - 1 345s | *3. unitizer.fastlm.R - - 3 345s | ..................................... 345s | ? ? ? 345s | Legend: 345s | * `unitizer` requires review 345s | $ `unitizer` has been modified and needs to be re-run to recompute summary 345s 345s | Type number of unitizer to review, 'A' to review all that require review, 'R' 345s | to re-run all updated 345s 345s unitizer> R 345s 345s | Summary of files in common directory 'unitizer': 345s | 345s | Pass Fail New 345s | 1. fastlm1.R 4 - - 345s | *2. fastlm2.R - - 1 345s | *3. unitizer.fastlm.R - - 3 345s | ..................................... 345s | 4 - 4 345s | Legend: 345s | * `unitizer` requires review 345s 345s | Type number of unitizer to review, 'A' to review all that require review 345s 345s unitizer> A 345s 345s +------------------------------------------------------------------------------+ 345s | unitizer for: unitizer/fastlm2.R | 345s +------------------------------------------------------------------------------+ 345s 345s Pass Fail New 345s - - 1 345s ........................... 345s - - 1 345s 345s - New -------------------------------------------------------------------------- 345s 345s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 345s | [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 345s 345s # For internal tests only; not for demo 345s 345s > x <- 1:10 345s > y <- 1:10^3 345s > res <- summary(lm(y ~ x, data.frame(x = x, y = y))) 345s > intercept <- res$coefficients[1, 1] 345s > slope <- res$coefficients[2, 1] 345s > rsq <- res$r.squared 345s > structure(c(intercept = intercept, slope = slope, rsq = rsq), 345s + class = "fastlm") 345s intercept slope rsq 345s 4.95e+02 1.00e+00 9.90e-05 345s attr(,"class") 345s [1] "fastlm" 345s 345s unitizer> Y 345s 345s = Finalize Unitizer ============================================================ 345s 345s | You will IRREVERSIBLY modify 'unitizer/fastlm2.unitizer' by: 345s | - Adding 1 out of 1 new tests 345s 345s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [QQ]uit All)? 345s 345s unitizer> Y 345s 345s | unitizer updated. 345s 345s +------------------------------------------------------------------------------+ 345s | unitizer for: unitizer/unitizer.fastlm.R | 345s +------------------------------------------------------------------------------+ 345s 345s Pass Fail New 345s - - 3 345s ........................... 345s - - 3 345s 345s - New -------------------------------------------------------------------------- 345s 345s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 345s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 346s 346s # Extra test file for internal tests; not for DEMO 346s 346s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 346s > x <- 1:10 346s > y <- x^3 346s > res <- fastlm(x, y) 346s > get_slope(res) 346s [1] 105 346s 346s unitizer> Q 346s 346s | No changes recorded. 346s | unitizer unchanged. 346s 346s | Summary of files in common directory 'unitizer': 346s | 346s | Pass Fail New 346s | 1. fastlm1.R 4 - - 346s | $2. fastlm2.R ? ? ? 346s | *3. unitizer.fastlm.R - - 3 346s | ..................................... 346s | ? ? ? 346s | Legend: 346s | * `unitizer` requires review 346s | $ `unitizer` has been modified and needs to be re-run to recompute summary 346s 346s | Type number of unitizer to review, 'A' to review all that require review, 'R' 346s | to re-run all updated 346s 346s unitizer> Q 346s 346s > untz3a.get.all <- vapply(get_unitizer(untz3a), class, character(1L)) 346s > identical(untz3a.get.all, c("unitizer", "unitizer", "logical")) 346s [1] TRUE 346s > print(untz3a) 346s Summary of tests (accept/total): 346s 346s id test.file New Passed Totals 346s 1 fastlm1.R 0/0 4/4 4/4 $ 346s 2 fastlm2.R 1/1 0/0 1/1 346s 3 unitizer.fastlm.R 0/3 0/0 0/3 * 346s ----------------------------------------------------- 346s 0 Totals 1/4 4/4 5/8 346s 346s * unitizer was not saved 346s $ unitizer was saved in prior evaluation 346s 346s Test files in common directory 'tests/unitizer' 346s > untz3a.first <- untz3a[[1L]] 346s > print(untz3a.first) 346s Test File: tests/unitizer/fastlm1.R 346s Store ID: tests/unitizer/fastlm1.unitizer 346s 346s id call ignored status user reviewed 346s 1 1 library(utzflm, lib.loc = g... * Passed Y FALSE 346s 2 2 dat <- data.frame(x = 1:100... * Passed Y FALSE 346s 3 3 res <- fastlm(dat$x, dat$y) * Passed Y FALSE 346s 4 4 res Passed Y FALSE 346s 5 5 get_slope(res) Passed Y FALSE 346s 6 6 get_rsq(res) Passed Y FALSE 346s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 346s 346s You chose NOT to save these changes to the unitizer store 346s > 346s > identical(class(untz3a), "unitizer_results") 346s [1] TRUE 346s > identical( 346s + lapply(untz3a, class), 346s + replicate(3L, c("unitizer_result", "data.frame"), simplify = FALSE) 346s + ) 346s [1] TRUE 346s > 346s > untz3a.cpy <- untz3a 346s > # need to drop temp file attributes for tests 346s > for (i in seq_along(untz3a.cpy)) { 346s + attr(untz3a.cpy[[i]], "test.file") <- basename(attr(untz3a.cpy[[i]], 346s + "test.file")) 346s + attr(untz3a.cpy[[i]], "store.id") <- basename(attr(untz3a.cpy[[i]], 346s + "store.id")) 346s + } 346s > all.equal(untz3a.cpy, rds("unitize_res1")) 346s [1] TRUE 346s > 346s > # dummy class for errors 346s > untz3a.first.bad <- untz3a.first 346s > setClass("uhtsdfoqiuerhzb", slots=c(a='integer')) 346s > attr(untz3a.first.bad, "store.id") <- new("uhtsdfoqiuerhzb") 346s > print(untz3a.first.bad) 346s Test File: tests/unitizer/fastlm1.R 346s Store ID: 346s 346s id call ignored status user reviewed 346s 1 1 library(utzflm, lib.loc = g... * Passed Y FALSE 346s 2 2 dat <- data.frame(x = 1:100... * Passed Y FALSE 346s 3 3 res <- fastlm(dat$x, dat$y) * Passed Y FALSE 346s 4 4 res Passed Y FALSE 346s 5 5 get_slope(res) Passed Y FALSE 346s 6 6 get_rsq(res) Passed Y FALSE 346s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 346s 346s You chose NOT to save these changes to the unitizer store 346s > 346s > # this is a bit contrived as it isn't possible to directly create an empty 346s > # unitize dir result 346s > untz3a.empty <- untz3a[0] 346s > class(untz3a.empty) <- class(untz3a) 346s > print(untz3a.empty) 346s | No unitizers 346s 346s > 346s > # Now accept the last remaining tests 346s > # unlink(list.files(test.dir, pattern="\\.unitizer$", full.names=TRUE), 346s > # recursive=TRUE) 346s > # Invalid input 346s > # Review third unitizer 346s > # Accept all 346s > # Re-eval and exit (again, not clear this is right thing to do) 346s > unitizer:::read_line_set_vals(c("3000", "3", "Y", "Y", "Y", "Y", 346s + "R")) 346s > untz3b <- unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 346s 346s | Summary of files in common directory 'unitizer': 346s | 346s | Pass Fail New 346s | 1. fastlm1.R 4 - - 346s | 2. fastlm2.R 1 - - 346s | *3. unitizer.fastlm.R - - 3 346s | ..................................... 346s | 5 - 3 346s | Legend: 346s | * `unitizer` requires review 346s 346s | Type number of unitizer to review, 'A' to review all that require review 346s 346s unitizer> 3000 346s | Type a number in `1:3` at the prompt 346s [1] 3000 346s unitizer> 3 346s +------------------------------------------------------------------------------+ 346s | unitizer for: unitizer/unitizer.fastlm.R | 346s +------------------------------------------------------------------------------+ 346s 346s Pass Fail New 346s - - 3 346s ........................... 346s - - 3 346s 346s - New -------------------------------------------------------------------------- 346s 346s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 346s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 346s 346s # Extra test file for internal tests; not for DEMO 346s 346s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 346s > x <- 1:10 346s > y <- x^3 346s > res <- fastlm(x, y) 346s > get_slope(res) 346s [1] 105 346s 346s unitizer> Y 346s 346s > get_rsq(res) 346s [1] 0.862 346s 346s unitizer> Y 346s 346s > get_intercept(res) 346s [1] -277 346s 346s unitizer> Y 346s 346s = Finalize Unitizer ============================================================ 346s 346s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 346s | - Adding 3 out of 3 new tests 346s 346s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 346s 346s unitizer> Y 346s 346s | unitizer updated. 346s 346s | Summary of files in common directory 'unitizer': 346s | 346s | Pass Fail 346s | 1. fastlm1.R 4 - 346s | 2. fastlm2.R 1 - 346s | $3. unitizer.fastlm.R ? ? 346s | ................................ 346s | ? ? 346s | Legend: 346s | $ `unitizer` has been modified and needs to be re-run to recompute summary 346s 346s | Type number of unitizer to review, 'A' to review all that require review, 'R' 346s | to re-run all updated 346s 346s unitizer> R 346s 346s | Summary of files in common directory 'unitizer': 346s | 346s | Pass Fail 346s | 1. fastlm1.R 4 - 346s | 2. fastlm2.R 1 - 346s | 3. unitizer.fastlm.R 3 - 346s | ................................ 346s | 8 - 346s 346s | 8/8 tests passed; nothing to review. 346s 346s > print(untz3b) 346s Summary of tests (accept/total): 346s 346s id test.file Passed 346s 1 fastlm1.R 4/4 * 346s 2 fastlm2.R 1/1 * 346s 3 unitizer.fastlm.R 3/3 $ 346s --------------------------------- 346s 0 Totals 8/8 346s 346s * unitizer was not saved 346s $ unitizer was saved in prior evaluation 346s 346s Test files in common directory 'tests/unitizer' 346s > identical( 346s + vapply(get_unitizer(untz3b), class, character(1L)), rep("unitizer", 3L) 346s + ) 346s [1] TRUE 346s > # - "namespace conflict" ------------------------------------------------------- 346s > 346s > # Namespace conflicts; unfortunately if either `covr` or `data.table` are 346s > # loaded this may not work quite right. Also as of `covr` 2.2.2 it seems that 346s > # the R session `covr` launches now seems to load the covr namespace. The 346s > # logic here ensures covr namespace is always loaded for this tests, if 346s > # possible. So we omit the line were what namespaces could not be unloaded are 346s > # mentioned. 346s > 346s > unitizer:::read_line_set_vals("Y") 346s > ns.conf1 <- unitizer:::capture_output( 346s + unitize_dir(FLM.TEST.DIR, state = "pristine", interactive.mode = TRUE) 346s + ) 347s > ns.conf1$message <- ns.conf1$message[-3] 347s > ns.conf1 347s - Output ----------------------------------------------------------------------- 347s 347s 347s | Summary of files in common directory 'unitizer': 347s | 347s | Pass Fail 347s | 1. fastlm1.R 4 - 347s | 2. fastlm2.R 1 - 347s | 3. unitizer.fastlm.R 3 - 347s | ................................ 347s | 8 - 347s 347s | Do you wish to proceed despite compromised state tracking 347s | ([Y]es, [N]o)? 347s 347s unitizer> Y 347s 347s - Message ---------------------------------------------------------------------- 347s 347s | `unitizer` was unable to run with `options` state tracking enabled starting 347s | with the first test file because the following namespaces could not be 347s 347s | You may proceed normally but be aware that option state was not managed 347s | starting with the file in question, and option state will not be managed 347s | during review, or restored to original values after `unitizer` completes 347s | evaluation. You may quit `unitizer` now to avoid any changes. See `?unitiz- 347s | erState` for more details. 347s 347s | 8/8 tests passed; nothing to review. 347s 347s > 347s > unitizer:::read_line_set_vals("N") 347s > ns.conf2 <- unitizer:::capture_output( 347s + unitize_dir(FLM.TEST.DIR, state = "pristine", interactive.mode = TRUE) 347s + ) 347s > ns.conf2$message <- ns.conf2$message[-3] 347s > ns.conf2 347s - Output ----------------------------------------------------------------------- 347s 347s 347s | Summary of files in common directory 'unitizer': 347s | 347s | Pass Fail 347s | 1. fastlm1.R 4 - 347s | 2. fastlm2.R 1 - 347s | 3. unitizer.fastlm.R 3 - 347s | ................................ 347s | 8 - 347s 347s | Do you wish to proceed despite compromised state tracking 347s | ([Y]es, [N]o)? 347s 347s unitizer> N 347s 347s - Message ---------------------------------------------------------------------- 347s 347s | `unitizer` was unable to run with `options` state tracking enabled starting 347s | with the first test file because the following namespaces could not be 347s 347s | You may proceed normally but be aware that option state was not managed 347s | starting with the file in question, and option state will not be managed 347s | during review, or restored to original values after `unitizer` completes 347s | evaluation. You may quit `unitizer` now to avoid any changes. See `?unitiz- 347s | erState` for more details. 347s 347s > 347s > # Non-interactive; also testing what happens when we run a test with errors 347s > # inside a try block 347s > 347s > try(unitize_dir(FLM.TEST.DIR, state = "pristine", interactive.mode = FALSE)) 347s 347s Warning in check_call_stack() : 347s It appears you are running unitizer inside an error handling function such as 347s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 347s couraged as it may cause unpredictable behavior from unitizer in the event tests 347s produce conditions / errors. We strongly recommend you re-run your tests 347s outside of such handling functions. 347s 347s 347s 347s 347s 347s 347s | Unexpectedly exited evaluation attempt when executing test expression: 347s | > fastlm(1:100, 1:10) 347s | Make sure you are not calling `unitize` inside a `tryCatch`/`try` block, 347s | invoking a restart defined outside `unitize`, evaluating an expression that 347s | calls `quit()`/`q()`, or quitting from a `browser()`/`debug()`/`trace()`. If 347s | none of these apply yet you are seeing this message please contact package 347s | maintainer. 347s 347s Error in fastlm(1:100, 1:10) : 347s Arguments `x` and `y` must be the same length. 347s > ns.conf3 <- unitizer:::capture_output( 347s + try( 347s + unitize( 347s + file.path(FLM.TEST.DIR, "fastlm2.R"), state = "pristine", 347s + interactive.mode = FALSE 347s + ) ) ) 348s > ns.conf3$message <- ns.conf3$message[-grep('unloaded', ns.conf3$message)] 348s > ns.conf3 348s - Output ----------------------------------------------------------------------- 348s 348s 348s - Message ---------------------------------------------------------------------- 348s 348s Warning in check_call_stack() : 348s It appears you are running unitizer inside an error handling function such as 348s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 348s couraged as it may cause unpredictable behavior from unitizer in the event tests 348s produce conditions / errors. We strongly recommend you re-run your tests 348s outside of such handling functions. 348s Warning in history_capt(history, interactive.mode) : 348s Unable to capture history in non-interactive mode. 348s | `unitizer` was unable to run with `options` state tracking enabled starting 348s | with the first test file because the following namespaces could not be 348s 348s Error in unitize_browse(unitizers = unitizers[valid], mode = mode, interactive.mode = interactive.mode, : 348s Unable to proceed in non-interactive mode; set options state tracking to a value 348s less than or equal to search path state tracking or see vignette for other 348s workarounds. 348s > 348s > # - "Removing Tests" ----------------------------------------------------------- 348s > 348s > # Removing tests; del2 has the same tests as del1, but with some removed 348s > extra.dir <- file.path(FLM.TEST.DIR, "..", "extra") 348s > unitize(file.path(extra.dir, "del1.R"), auto.accept = "new", interactive.mode = FALSE) 348s 348s Warning in history_capt(history, interactive.mode) : 348s Unable to capture history in non-interactive mode. 348s +------------------------------------------------------------------------------+ 348s | unitizer for: extra/del1.R | 348s +------------------------------------------------------------------------------+ 348s 348s Pass Fail New 348s basic tests - - 3 348s more tests - - 3 348s ............................ 348s - - 6 348s 348s | Auto-accepting changes... 348s | unitizer updated. 348s 348s > unitizer:::read_line_set_vals(c("Y", "YY", "Y", "Y")) 348s > unitize( 348s + file.path(extra.dir, "del2.R"), 348s + store.id = file.path(extra.dir, "del1.unitizer"), 348s + interactive.mode = TRUE 348s + ) 348s 348s +------------------------------------------------------------------------------+ 348s | unitizer for: extra/del2.R | 348s +------------------------------------------------------------------------------+ 348s 348s Pass Fail Del 348s basic tests 2 - 1 348s - - 3 348s ............................ 348s 2 - 4 348s 348s = basic tests ================================================================== 348s 348s - Removed ---------------------------------------------------------------------- 348s 348s | The following test exists in the unitizer store but not in the new test 348s | script. Remove test from store ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, 348s | [Q]uit, [H]elp)? 348s 348s > "hello" 348s [1] "hello" 348s 348s unitizer> Y 348s 348s = Other Removed Items ========================================================== 348s 348s - Removed ---------------------------------------------------------------------- 348s 348s | The 3 tests in this section exist in the unitizer store but not in the new 348s | test script. Remove tests from store ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, 348s | [Q]uit, [H]elp)? 348s 348s > 3 348s [1] 3 348s 348s unitizer> YY 348s 348s 1. 3 . . . . Removed:- 348s 2. 645 . . . . Removed:- 348s 3. 9/0 . . . . Removed:- 348s 348s Choose 'Y' for the 3 tests shown above ([Y]es, [N]o)? 348s unitizer> Y 348s 348s = Finalize Unitizer ============================================================ 348s 348s | You will IRREVERSIBLY modify 'extra/del1.unitizer' by: 348s | - Removing 4 out of 4 removed tests 348s 348s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 348s 348s unitizer> Y 348s 348s | unitizer updated. 348s 348s > # - "navigate" ----------------------------------------------------------------- 348s > 348s > # Update `fastlm` to cause unitizers to fail, and go through the errors 348s > update_fastlm(FLM, version = "0.1.1") 348s > inst_pak(FLM) 349s > # Try navigating through the unitizer 349s > unitizer:::read_line_set_vals(c("P", "B", "3", "N", "U", "N", 349s + "N", "B", "U", "Q")) 349s > untz7a <- unitize(FLM.TEST.FILE, interactive.mode = TRUE) 349s 350s +------------------------------------------------------------------------------+ 350s | unitizer for: unitizer/fastlm1.R | 350s +------------------------------------------------------------------------------+ 350s 350s Pass Fail 350s 2 2 350s ...................... 350s 2 2 350s 350s - Failed ----------------------------------------------------------------------- 350s 350s | The 2 tests in this section failed because the new evaluations do not match 350s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 350s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 350s 350s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 350s > dat <- data.frame(x = 1:100, y = (1:100)^2) 350s > res <- fastlm(dat$x, dat$y) 350s 350s # Our fast computations do not produce the same results as our 350s # original tests so they fail. If you need more detail than the 350s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 350s # 350s # You should reject these tests by typing 'N' at the prompt since 350s # they are incorrect. 350s 350s > res 350s intercept slope rsq 350s -3.54e+13 7.01e+11 9.39e-01 350s attr(,"class") 350s [1] "fastlm" 350s 350s | Value mismatch: 350s 350s < .ref > .new 350s @@ 1,4 @@ @@ 1,4 @@ 350s intercept slope rsq intercept slope rsq 350s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 350s attr(,"class") attr(,"class") 350s [1] "fastlm" [1] "fastlm" 350s 350s | State mismatch; see `.DIFF$state` for details. 350s 350s unitizer> P 350s 350s | At first reviewable item; nothing to step back to 350s 350s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 350s > dat <- data.frame(x = 1:100, y = (1:100)^2) 350s > res <- fastlm(dat$x, dat$y) 350s 350s # Our fast computations do not produce the same results as our 350s # original tests so they fail. If you need more detail than the 350s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 350s # 350s # You should reject these tests by typing 'N' at the prompt since 350s # they are incorrect. 350s 350s > res 350s intercept slope rsq 350s -3.54e+13 7.01e+11 9.39e-01 350s attr(,"class") 350s [1] "fastlm" 350s 350s | Value mismatch: 350s 350s < .ref > .new 350s @@ 1,4 @@ @@ 1,4 @@ 350s intercept slope rsq intercept slope rsq 350s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 350s attr(,"class") attr(,"class") 350s [1] "fastlm" [1] "fastlm" 350s 350s | State mismatch; see `.DIFF$state` for details. 350s 350s unitizer> B 350s 350s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 350s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 350s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 350s 4. res . . . . . . . . . . . . . . . . . . . . Failed:- 350s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:- 350s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 350s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 350s 350s | What test do you wish to review (input a test number, [U]nreviewed)? 350s 350s unitizer> 3 350s 350s | You selected a test that is not normally reviewed in this mode; 350s | as such, upon test completion, you will be brought back to this menu 350s | instead of being taken to the next reviewable test. 350s 350s - Failed ----------------------------------------------------------------------- 350s 350s | The 2 tests in this section failed because the new evaluations do not match 350s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 350s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 350s 350s > res <- fastlm(dat$x, dat$y) 350s unitizer> N 350s 350s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 350s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 350s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:N 350s 4. res . . . . . . . . . . . . . . . . . . . . Failed:- 350s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:- 350s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 350s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 350s 350s | What test do you wish to review (input a test number, [U]nreviewed)? 350s 350s unitizer> U 350s 350s - Failed ----------------------------------------------------------------------- 350s 350s | The 2 tests in this section failed because the new evaluations do not match 350s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 350s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 350s 350s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 350s > dat <- data.frame(x = 1:100, y = (1:100)^2) 350s > res <- fastlm(dat$x, dat$y) 350s 350s # Our fast computations do not produce the same results as our 350s # original tests so they fail. If you need more detail than the 350s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 350s # 350s # You should reject these tests by typing 'N' at the prompt since 350s # they are incorrect. 350s 350s > res 350s intercept slope rsq 350s -3.54e+13 7.01e+11 9.39e-01 350s attr(,"class") 350s [1] "fastlm" 350s 350s | Value mismatch: 350s 350s < .ref > .new 350s @@ 1,4 @@ @@ 1,4 @@ 350s intercept slope rsq intercept slope rsq 350s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 350s attr(,"class") attr(,"class") 350s [1] "fastlm" [1] "fastlm" 350s 350s | State mismatch; see `.DIFF$state` for details. 350s 350s unitizer> N 350s 350s # This one is also incorrect; reject with 'N' 350s 350s > get_slope(res) 350s [1] 7.01e+11 350s 350s | Value mismatch: 350s 350s < .ref > .new 350s @@ 1 @@ @@ 1 @@ 350s < [1] 101 > [1] 7.01e+11 350s 350s | State mismatch; see `.DIFF$state` for details. 350s 350s unitizer> N 350s 350s = Finalize Unitizer ============================================================ 350s 350s | You made no changes to the unitizer so there is no need to update it. While 350s | unnecessary, you can force an update by typing O at the prompt. 350s 350s | Exit unitizer ([Y]es, [P]rev, [B]rowse, [R]erun, f[O]rce)? 350s 350s unitizer> B 350s 350s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 350s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 350s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:N 350s 4. res . . . . . . . . . . . . . . . . . . . . Failed:N 350s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:N 350s 6. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 350s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . Passed:- 350s 350s | What test do you wish to review (input a test number, [U]nreviewed)? 350s 350s unitizer> U 350s 350s | No unreviewed tests. 350s 350s = Finalize Unitizer ============================================================ 350s 350s | You made no changes to the unitizer so there is no need to update it. While 350s | unnecessary, you can force an update by typing O at the prompt. 350s 350s | Exit unitizer ([Y]es, [P]rev, [B]rowse, [R]erun, f[O]rce)? 350s 350s unitizer> Q 350s 350s | Changes discarded. 350s | unitizer unchanged. 350s 350s > attr(untz7a, "test.file") <- basename(attr(untz7a, "test.file")) 350s > attr(untz7a, "store.id") <- basename(attr(untz7a, "store.id")) 350s > path <- attr(untz7a, "test.file") 350s > path 350s [1] "fastlm1.R" 350s > (path.norm <- unitizer:::normalize_path(path, mustWork=FALSE, exists=TRUE)) 350s [1] "fastlm1.R" 350s > (rel.path <- unitizer:::relativize_path(path.norm, wd=NULL, only.if.shorter=TRUE, exists=TRUE)) 350s [1] "fastlm1.R" 350s > (pkg.dir <- unitizer:::get_package_dir(path.norm, exists=TRUE)) 350s [1] "." 350s > untz7a 351s Test File: fastlm1.R 351s Store ID: fastlm1.unitizer 351s 351s id call ignored status user reviewed 351s 1 1 library(utzflm, lib.loc = g... * Failed N FALSE 351s 2 2 dat <- data.frame(x = 1:100... * Failed N FALSE 351s 3 3 res <- fastlm(dat$x, dat$y) * Failed N TRUE 351s 4 4 res Failed N TRUE 351s 5 5 get_slope(res) Failed N TRUE 351s 6 6 get_rsq(res) Passed Y FALSE 351s 7 7 fastlm(1:100, 1:10) Passed Y FALSE 351s 351s You chose NOT to save these changes to the unitizer store 351s > 351s > # - "review dir" --------------------------------------------------------------- 351s > 351s > # list help, review first item, but do nothing 351s > unitizer:::read_line_set_vals(c("H", "1", "Q", "Q")) 351s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 351s 351s | Summary of files in common directory 'unitizer': 351s | 351s | Pass Fail 351s | *1. fastlm1.R 2 2 351s | 2. fastlm2.R 1 - 351s | *3. unitizer.fastlm.R 1 2 351s | ................................ 351s | 4 4 351s | Legend: 351s | * `unitizer` requires review 351s 351s | Type number of unitizer to review, 'A' to review all that require review 351s 351s unitizer> H 351s 351s | Available options: 351s | - 1:3: unitizer number to review 351s | - A: Review all `unitzers` that require review (*) 351s | - AA: Review all tests 351s | - RR: Re-run all tests 351s | - Q: quit 351s | 351s | Pick a unitizer or an option ([A]ll, [Q]uit, [H]elp)? 351s 351s unitizer> 1 351s +------------------------------------------------------------------------------+ 351s | unitizer for: unitizer/fastlm1.R | 351s +------------------------------------------------------------------------------+ 351s 351s Pass Fail 351s 2 2 351s ...................... 351s 2 2 351s 351s - Failed ----------------------------------------------------------------------- 351s 351s | The 2 tests in this section failed because the new evaluations do not match 351s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 351s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 351s 351s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 351s > dat <- data.frame(x = 1:100, y = (1:100)^2) 351s > res <- fastlm(dat$x, dat$y) 351s 351s # Our fast computations do not produce the same results as our 351s # original tests so they fail. If you need more detail than the 351s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 351s # 351s # You should reject these tests by typing 'N' at the prompt since 351s # they are incorrect. 351s 351s > res 351s intercept slope rsq 351s -3.54e+13 7.01e+11 9.39e-01 351s attr(,"class") 351s [1] "fastlm" 351s 351s | Value mismatch: 351s 351s < .ref > .new 351s @@ 1,4 @@ @@ 1,4 @@ 351s intercept slope rsq intercept slope rsq 351s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 351s attr(,"class") attr(,"class") 351s [1] "fastlm" [1] "fastlm" 351s 351s | State mismatch; see `.DIFF$state` for details. 351s 351s unitizer> Q 351s 351s | No changes recorded. 351s | unitizer unchanged. 351s 351s | Summary of files in common directory 'unitizer': 351s | 351s | Pass Fail 351s | *1. fastlm1.R 2 2 351s | 2. fastlm2.R 1 - 351s | *3. unitizer.fastlm.R 1 2 351s | ................................ 351s | 4 4 351s | Legend: 351s | * `unitizer` requires review 351s 351s | Type number of unitizer to review, 'A' to review all that require review 351s 351s unitizer> Q 351s 351s > # incorrect selection 351s > unitizer:::read_line_set_vals(c("H", "4", "1", "Q", "Q")) 351s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 351s 352s | Summary of files in common directory 'unitizer': 352s | 352s | Pass Fail 352s | *1. fastlm1.R 2 2 352s | 2. fastlm2.R 1 - 352s | *3. unitizer.fastlm.R 1 2 352s | ................................ 352s | 4 4 352s | Legend: 352s | * `unitizer` requires review 352s 352s | Type number of unitizer to review, 'A' to review all that require review 352s 352s unitizer> H 352s 352s | Available options: 352s | - 1:3: unitizer number to review 352s | - A: Review all `unitzers` that require review (*) 352s | - AA: Review all tests 352s | - RR: Re-run all tests 352s | - Q: quit 352s | 352s | Pick a unitizer or an option ([A]ll, [Q]uit, [H]elp)? 352s 352s unitizer> 4 352s | Type a number in `1:3` at the prompt 352s [1] 4 352s unitizer> 1 352s +------------------------------------------------------------------------------+ 352s | unitizer for: unitizer/fastlm1.R | 352s +------------------------------------------------------------------------------+ 352s 352s Pass Fail 352s 2 2 352s ...................... 352s 2 2 352s 352s - Failed ----------------------------------------------------------------------- 352s 352s | The 2 tests in this section failed because the new evaluations do not match 352s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 352s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 352s 352s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 352s > dat <- data.frame(x = 1:100, y = (1:100)^2) 352s > res <- fastlm(dat$x, dat$y) 352s 352s # Our fast computations do not produce the same results as our 352s # original tests so they fail. If you need more detail than the 352s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 352s # 352s # You should reject these tests by typing 'N' at the prompt since 352s # they are incorrect. 352s 352s > res 352s intercept slope rsq 352s -3.54e+13 7.01e+11 9.39e-01 352s attr(,"class") 352s [1] "fastlm" 352s 352s | Value mismatch: 352s 352s < .ref > .new 352s @@ 1,4 @@ @@ 1,4 @@ 352s intercept slope rsq intercept slope rsq 352s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 352s attr(,"class") attr(,"class") 352s [1] "fastlm" [1] "fastlm" 352s 352s | State mismatch; see `.DIFF$state` for details. 352s 352s unitizer> Q 352s 352s | No changes recorded. 352s | unitizer unchanged. 352s 352s | Summary of files in common directory 'unitizer': 352s | 352s | Pass Fail 352s | *1. fastlm1.R 2 2 352s | 2. fastlm2.R 1 - 352s | *3. unitizer.fastlm.R 1 2 352s | ................................ 352s | 4 4 352s | Legend: 352s | * `unitizer` requires review 352s 352s | Type number of unitizer to review, 'A' to review all that require review 352s 352s unitizer> Q 352s 352s > # simulate slow unitizer review 352s > old.opt <- options(unitizer.prompt.b4.quit.time = 0) 352s > unitizer:::read_line_set_vals(c("H", "1", "Q", "Q", "Q", "Y")) 352s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 352s 352s | Summary of files in common directory 'unitizer': 352s | 352s | Pass Fail 352s | *1. fastlm1.R 2 2 352s | 2. fastlm2.R 1 - 352s | *3. unitizer.fastlm.R 1 2 352s | ................................ 352s | 4 4 352s | Legend: 352s | * `unitizer` requires review 352s 352s | Type number of unitizer to review, 'A' to review all that require review 352s 352s unitizer> H 352s 352s | Available options: 352s | - 1:3: unitizer number to review 352s | - A: Review all `unitzers` that require review (*) 352s | - AA: Review all tests 352s | - RR: Re-run all tests 352s | - Q: quit 352s | 352s | Pick a unitizer or an option ([A]ll, [Q]uit, [H]elp)? 352s 352s unitizer> 1 352s +------------------------------------------------------------------------------+ 352s | unitizer for: unitizer/fastlm1.R | 352s +------------------------------------------------------------------------------+ 352s 352s Pass Fail 352s 2 2 352s ...................... 352s 2 2 352s 352s - Failed ----------------------------------------------------------------------- 352s 352s | The 2 tests in this section failed because the new evaluations do not match 352s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 352s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 352s 352s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 352s > dat <- data.frame(x = 1:100, y = (1:100)^2) 352s > res <- fastlm(dat$x, dat$y) 352s 352s # Our fast computations do not produce the same results as our 352s # original tests so they fail. If you need more detail than the 352s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 352s # 352s # You should reject these tests by typing 'N' at the prompt since 352s # they are incorrect. 352s 352s > res 352s intercept slope rsq 352s -3.54e+13 7.01e+11 9.39e-01 352s attr(,"class") 352s [1] "fastlm" 352s 352s | Value mismatch: 352s 352s < .ref > .new 352s @@ 1,4 @@ @@ 1,4 @@ 352s intercept slope rsq intercept slope rsq 352s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 352s attr(,"class") attr(,"class") 352s [1] "fastlm" [1] "fastlm" 352s 352s | State mismatch; see `.DIFF$state` for details. 352s 352s unitizer> Q 352s 352s = Finalize Unitizer ============================================================ 352s 352s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 352s | unreviewed test. 352s 352s | You made no changes to the unitizer so there is no need to update it. While 352s | unnecessary, you can force an update by typing O at the prompt. 352s 352s | Exit unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 352s 352s unitizer> Q 352s 352s | Changes discarded. 352s | unitizer unchanged. 352s 352s | Summary of files in common directory 'unitizer': 352s | 352s | Pass Fail 352s | *1. fastlm1.R 2 2 352s | 2. fastlm2.R 1 - 352s | *3. unitizer.fastlm.R 1 2 352s | ................................ 352s | 4 4 352s | Legend: 352s | * `unitizer` requires review 352s 352s | Type number of unitizer to review, 'A' to review all that require review 352s 352s unitizer> Q 352s 352s | Are you sure you want to quit? 352s 352s unitizer> Y 352s 352s > options(old.opt) 352s > # Failures in non-interactive mode (note, can't run on the actual "fastlm.R" 352s > # file b/c we need to do this under a `try`): 352s > try( 352s + unitize_dir(FLM.TEST.DIR, pattern = "unitize|fastlm2", interactive.mode = FALSE) 352s + ) 352s 352s Warning in check_call_stack() : 352s It appears you are running unitizer inside an error handling function such as 352s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 352s couraged as it may cause unpredictable behavior from unitizer in the event tests 352s produce conditions / errors. We strongly recommend you re-run your tests 352s outside of such handling functions. 353s Warning in history_capt(history, interactive.mode) : 353s Unable to capture history in non-interactive mode. 353s | Summary of files in common directory 'unitizer': 353s | 353s | Pass Fail 353s | 1. fastlm2.R 1 - 353s | *2. unitizer.fastlm.R 1 2 353s | ................................ 353s | 2 2 353s | Legend: 353s | * `unitizer` requires review 353s 353s +------------------------------------------------------------------------------+ 353s | unitizer for: unitizer/unitizer.fastlm.R | 353s +------------------------------------------------------------------------------+ 353s 353s Pass Fail 353s 1 2 353s ...................... 353s 1 2 353s 353s - Failed ----------------------------------------------------------------------- 353s 353s | The 2 tests in this section failed because the new evaluations do not match 353s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 353s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 353s 353s # Extra test file for internal tests; not for DEMO 353s 353s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 353s > x <- 1:10 353s > y <- x^3 353s > res <- fastlm(x, y) 353s > get_slope(res) 353s [1] 717379 353s 353s | Value mismatch: 353s 353s < .ref > .new 353s @@ 1 @@ @@ 1 @@ 353s < [1] 105 > [1] 717379 353s 353s | State mismatch; see `.DIFF$state` for details. 353s 353s > get_intercept(res) 353s [1] -3945281 353s 353s | Value mismatch: 353s 353s < .ref > .new 353s @@ 1 @@ @@ 1 @@ 353s < [1] -277 > [1] -3945281 353s 353s | State mismatch; see `.DIFF$state` for details. 353s 353s | User input required to proceed, but we are in non-interactive mode. 353s 353s | unitizer unchanged. 353s 353s | * Fail: get_slope(res) 353s | * Fail: get_intercept(res) 353s | in 'unitizer/unitizer.fastlm.R' 353s 353s | Newly evaluated tests do not match unitizer (Pass: 2, Fail: 2); see above for 353s | more info, or run in interactive mode. 353s 353s Error in unitize_core(test.files = test.files, store.ids = store.ids, : 353s Cannot proceed in non-interactive mode. 353s > # review all that need review, but don't do anything 353s > unitizer:::read_line_set_vals(c("A", "Q", "Q", "Q")) 353s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 353s 353s | Summary of files in common directory 'unitizer': 353s | 353s | Pass Fail 353s | *1. fastlm1.R 2 2 353s | 2. fastlm2.R 1 - 353s | *3. unitizer.fastlm.R 1 2 353s | ................................ 353s | 4 4 353s | Legend: 353s | * `unitizer` requires review 353s 353s | Type number of unitizer to review, 'A' to review all that require review 353s 353s unitizer> A 353s 353s +------------------------------------------------------------------------------+ 353s | unitizer for: unitizer/fastlm1.R | 353s +------------------------------------------------------------------------------+ 353s 353s Pass Fail 353s 2 2 353s ...................... 353s 2 2 353s 353s - Failed ----------------------------------------------------------------------- 353s 353s | The 2 tests in this section failed because the new evaluations do not match 353s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 353s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 353s 353s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 353s > dat <- data.frame(x = 1:100, y = (1:100)^2) 353s > res <- fastlm(dat$x, dat$y) 353s 353s # Our fast computations do not produce the same results as our 353s # original tests so they fail. If you need more detail than the 353s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 354s # 354s # You should reject these tests by typing 'N' at the prompt since 354s # they are incorrect. 354s 354s > res 354s intercept slope rsq 354s -3.54e+13 7.01e+11 9.39e-01 354s attr(,"class") 354s [1] "fastlm" 354s 354s | Value mismatch: 354s 354s < .ref > .new 354s @@ 1,4 @@ @@ 1,4 @@ 354s intercept slope rsq intercept slope rsq 354s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 354s attr(,"class") attr(,"class") 354s [1] "fastlm" [1] "fastlm" 354s 354s | State mismatch; see `.DIFF$state` for details. 354s 354s unitizer> Q 354s 354s | No changes recorded. 354s | unitizer unchanged. 354s 354s +------------------------------------------------------------------------------+ 354s | unitizer for: unitizer/unitizer.fastlm.R | 354s +------------------------------------------------------------------------------+ 354s 354s Pass Fail 354s 1 2 354s ...................... 354s 1 2 354s 354s - Failed ----------------------------------------------------------------------- 354s 354s | The 2 tests in this section failed because the new evaluations do not match 354s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 354s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 354s 354s # Extra test file for internal tests; not for DEMO 354s 354s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 354s > x <- 1:10 354s > y <- x^3 354s > res <- fastlm(x, y) 354s > get_slope(res) 354s [1] 717379 354s 354s | Value mismatch: 354s 354s < .ref > .new 354s @@ 1 @@ @@ 1 @@ 354s < [1] 105 > [1] 717379 354s 354s | State mismatch; see `.DIFF$state` for details. 354s 354s unitizer> Q 354s 354s | No changes recorded. 354s | unitizer unchanged. 354s 354s | Summary of files in common directory 'unitizer': 354s | 354s | Pass Fail 354s | *1. fastlm1.R 2 2 354s | 2. fastlm2.R 1 - 354s | *3. unitizer.fastlm.R 1 2 354s | ................................ 354s | 4 4 354s | Legend: 354s | * `unitizer` requires review 354s 354s | Type number of unitizer to review, 'A' to review all that require review 354s 354s unitizer> Q 354s 354s > # review all, but don't do anything 354s > unitizer:::read_line_set_vals(c("AA", "Q", "Q", "Q", "Q")) 354s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 354s 354s | Summary of files in common directory 'unitizer': 354s | 354s | Pass Fail 354s | *1. fastlm1.R 2 2 354s | 2. fastlm2.R 1 - 354s | *3. unitizer.fastlm.R 1 2 354s | ................................ 354s | 4 4 354s | Legend: 354s | * `unitizer` requires review 354s 354s | Type number of unitizer to review, 'A' to review all that require review 354s 354s unitizer> AA 354s 354s +------------------------------------------------------------------------------+ 354s | unitizer for: unitizer/fastlm1.R | 354s +------------------------------------------------------------------------------+ 354s 354s Pass Fail 354s 2 2 354s ...................... 354s 2 2 354s 354s - Failed ----------------------------------------------------------------------- 354s 354s | The 2 tests in this section failed because the new evaluations do not match 354s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 354s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 354s 354s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 354s > dat <- data.frame(x = 1:100, y = (1:100)^2) 354s > res <- fastlm(dat$x, dat$y) 354s 354s # Our fast computations do not produce the same results as our 354s # original tests so they fail. If you need more detail than the 354s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 354s # 354s # You should reject these tests by typing 'N' at the prompt since 354s # they are incorrect. 354s 354s > res 354s intercept slope rsq 354s -3.54e+13 7.01e+11 9.39e-01 354s attr(,"class") 354s [1] "fastlm" 354s 354s | Value mismatch: 354s 354s < .ref > .new 354s @@ 1,4 @@ @@ 1,4 @@ 354s intercept slope rsq intercept slope rsq 354s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 354s attr(,"class") attr(,"class") 354s [1] "fastlm" [1] "fastlm" 354s 354s | State mismatch; see `.DIFF$state` for details. 354s 354s unitizer> Q 354s 354s | No changes recorded. 354s | unitizer unchanged. 354s 354s +------------------------------------------------------------------------------+ 354s | unitizer for: unitizer/fastlm2.R | 354s +------------------------------------------------------------------------------+ 354s 354s Pass Fail 354s 1 - 354s ...................... 354s 1 - 354s 354s *1. x <- 1:10 . . . . . . . . . . . . . . . . . . . -:- 354s *2. y <- 1:10^3 . . . . . . . . . . . . . . . . . . -:- 354s *3. res <- summary(lm(y ~ x, data.frame(x = x, y = y))) . . . . . -:- 354s *4. intercept <- res$coefficients[1, 1] . . . . . . . . . . -:- 354s *5. slope <- res$coefficients[2, 1] . . . . . . . . . . . -:- 354s *6. rsq <- res$r.squared . . . . . . . . . . . . . . . -:- 354s 7. structure(c(intercept = intercept, slope = slope, rsq = rsq),... Passed:- 354s 354s | What test do you wish to review (input a test number, [U]nreviewed)? 354s 354s unitizer> Q 354s 354s | No changes recorded. 354s | unitizer unchanged. 354s 354s +------------------------------------------------------------------------------+ 354s | unitizer for: unitizer/unitizer.fastlm.R | 354s +------------------------------------------------------------------------------+ 354s 354s Pass Fail 354s 1 2 354s ...................... 354s 1 2 354s 354s - Failed ----------------------------------------------------------------------- 354s 354s | The 2 tests in this section failed because the new evaluations do not match 354s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 354s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 354s 354s # Extra test file for internal tests; not for DEMO 354s 354s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 354s > x <- 1:10 354s > y <- x^3 354s > res <- fastlm(x, y) 354s > get_slope(res) 354s [1] 717379 354s 354s | Value mismatch: 354s 354s < .ref > .new 354s @@ 1 @@ @@ 1 @@ 354s < [1] 105 > [1] 717379 354s 354s | State mismatch; see `.DIFF$state` for details. 354s 354s unitizer> Q 354s 354s | No changes recorded. 354s | unitizer unchanged. 354s 354s | Summary of files in common directory 'unitizer': 354s | 354s | Pass Fail 354s | *1. fastlm1.R 2 2 354s | 2. fastlm2.R 1 - 354s | *3. unitizer.fastlm.R 1 2 354s | ................................ 354s | 4 4 354s | Legend: 354s | * `unitizer` requires review 354s 354s | Type number of unitizer to review, 'A' to review all that require review 354s 354s unitizer> Q 354s 354s > # review one, and Re-eval despite no change 354s > unitizer:::read_line_set_vals(c("1", "R", "Y", "Q", "Q")) 354s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 354s 355s | Summary of files in common directory 'unitizer': 355s | 355s | Pass Fail 355s | *1. fastlm1.R 2 2 355s | 2. fastlm2.R 1 - 355s | *3. unitizer.fastlm.R 1 2 355s | ................................ 355s | 4 4 355s | Legend: 355s | * `unitizer` requires review 355s 355s | Type number of unitizer to review, 'A' to review all that require review 355s 355s unitizer> 1 355s +------------------------------------------------------------------------------+ 355s | unitizer for: unitizer/fastlm1.R | 355s +------------------------------------------------------------------------------+ 355s 355s Pass Fail 355s 2 2 355s ...................... 355s 2 2 355s 355s - Failed ----------------------------------------------------------------------- 355s 355s | The 2 tests in this section failed because the new evaluations do not match 355s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 355s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 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 # Our fast computations do not produce the same results as our 355s # original tests so they fail. If you need more detail than the 355s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 355s # 355s # You should reject these tests by typing 'N' at the prompt since 355s # they are incorrect. 355s 355s > res 355s intercept slope rsq 355s -3.54e+13 7.01e+11 9.39e-01 355s attr(,"class") 355s [1] "fastlm" 355s 355s | Value mismatch: 355s 355s < .ref > .new 355s @@ 1,4 @@ @@ 1,4 @@ 355s intercept slope rsq intercept slope rsq 355s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 355s attr(,"class") attr(,"class") 355s [1] "fastlm" [1] "fastlm" 355s 355s | State mismatch; see `.DIFF$state` for details. 355s 355s unitizer> R 355s 355s | Toggling re-run mode ON for this unitizer 355s 355s = Finalize Unitizer ============================================================ 355s 355s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 355s | unreviewed test. 355s 355s | You made no changes to the unitizer so there is no need to update it. While 355s | unnecessary, you can force an update by typing O at the prompt. 355s 355s | Re-run unitizer ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, f[O]rce)? 355s 355s unitizer> Y 355s 355s | unitizer unchanged. 355s 355s +------------------------------------------------------------------------------+ 355s | unitizer for: unitizer/fastlm1.R | 355s +------------------------------------------------------------------------------+ 355s 355s Pass Fail 355s 2 2 355s ...................... 355s 2 2 355s 355s - Failed ----------------------------------------------------------------------- 355s 355s | The 2 tests in this section failed because the new evaluations do not match 355s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 355s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 355s 355s | Jumping to test #4 because that was the test under review when test re-run was 355s | requested. 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 # Our fast computations do not produce the same results as our 355s # original tests so they fail. If you need more detail than the 355s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 355s # 355s # You should reject these tests by typing 'N' at the prompt since 355s # they are incorrect. 355s 355s > res 355s intercept slope rsq 355s -3.54e+13 7.01e+11 9.39e-01 355s attr(,"class") 355s [1] "fastlm" 355s 356s | Value mismatch: 356s 356s < .ref > .new 356s @@ 1,4 @@ @@ 1,4 @@ 356s intercept slope rsq intercept slope rsq 356s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 356s attr(,"class") attr(,"class") 356s [1] "fastlm" [1] "fastlm" 356s 356s | State mismatch; see `.DIFF$state` for details. 356s 356s unitizer> Q 356s 356s | No changes recorded. 356s | unitizer unchanged. 356s 356s | Summary of files in common directory 'unitizer': 356s | 356s | Pass Fail 356s | *1. fastlm1.R 2 2 356s | 2. fastlm2.R 1 - 356s | *3. unitizer.fastlm.R 1 2 356s | ................................ 356s | 4 4 356s | Legend: 356s | * `unitizer` requires review 356s 356s | Type number of unitizer to review, 'A' to review all that require review 356s 356s unitizer> Q 356s 356s > unitizer:::read_line_set_vals(c("1", "RR", "Y", "Q", "Q")) 356s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 356s 356s | Summary of files in common directory 'unitizer': 356s | 356s | Pass Fail 356s | *1. fastlm1.R 2 2 356s | 2. fastlm2.R 1 - 356s | *3. unitizer.fastlm.R 1 2 356s | ................................ 356s | 4 4 356s | Legend: 356s | * `unitizer` requires review 356s 356s | Type number of unitizer to review, 'A' to review all that require review 356s 356s unitizer> 1 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: 356s 356s < .ref > .new 356s @@ 1,4 @@ @@ 1,4 @@ 356s intercept slope rsq intercept slope rsq 356s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 356s attr(,"class") attr(,"class") 356s [1] "fastlm" [1] "fastlm" 356s 356s | State mismatch; see `.DIFF$state` for details. 356s 356s unitizer> RR 356s 356s | Toggling re-run mode ON for all loaded unitizers 356s 356s = Finalize Unitizer ============================================================ 356s 356s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 356s | unreviewed test. 356s 356s | You made no changes to the unitizer so there is no need to update it. While 356s | unnecessary, you can force an update by typing O at the prompt. 356s 356s | Re-run all loaded unitizers ([Y]es, [P]rev, [B]rowse, [U]nreviewed, [R]erun, 356s | f[O]rce)? 356s 356s unitizer> Y 356s 356s | unitizer unchanged. 356s 357s | Summary of files in common directory 'unitizer': 357s | 357s | Pass Fail 357s | *1. fastlm1.R 2 2 357s | 2. fastlm2.R 1 - 357s | *3. unitizer.fastlm.R 1 2 357s | ................................ 357s | 4 4 357s | Legend: 357s | * `unitizer` requires review 357s 357s | Type number of unitizer to review, 'A' to review all that require review 357s 357s unitizer> Q 357s 357s > # Test force eval 357s > # first run, force update and accept 357s > # second run, R from dir summary doesn't set bookmarks 357s > unitizer:::read_line_set_vals(c("1", "O", "Q", "Y", "R", "1", 357s + "Q", "Q")) 357s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 357s 357s | Summary of files in common directory 'unitizer': 357s | 357s | Pass Fail 357s | *1. fastlm1.R 2 2 357s | 2. fastlm2.R 1 - 357s | *3. unitizer.fastlm.R 1 2 357s | ................................ 357s | 4 4 357s | Legend: 357s | * `unitizer` requires review 357s 357s | Type number of unitizer to review, 'A' to review all that require review 357s 357s unitizer> 1 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> O 357s 357s | Toggling force update mode ON 357s 357s unitizer> Q 357s 357s = Finalize Unitizer ============================================================ 357s 357s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 357s | unreviewed test. 357s 357s | Running in `force.update` mode so `unitizer` will be re-saved even though 357s | there are no changes to record (see `?unitize` for details). 357s 357s | You are about to update 'unitizer/fastlm1.unitizer' with re-evaluated but 357s | otherwise unchanged tests. 357s 357s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U]nreviewed, [R]erun, 357s | f[O]rce)? 357s 357s unitizer> Y 357s 357s | unitizer updated. 357s 357s | Summary of files in common directory 'unitizer': 357s | 357s | Pass Fail 357s | $1. fastlm1.R ? ? 357s | 2. fastlm2.R 1 - 357s | *3. unitizer.fastlm.R 1 2 357s | ................................ 357s | ? ? 357s | Legend: 357s | * `unitizer` requires review 357s | $ `unitizer` has been modified and needs to be re-run to recompute summary 357s 357s | Type number of unitizer to review, 'A' to review all that require review, 'R' 357s | to re-run all updated 357s 357s unitizer> R 357s 357s | Summary of files in common directory 'unitizer': 357s | 357s | Pass Fail 357s | *1. fastlm1.R 2 2 357s | 2. fastlm2.R 1 - 357s | *3. unitizer.fastlm.R 1 2 357s | ................................ 357s | 4 4 357s | Legend: 357s | * `unitizer` requires review 357s 357s | Type number of unitizer to review, 'A' to review all that require review 357s 357s unitizer> 1 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) 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> Q 358s 358s | No changes recorded. 358s | unitizer unchanged. 358s 358s | Summary of files in common directory 'unitizer': 358s | 358s | Pass Fail 358s | *1. fastlm1.R 2 2 358s | 2. fastlm2.R 1 - 358s | *3. unitizer.fastlm.R 1 2 358s | ................................ 358s | 4 4 358s | Legend: 358s | * `unitizer` requires review 358s 358s | Type number of unitizer to review, 'A' to review all that require review 358s 358s unitizer> Q 358s 358s > # Variations on YY, YYY, and YYY 358s > unitizer:::read_line_set_vals(c("1", "YY", "Y", "Q", "Q")) 358s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 358s 358s | Summary of files in common directory 'unitizer': 358s | 358s | Pass Fail 358s | *1. fastlm1.R 2 2 358s | 2. fastlm2.R 1 - 358s | *3. unitizer.fastlm.R 1 2 358s | ................................ 358s | 4 4 358s | Legend: 358s | * `unitizer` requires review 358s 358s | Type number of unitizer to review, 'A' to review all that require review 358s 358s unitizer> 1 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> YY 358s 358s 4. res . . . . . Failed:- 358s 5. get_slope(res) . Failed:- 358s 358s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 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> Q 358s 358s | Changes discarded. 358s | unitizer unchanged. 358s 358s | Summary of files in common directory 'unitizer': 358s | 358s | Pass Fail 358s | *1. fastlm1.R 2 2 358s | 2. fastlm2.R 1 - 358s | *3. unitizer.fastlm.R 1 2 358s | ................................ 358s | 4 4 358s | Legend: 358s | * `unitizer` requires review 358s 358s | Type number of unitizer to review, 'A' to review all that require review 358s 358s unitizer> Q 358s 358s > unitizer:::read_line_set_vals(c("1", "YYY", "Y", "Q", "Q")) 358s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 358s 359s | Summary of files in common directory 'unitizer': 359s | 359s | Pass Fail 359s | *1. fastlm1.R 2 2 359s | 2. fastlm2.R 1 - 359s | *3. unitizer.fastlm.R 1 2 359s | ................................ 359s | 4 4 359s | Legend: 359s | * `unitizer` requires review 359s 359s | Type number of unitizer to review, 'A' to review all that require review 359s 359s unitizer> 1 359s +------------------------------------------------------------------------------+ 359s | unitizer for: unitizer/fastlm1.R | 359s +------------------------------------------------------------------------------+ 359s 359s Pass Fail 359s 2 2 359s ...................... 359s 2 2 359s 359s - Failed ----------------------------------------------------------------------- 359s 359s | The 2 tests in this section failed because the new evaluations do not match 359s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 359s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 359s 359s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 359s > dat <- data.frame(x = 1:100, y = (1:100)^2) 359s > res <- fastlm(dat$x, dat$y) 359s 359s # Our fast computations do not produce the same results as our 359s # original tests so they fail. If you need more detail than the 359s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 359s # 359s # You should reject these tests by typing 'N' at the prompt since 359s # they are incorrect. 359s 359s > res 359s intercept slope rsq 359s -3.54e+13 7.01e+11 9.39e-01 359s attr(,"class") 359s [1] "fastlm" 359s 359s | Value mismatch: 359s 359s < .ref > .new 359s @@ 1,4 @@ @@ 1,4 @@ 359s intercept slope rsq intercept slope rsq 359s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 359s attr(,"class") attr(,"class") 359s [1] "fastlm" [1] "fastlm" 359s 359s | State mismatch; see `.DIFF$state` for details. 359s 359s unitizer> YYY 359s 359s 4. res . . . . . Failed:- 359s 5. get_slope(res) . Failed:- 359s 359s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 359s unitizer> Y 359s 359s = Finalize Unitizer ============================================================ 359s 359s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 359s | - Replacing 2 out of 2 failed tests 359s 359s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 359s 359s unitizer> Q 359s 359s | Changes discarded. 359s | unitizer unchanged. 359s 359s | Summary of files in common directory 'unitizer': 359s | 359s | Pass Fail 359s | *1. fastlm1.R 2 2 359s | 2. fastlm2.R 1 - 359s | *3. unitizer.fastlm.R 1 2 359s | ................................ 359s | 4 4 359s | Legend: 359s | * `unitizer` requires review 359s 359s | Type number of unitizer to review, 'A' to review all that require review 359s 359s unitizer> Q 359s 359s > unitizer:::read_line_set_vals(c("1", "YYYY", "Y", "Q", "Q")) 359s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 359s 359s | Summary of files in common directory 'unitizer': 359s | 359s | Pass Fail 359s | *1. fastlm1.R 2 2 359s | 2. fastlm2.R 1 - 359s | *3. unitizer.fastlm.R 1 2 359s | ................................ 359s | 4 4 359s | Legend: 359s | * `unitizer` requires review 359s 359s | Type number of unitizer to review, 'A' to review all that require review 359s 359s unitizer> 1 359s +------------------------------------------------------------------------------+ 359s | unitizer for: unitizer/fastlm1.R | 359s +------------------------------------------------------------------------------+ 359s 359s Pass Fail 359s 2 2 359s ...................... 359s 2 2 359s 359s - Failed ----------------------------------------------------------------------- 359s 359s | The 2 tests in this section failed because the new evaluations do not match 359s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 359s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 359s 359s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 359s > dat <- data.frame(x = 1:100, y = (1:100)^2) 359s > res <- fastlm(dat$x, dat$y) 359s 359s # Our fast computations do not produce the same results as our 359s # original tests so they fail. If you need more detail than the 359s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 359s # 359s # You should reject these tests by typing 'N' at the prompt since 359s # they are incorrect. 359s 359s > res 359s intercept slope rsq 359s -3.54e+13 7.01e+11 9.39e-01 359s attr(,"class") 359s [1] "fastlm" 359s 359s | Value mismatch: 359s 359s < .ref > .new 359s @@ 1,4 @@ @@ 1,4 @@ 359s intercept slope rsq intercept slope rsq 359s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 359s attr(,"class") attr(,"class") 359s [1] "fastlm" [1] "fastlm" 359s 359s | State mismatch; see `.DIFF$state` for details. 359s 359s unitizer> YYYY 359s 359s 4. res . . . . . Failed:- 359s 5. get_slope(res) . Failed:- 359s 359s Choose 'Y' for the 2 tests shown above ([Y]es, [N]o)? 359s unitizer> Y 359s 359s = Finalize Unitizer ============================================================ 359s 359s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 359s | - Replacing 2 out of 2 failed tests 359s 359s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 359s 359s unitizer> Q 359s 359s | Changes discarded. 359s | unitizer unchanged. 359s 359s | Summary of files in common directory 'unitizer': 359s | 359s | Pass Fail 359s | *1. fastlm1.R 2 2 359s | 2. fastlm2.R 1 - 359s | *3. unitizer.fastlm.R 1 2 359s | ................................ 359s | 4 4 359s | Legend: 359s | * `unitizer` requires review 359s 359s | Type number of unitizer to review, 'A' to review all that require review 359s 359s unitizer> Q 359s 359s > # review all, accepting all changes, and reevaluting everything; note that this 359s > # means we're accepting tests that are not correct 359s > unitizer:::read_line_set_vals(c("A", "Y", "Y", "Y", "Y", "Y", "Y", "RR")) 359s > unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 359s 360s | Summary of files in common directory 'unitizer': 360s | 360s | Pass Fail 360s | *1. fastlm1.R 2 2 360s | 2. fastlm2.R 1 - 360s | *3. unitizer.fastlm.R 1 2 360s | ................................ 360s | 4 4 360s | Legend: 360s | * `unitizer` requires review 360s 360s | Type number of unitizer to review, 'A' to review all that require review 360s 360s unitizer> A 360s 360s +------------------------------------------------------------------------------+ 360s | unitizer for: unitizer/fastlm1.R | 360s +------------------------------------------------------------------------------+ 360s 360s Pass Fail 360s 2 2 360s ...................... 360s 2 2 360s 360s - Failed ----------------------------------------------------------------------- 360s 360s | The 2 tests in this section failed because the new evaluations do not match 360s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 360s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 360s 360s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 360s > dat <- data.frame(x = 1:100, y = (1:100)^2) 360s > res <- fastlm(dat$x, dat$y) 360s 360s # Our fast computations do not produce the same results as our 360s # original tests so they fail. If you need more detail than the 360s # provided diff you may use `.new`/`.NEW` or `.ref`/`.REF`. 360s # 360s # You should reject these tests by typing 'N' at the prompt since 360s # they are incorrect. 360s 360s > res 360s intercept slope rsq 360s -3.54e+13 7.01e+11 9.39e-01 360s attr(,"class") 360s [1] "fastlm" 360s 360s | Value mismatch: 360s 360s < .ref > .new 360s @@ 1,4 @@ @@ 1,4 @@ 360s intercept slope rsq intercept slope rsq 360s < -1717.000 101.000 0.939 > -3.54e+13 7.01e+11 9.39e-01 360s attr(,"class") attr(,"class") 360s [1] "fastlm" [1] "fastlm" 360s 360s | State mismatch; see `.DIFF$state` for details. 360s 360s unitizer> Y 360s 360s # This one is also incorrect; reject with 'N' 360s 360s > get_slope(res) 360s [1] 7.01e+11 360s 360s | Value mismatch: 360s 360s < .ref > .new 360s @@ 1 @@ @@ 1 @@ 360s < [1] 101 > [1] 7.01e+11 360s 360s | State mismatch; see `.DIFF$state` for details. 360s 360s unitizer> Y 360s 360s = Finalize Unitizer ============================================================ 360s 360s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 360s | - Replacing 2 out of 2 failed tests 360s 360s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [QQ]uit All)? 360s 360s unitizer> Y 360s 360s | unitizer updated. 360s 360s +------------------------------------------------------------------------------+ 360s | unitizer for: unitizer/unitizer.fastlm.R | 360s +------------------------------------------------------------------------------+ 360s 360s Pass Fail 360s 1 2 360s ...................... 360s 1 2 360s 360s - Failed ----------------------------------------------------------------------- 360s 360s | The 2 tests in this section failed because the new evaluations do not match 360s | the reference values from the store. Overwrite with new results ([Y]es, [N]o, 360s | [P]rev, [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 360s 360s # Extra test file for internal tests; not for DEMO 360s 360s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 360s > x <- 1:10 360s > y <- x^3 360s > res <- fastlm(x, y) 360s > get_slope(res) 360s [1] 717379 360s 360s | Value mismatch: 360s 360s < .ref > .new 360s @@ 1 @@ @@ 1 @@ 360s < [1] 105 > [1] 717379 360s 360s | State mismatch; see `.DIFF$state` for details. 360s 360s unitizer> Y 360s 360s > get_intercept(res) 360s [1] -3945281 360s 360s | Value mismatch: 360s 360s < .ref > .new 360s @@ 1 @@ @@ 1 @@ 360s < [1] -277 > [1] -3945281 360s 360s | State mismatch; see `.DIFF$state` for details. 360s 360s unitizer> Y 360s 360s = Finalize Unitizer ============================================================ 360s 360s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 360s | - Replacing 2 out of 2 failed tests 360s 360s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [QQ]uit All)? 360s 360s unitizer> Y 360s 360s | unitizer updated. 360s 360s | Summary of files in common directory 'unitizer': 360s | 360s | Pass Fail 360s | $1. fastlm1.R ? ? 360s | 2. fastlm2.R 1 - 360s | $3. unitizer.fastlm.R ? ? 360s | ................................ 360s | ? ? 360s | Legend: 360s | $ `unitizer` has been modified and needs to be re-run to recompute summary 360s 360s | Type number of unitizer to review, 'A' to review all that require review, 'R' 360s | to re-run all updated 360s 360s unitizer> RR 360s 361s | Summary of files in common directory 'unitizer': 361s | 361s | Pass Fail 361s | 1. fastlm1.R 4 - 361s | 2. fastlm2.R 1 - 361s | 3. unitizer.fastlm.R 3 - 361s | ................................ 361s | 8 - 361s 361s | 8/8 tests passed; nothing to review. 361s 361s > 361s > # - "multi-sect" --------------------------------------------------------------- 361s > 361s > # Upgrade again, and try with deleted tests and other things 361s > update_fastlm(FLM, version = "0.1.2") 361s > inst_pak(FLM) 362s > unitizer:::read_line_set_vals(c("3", "ref(res)", "Y", "Y", "B", 362s + "1", "B", "U", "Y", "RR", "Y", "Q")) 362s > txt20 <- unitizer:::capture_output(unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)) 363s > txt20$output <- gsub("^<\\w+: .*?>", "", txt20$output) 363s > txt20 363s - Output ----------------------------------------------------------------------- 363s 363s 363s | Summary of files in common directory 'unitizer': 363s | 363s | Pass Fail New Del 363s | *1. fastlm1.R 2 2 - - 363s | 2. fastlm2.R 1 - - - 363s | *3. unitizer.fastlm.R 1 1 1 1 363s | .......................................... 363s | 4 3 1 1 363s | Legend: 363s | * `unitizer` requires review 363s 363s | Type number of unitizer to review, 'A' to review all that require review 363s 363s unitizer> 3 363s +------------------------------------------------------------------------------+ 363s | unitizer for: unitizer/unitizer.fastlm.R | 363s +------------------------------------------------------------------------------+ 363s 363s Pass Fail New Del 363s - - - 1 363s Basic Tests - 1 - - 363s Advanced Tests 1 - 1 - 363s .................................... 363s 1 1 1 1 363s 363s = =================================================================== 363s 363s - Removed ---------------------------------------------------------------------- 363s 363s | The following test exists in the unitizer store but not in the new test 363s | script. Remove test from store ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, 363s | [Q]uit, [H]elp)? 363s 363s > get_intercept(res) 363s [1] -3945281 363s 363s unitizer> ref(res) 363s unitizer> Y 363s 363s = Basic Tests ================================================================== 363s 363s - Failed ----------------------------------------------------------------------- 363s 363s | The following test failed because the new evaluation does not match the 363s | reference value from the store. Overwrite with new result ([Y]es, [N]o, 363s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 363s 363s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 363s > x <- 1:10 363s > y <- x^3 363s > res <- fastlm(x, y) 363s > get_slope(res) 363s [1] 105 363s 363s | Value mismatch: 363s 363s < .ref > .new 363s @@ 1 @@ @@ 1 @@ 363s < [1] 717379 > [1] 105 363s 363s | State mismatch; see `.DIFF$state` for details. 363s 363s unitizer> Y 363s 363s = Advanced Tests =============================================================== 363s 363s - New -------------------------------------------------------------------------- 363s 363s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 363s | [R]erun, [Q]uit, [H]elp)? 363s 363s > 2 * get_slope(res) + get_intercept(res) 363s [1] -66.4 363s 363s unitizer> B 363s 363s = =================================================================== 363s 8. get_intercept(res) . . . . . . . . . . . . . . . Removed:Y 363s = Basic Tests ================================================================== 363s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 363s *2. x <- 1:10 . . . . . . . . . . . . . . . . . . -:- 363s *3. y <- x^3 . . . . . . . . . . . . . . . . . . -:- 363s *4. res <- fastlm(x, y) . . . . . . . . . . . . . . -:- 363s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:Y 363s = Advanced Tests =============================================================== 363s 6. 2 * get_slope(res) + get_intercept(res) . . . . . . . . New:- 363s 7. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 363s 363s | What test do you wish to review (input a test number, [U]nreviewed)? 363s 363s unitizer> 1 363s 363s = Basic Tests ================================================================== 363s 363s - Failed ----------------------------------------------------------------------- 363s 363s | The following test failed because the new evaluation does not match the 363s | reference value from the store. Overwrite with new result ([Y]es, [N]o, 363s | [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 363s 363s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 363s unitizer> B 363s 363s = =================================================================== 363s 8. get_intercept(res) . . . . . . . . . . . . . . . Removed:Y 363s = Basic Tests ================================================================== 363s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 363s *2. x <- 1:10 . . . . . . . . . . . . . . . . . . -:- 363s *3. y <- x^3 . . . . . . . . . . . . . . . . . . -:- 363s *4. res <- fastlm(x, y) . . . . . . . . . . . . . . -:- 363s 5. get_slope(res) . . . . . . . . . . . . . . . . Failed:Y 363s = Advanced Tests =============================================================== 363s 6. 2 * get_slope(res) + get_intercept(res) . . . . . . . . New:- 363s 7. get_rsq(res) . . . . . . . . . . . . . . . . . Passed:- 363s 363s | What test do you wish to review (input a test number, [U]nreviewed)? 363s 363s unitizer> U 363s 363s = Advanced Tests =============================================================== 363s 363s - New -------------------------------------------------------------------------- 363s 363s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 363s | [R]erun, [Q]uit, [H]elp)? 363s 363s > 2 * get_slope(res) + get_intercept(res) 363s [1] -66.4 363s 363s unitizer> Y 363s 363s = Finalize Unitizer ============================================================ 363s 363s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 363s 363s unitizer> RR 363s 363s | Update unitizer and re-run all loaded unitizers ([Y]es, [N]o, [P]rev, [B] 363s | rowse, [R]erun)? 363s 363s unitizer> Y 363s 363s | Summary of files in common directory 'unitizer': 363s | 363s | Pass Fail 363s | *1. fastlm1.R 2 2 363s | 2. fastlm2.R 1 - 363s | 3. unitizer.fastlm.R 3 - 363s | ................................ 363s | 6 2 363s | Legend: 363s | * `unitizer` requires review 363s 363s | Type number of unitizer to review, 'A' to review all that require review 363s 363s unitizer> Q 363s 363s - Message ---------------------------------------------------------------------- 363s 363s `ref` is only active when there is an active secondary environment 363s | You selected a test that is not normally reviewed in this mode; 363s | as such, upon test completion, you will be brought back to this menu 363s | instead of being taken to the next reviewable test. 363s 363s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 363s | - Replacing 1 out of 1 failed tests 363s | - Adding 1 out of 1 new tests 363s | - Removing 1 out of 1 removed tests 363s 363s | Toggling re-run mode ON for all loaded unitizers 363s 363s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 363s | - Replacing 1 out of 1 failed tests 363s | - Adding 1 out of 1 new tests 363s | - Removing 1 out of 1 removed tests 363s 363s | unitizer updated. 363s 363s > 363s > # - "Load Fail" ---------------------------------------------------------------- 363s > 363s > # Purposefully mess up one of the unitizers to see if the load fail stuff works 363s > saveRDS(list(1, 2, 3), file.path(FLM.TEST.DIR, "fastlm1.unitizer", 363s + "data.rds")) 363s > try(unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE)) 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 | 363s | The following unitizer could not be loaded: 363s | - unitizer/fastlm1.unitizer: `get_unitizer` error: Retrieved object is not a 363s | unitizer store 363s 363s Error in load_unitizers(store.ids[active], test.files[active], par.frame = util.frame, : 363s Cannot proceed with invalid or out of date unitizers. You must either fix or remove them. 363s > unitizer:::read_line_set_vals(NULL) 363s > 363s PASS 363s Begin testing t-utz2.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: arm-unknown-linux-gnueabihf (32-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 > # Overflow tests from testthat.unitize.R 363s > 363s > source(file.path("_helper", "init.R")) 364s > source(file.path("_helper", "pkgs.R")) 364s Install Packages 367s Setup Demos 367s > 367s > library(unitizer) 367s > 367s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 367s > # - "unreviewed variations" ---------------------------------------------------- 367s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 367s > 367s > # Test unreviewed 367s > # Accept one and go to unreviewed 367s > # Accept one more and browse and go to unreviewed 367s > # Accept two remaining and confirm no unreviewed 367s > # No unreviewed tests 367s > unitizer:::read_line_set_vals( 367s + c("Y", "Q", "U", "Y", "B", "U", "Y", "Y", "U", "B", "U", "Q") 367s + ) 367s > out <- unitizer:::capture_output(unitize(FLM.TEST.FILE, interactive.mode = TRUE)) 369s > unitizer:::clean_eval_exp(out) 369s - Output ----------------------------------------------------------------------- 369s 369s 369s +------------------------------------------------------------------------------+ 369s | unitizer for: unitizer/fastlm1.R | 369s +------------------------------------------------------------------------------+ 369s 369s Pass Fail New 369s - - 4 369s ........................... 369s - - 4 369s 369s - New -------------------------------------------------------------------------- 369s 369s | The 4 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 # Assignments and calls to `library` are not considered tests by 369s # `unitizer` so you will not need to review them 369s 369s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 369s > dat <- data.frame(x = 1:100, y = (1:100)^2) 369s > res <- fastlm(dat$x, dat$y) 369s 369s # The `unitizer>` prompt is like the standard R prompt. You may 369s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 369s # `str(res)`. 369s # 369s # Once you are done reviewing, you need to tell `unitizer` you 369s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 369s 369s > res 369s intercept slope rsq 369s -1717.000 101.000 0.939 369s attr(,"class") 369s [1] "fastlm" 369s 369s unitizer> Y 369s 369s # There are three more tests to review; accept them with 'Y' 369s 369s > get_slope(res) 369s [1] 101 369s 369s unitizer> Q 369s 369s = Finalize Unitizer ============================================================ 369s 369s | You have 3 unreviewed tests; press `B` to browse tests, `U` to go to first 369s | unreviewed test. 369s 369s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U]nreviewed, [R]erun)? 369s 369s unitizer> U 369s 369s # There are three more tests to review; accept them with 'Y' 369s 369s > get_slope(res) 369s [1] 101 369s 369s unitizer> Y 369s 369s > get_rsq(res) 369s [1] 0.939 369s 369s unitizer> B 369s 369s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 369s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 369s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 369s 4. res . . . . . . . . . . . . . . . . . . . . New:Y 369s 5. get_slope(res) . . . . . . . . . . . . . . . . New:Y 369s 6. get_rsq(res) . . . . . . . . . . . . . . . . . New:- 369s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . New:- 369s 369s | What test do you wish to review (input a test number, [U]nreviewed)? 369s 369s unitizer> U 369s 369s - New -------------------------------------------------------------------------- 369s 369s | The 4 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 > get_rsq(res) 369s [1] 0.939 369s 369s unitizer> Y 369s 369s # This last test is expected to cause an error; press 'Y' to 369s # accept it so future checks can confirm the same error persists 369s 369s > fastlm(1:100, 1:10) 369s 369s unitizer> Y 369s 369s = Finalize Unitizer ============================================================ 369s 369s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 369s 369s unitizer> U 369s 369s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun, [Q]uit, [H]elp)? 369s 369s unitizer> B 369s 369s *1. library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) . -:- 369s *2. dat <- data.frame(x = 1:100, y = (1:100)^2) . . . . . . -:- 369s *3. res <- fastlm(dat$x, dat$y) . . . . . . . . . . . . -:- 369s 4. res . . . . . . . . . . . . . . . . . . . . New:Y 369s 5. get_slope(res) . . . . . . . . . . . . . . . . New:Y 369s 6. get_rsq(res) . . . . . . . . . . . . . . . . . New:Y 369s 7. fastlm(1:100, 1:10) . . . . . . . . . . . . . . New:Y 369s 369s | What test do you wish to review (input a test number, [U]nreviewed)? 369s 369s unitizer> U 369s 369s = Finalize Unitizer ============================================================ 369s 369s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 369s 369s unitizer> Q 369s 369s | unitizer unchanged. 369s 369s - Message ---------------------------------------------------------------------- 369s 369s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 369s | - Adding 1 out of 4 new tests 369s 369s Error in fastlm(1:100, 1:10) : 369s Arguments `x` and `y` must be the same length. 369s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 369s | - Adding 4 out of 4 new tests 369s 369s Error in : object 'U' not found 369s | No unreviewed tests. 369s 369s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 369s | - Adding 4 out of 4 new tests 369s 369s | Changes discarded. 369s > 369s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 369s > # - "Re-eval" ------------------------------------------------------------------ 369s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 369s > 369s > # Test re-eval 369s > # Re-eval and jump back to file 1 369s > # Quit from file 1 and back to main menu 369s > # Accept one test in file 2 and quit 369s > # Go to file 3, accept one, and Re-eval all 369s > 369s > unitizer:::read_line_set_vals( 369s + c("1", "Y", "R", "Y", "Q", "2", "Y", "Y", "3", "Y", "RR", "Y", "Q", "Q") 369s + ) 369s > untz1 <- unitize_dir(FLM.TEST.DIR, interactive.mode = TRUE) 369s 369s | Summary of files in common directory 'unitizer': 369s | 369s | Pass Fail New 369s | *1. fastlm1.R - - 4 369s | *2. fastlm2.R - - 1 369s | *3. unitizer.fastlm.R - - 3 369s | ..................................... 369s | - - 8 369s | Legend: 369s | * `unitizer` requires review 369s 369s | Type number of unitizer to review, 'A' to review all that require review 369s 369s unitizer> 1 369s +------------------------------------------------------------------------------+ 369s | unitizer for: unitizer/fastlm1.R | 369s +------------------------------------------------------------------------------+ 369s 369s Pass Fail New 369s - - 4 369s ........................... 369s - - 4 369s 369s - New -------------------------------------------------------------------------- 369s 369s | The 4 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 # Assignments and calls to `library` are not considered tests by 369s # `unitizer` so you will not need to review them 369s 369s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 369s > dat <- data.frame(x = 1:100, y = (1:100)^2) 369s > res <- fastlm(dat$x, dat$y) 369s 369s # The `unitizer>` prompt is like the standard R prompt. You may 369s # enter expressions such as `lm(y ~ x, dat)$coefficients`, or 369s # `str(res)`. 369s # 369s # Once you are done reviewing, you need to tell `unitizer` you 369s # accept the test by typing 'Y' at the prompt. Enter 'H' for help. 369s 369s > res 369s intercept slope rsq 369s -1717.000 101.000 0.939 369s attr(,"class") 369s [1] "fastlm" 369s 369s unitizer> Y 369s 369s # There are three more tests to review; accept them with 'Y' 369s 369s > get_slope(res) 369s [1] 101 369s 369s unitizer> R 370s 370s | Toggling re-run mode ON for this unitizer 370s 370s = Finalize Unitizer ============================================================ 370s 370s | You have 3 unreviewed tests; press `B` to browse tests, `U` to go to first 370s | unreviewed test. 370s 370s | You will IRREVERSIBLY modify 'unitizer/fastlm1.unitizer' by: 370s | - Adding 1 out of 4 new tests 370s 370s | Update unitizer and re-run unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U] 370s | nreviewed, [R]erun)? 370s 370s unitizer> Y 370s 370s | unitizer updated. 370s 370s +------------------------------------------------------------------------------+ 370s | unitizer for: unitizer/fastlm1.R | 370s +------------------------------------------------------------------------------+ 370s 370s Pass Fail New 370s 1 - 3 370s ........................... 370s 1 - 3 370s 370s - New -------------------------------------------------------------------------- 370s 370s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 370s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 370s 370s | Jumping to test #5 because that was the test under review when test re-run was 370s | requested. 370s 370s # There are three more tests to review; accept them with 'Y' 370s 370s > get_slope(res) 370s [1] 101 370s 370s unitizer> Q 370s 370s | No changes recorded. 370s | unitizer unchanged. 370s 370s | Summary of files in common directory 'unitizer': 370s | 370s | Pass Fail New 370s | *1. fastlm1.R 1 - 3 370s | *2. fastlm2.R - - 1 370s | *3. unitizer.fastlm.R - - 3 370s | ..................................... 370s | 1 - 7 370s | Legend: 370s | * `unitizer` requires review 370s 370s | Type number of unitizer to review, 'A' to review all that require review 370s 370s unitizer> 2 370s +------------------------------------------------------------------------------+ 370s | unitizer for: unitizer/fastlm2.R | 370s +------------------------------------------------------------------------------+ 370s 370s Pass Fail New 370s - - 1 370s ........................... 370s - - 1 370s 370s - New -------------------------------------------------------------------------- 370s 370s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 370s | [R]erun, [Q]uit, [H]elp)? 370s 370s # For internal tests only; not for demo 370s 370s > x <- 1:10 370s > y <- 1:10^3 370s > res <- summary(lm(y ~ x, data.frame(x = x, y = y))) 370s > intercept <- res$coefficients[1, 1] 370s > slope <- res$coefficients[2, 1] 370s > rsq <- res$r.squared 370s > structure(c(intercept = intercept, slope = slope, rsq = rsq), 370s + class = "fastlm") 370s intercept slope rsq 370s 4.95e+02 1.00e+00 9.90e-05 370s attr(,"class") 370s [1] "fastlm" 370s 370s unitizer> Y 370s 370s = Finalize Unitizer ============================================================ 370s 370s | You will IRREVERSIBLY modify 'unitizer/fastlm2.unitizer' by: 370s | - Adding 1 out of 1 new tests 370s 370s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 370s 370s unitizer> Y 370s 370s | unitizer updated. 370s 370s | Summary of files in common directory 'unitizer': 370s | 370s | Pass Fail New 370s | *1. fastlm1.R 1 - 3 370s | $2. fastlm2.R ? ? ? 370s | *3. unitizer.fastlm.R - - 3 370s | ..................................... 370s | ? ? ? 370s | Legend: 370s | * `unitizer` requires review 370s | $ `unitizer` has been modified and needs to be re-run to recompute summary 370s 370s | Type number of unitizer to review, 'A' to review all that require review, 'R' 370s | to re-run all updated 370s 370s unitizer> 3 370s +------------------------------------------------------------------------------+ 370s | unitizer for: unitizer/unitizer.fastlm.R | 370s +------------------------------------------------------------------------------+ 370s 370s Pass Fail New 370s - - 3 370s ........................... 370s - - 3 370s 370s - New -------------------------------------------------------------------------- 370s 370s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 370s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 370s 370s # Extra test file for internal tests; not for DEMO 370s 370s > library(utzflm, lib.loc = getOption("unitizer.tmp.lib.loc")) 370s > x <- 1:10 370s > y <- x^3 370s > res <- fastlm(x, y) 370s > get_slope(res) 370s [1] 105 370s 370s unitizer> Y 370s 370s > get_rsq(res) 370s [1] 0.862 370s 370s unitizer> RR 370s 370s | Toggling re-run mode ON for all loaded unitizers 370s 370s = Finalize Unitizer ============================================================ 370s 370s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 370s | unreviewed test. 370s 370s | You will IRREVERSIBLY modify 'unitizer/unitizer.fastlm.unitizer' by: 370s | - Adding 1 out of 3 new tests 370s 370s | Update unitizer and re-run all loaded unitizers ([Y]es, [N]o, [P]rev, [B] 370s | rowse, [U]nreviewed, [R]erun)? 370s 370s unitizer> Y 370s 370s | unitizer updated. 370s 371s | Summary of files in common directory 'unitizer': 371s | 371s | Pass Fail New 371s | *1. fastlm1.R 1 - 3 371s | 2. fastlm2.R 1 - - 371s | *3. unitizer.fastlm.R 1 - 2 371s | ..................................... 371s | 3 - 5 371s | Legend: 371s | * `unitizer` requires review 371s 371s | Type number of unitizer to review, 'A' to review all that require review 371s 371s unitizer> Q 371s 371s > print(untz1) 371s Summary of tests (accept/total): 371s 371s id test.file New Passed Totals 371s 1 fastlm1.R 0/3 1/1 1/4 $ 371s 2 fastlm2.R 0/0 1/1 1/1 $ 371s 3 unitizer.fastlm.R 0/2 1/1 1/3 $ 371s ----------------------------------------------------- 371s 0 Totals 0/5 3/3 3/8 371s 371s $ unitizer was saved in prior evaluation 371s 371s Test files in common directory 'tests/unitizer' 371s > # remove temp file names and display 371s > invisible(lapply(untz1, function(x) {print(x); cat('\n')})) 371s Test File: tests/unitizer/fastlm1.R 371s Store ID: tests/unitizer/fastlm1.unitizer 371s 371s id call ignored status user reviewed 371s 1 4 library(utzflm, lib.loc = g... * Passed Y FALSE 371s 2 5 dat <- data.frame(x = 1:100... * Passed Y FALSE 371s 3 6 res <- fastlm(dat$x, dat$y) * Passed Y FALSE 371s 4 7 res Passed Y FALSE 371s 5 1 get_slope(res) New N FALSE 371s 6 2 get_rsq(res) New N FALSE 371s 7 3 fastlm(1:100, 1:10) New N FALSE 371s 371s You chose NOT to save these changes to the unitizer store 371s 371s Test File: tests/unitizer/fastlm2.R 371s Store ID: tests/unitizer/fastlm2.unitizer 371s 371s id call ignored status user reviewed 371s 1 1 x <- 1:10 * Passed Y FALSE 371s 2 2 y <- 1:10^3 * Passed Y FALSE 371s 3 3 res <- summary(lm(y ~ x, da... * Passed Y FALSE 371s 4 4 intercept <- res$coefficien... * Passed Y FALSE 371s 5 5 slope <- res$coefficients[2... * Passed Y FALSE 371s 6 6 rsq <- res$r.squared * Passed Y FALSE 371s 7 7 structure(c(intercept = int... Passed Y FALSE 371s 371s You chose NOT to save these changes to the unitizer store 371s 371s Test File: tests/unitizer/unitizer.fastlm.R 371s Store ID: tests/unitizer/unitizer.fastlm.unitizer 371s 371s id call ignored status user reviewed 371s 1 3 library(utzflm, lib.loc = g... * Passed Y FALSE 371s 2 4 x <- 1:10 * Passed Y FALSE 371s 3 5 y <- x^3 * Passed Y FALSE 371s 4 6 res <- fastlm(x, y) * Passed Y FALSE 371s 5 7 get_slope(res) Passed Y FALSE 371s 6 1 get_rsq(res) New N FALSE 371s 7 2 get_intercept(res) New N FALSE 371s 371s You chose NOT to save these changes to the unitizer store 371s 371s > 371s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 371s > # - "Section Extra" ------------------------------------------------------------ 371s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 371s > 371s > # Make sure that deleted items from a section are still marked from that 371s > # section upgrade to version two to use the files that are set up for that 371s > # there; notice update_fastlm_*extra* 371s > # Re-set by dropping unitizers 371s > 371s > unlink(list.dirs(FLM.TEST.DIR, recursive = FALSE), recursive = TRUE) 371s > unitizer:::update_fastlm_extra(FLM) 371s > inst_pak(FLM) 372s > test.file.1 <- file.path(FLM.TEST.DIR, "unitizer.fastlm.R") 372s > test.file.2 <- file.path(FLM.TEST.DIR, "unitizer.fastlm2.R") 372s > test.store <- file.path(FLM.TEST.DIR, "store2.unitizer") 372s > # First auto accept all initial tests, and then re-run with second version to 372s > # make sure deleted tests are where we think they should be 372s > out.1 <- 372s + unitizer:::capture_output(unitize(test.file.1, test.store, auto.accept = "new")) 372s > unitizer:::read_line_set_vals(c("B", "Q")) 372s > out.2 <- unitizer:::capture_output( 372s + untz.2 <- unitize(test.file.2, test.store, interactive.mode = TRUE) 372s + ) 373s > attributes(untz.2) <- NULL 373s > untz.2 373s [[1]] 373s [1] 1 2 3 4 5 6 7 373s 373s [[2]] 373s [1] "library(utzflm, lib.loc = getOption(\"unitizer.tmp.lib.loc\"))" 373s [2] "x <- 1:10" 373s [3] "y <- x^2" 373s [4] "res <- fastlm(x, y)" 373s [5] "get_slope(res)" 373s [6] "get_rsq(res)" 373s [7] "2 * get_slope(res) + get_intercept(res)" 373s 373s [[3]] 373s [1] "Basic Tests" "Basic Tests" "Basic Tests" "Basic Tests" 373s [5] "Basic Tests" "Advanced Tests" "Advanced Tests" 373s 373s [[4]] 373s [1] TRUE TRUE TRUE TRUE FALSE FALSE FALSE 373s 373s [[5]] 373s [1] Failed Failed Failed Failed Failed Failed Removed 373s Levels: New Passed Failed Removed Corrupted 373s 373s [[6]] 373s [1] N N N N N N N 373s Levels: Y N 373s 373s [[7]] 373s [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE 373s 373s > 373s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 373s > # - "warning when comp funs produce output" ------------------------------------ 373s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 373s > 373s > # Sections with comp funs that output to stdout/stderr 373s > temp.loc <- tempfile() 373s > dir.create(temp.loc) 373s > file.copy(file.path(START.DIR, "_helper", "unitizers", "sects.R"), temp.loc) 373s [1] TRUE 373s > f.sec <- file.path(temp.loc, "sects.R") 373s > odir <- setwd(temp.loc) 373s > out <- unitizer:::capture_output( 373s + unitize(f.sec, auto.accept = "new", interactive.mode = FALSE 373s + ) ) 373s > 373s > unitize(f.sec, interactive.mode = FALSE) 373s 373s Warning in close_and_clear(e1@global$cons) : 373s 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: 373s I'm outputting to stdout 373s I'm outputting to stderr 373s I'm outputting to both 1 373s I'm outputting to both 2 373s 373s Warning in history_capt(history, interactive.mode) : 373s Unable to capture history in non-interactive mode. 373s | 3/3 tests passed; nothing to review. 373s 373s > setwd(odir) 373s > unlink(temp.loc, recursive = TRUE) 373s > 373s > # - "Corner Case Files" -------------------------------------------------------- 373s > 373s > # Corner case files 373s > # empty 373s > temp.empty <- paste0(tempfile(), "-empty.R") 373s > cat("\n", file = temp.empty) 373s > empty.capt <- unitizer:::capture_output(unitize(temp.empty, force = TRUE)) 373s > # File, but does not end in .R 373s > temp.bad <- paste0(tempfile()) 373s > 373s > cat("\n", file = temp.bad) 373s > badname.capt <- unitizer:::capture_output(try(unitize(temp.bad))) 373s > any(grepl("`get_unitizer` error", out$message)) 373s [1] FALSE 373s > 373s > any(grepl("Empty unitizer", empty.capt$output)) 373s [1] TRUE 373s > any(grepl("No valid unitizers available", badname.capt$message)) 373s [1] FALSE 373s > unlink(c(temp.empty, temp.bad)) 373s > 373s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 373s > # - "Re-eval change" ----------------------------------------------------------- 373s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 373s > 373s > # re-eval reeval with a modified file 373s > temp.reeval.base <- paste0(tempfile(), "-reeval") 373s > temp.reeval <- paste0(temp.reeval.base, ".R") 373s > temp.reeval.utz <- paste0(temp.reeval.base, ".unitizer") 373s > cat("1 + 1\n2 + 2\n", file = temp.reeval) 373s > # force re-review 373s > unitizer:::read_line_set_vals(c("Y", "P", "Y", "cat(\"1 + 1\n2 + 3\n\", file=temp.reeval)", 373s + "R", "Y", "Q")) 373s > # state = environment() so we can access variables from this local 373s > reeval.capt <- unitizer:::capture_output(unitize(temp.reeval, 373s + state = environment(), interactive.mode = TRUE)) 373s > unlink(c(temp.reeval, temp.reeval.utz), recursive = TRUE) 373s > 373s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 373s > # - "Condition fail" ----------------------------------------------------------- 373s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 373s > 373s > # Fail test with conditions 373s > temp.cond.base <- paste0(tempfile(), "-cond") 373s > temp.cond <- paste0(tempfile(), ".R") 373s > temp.cond.utz <- paste0(tempfile(), ".unitizer") 373s > cond.message <- "hello world" 373s > cat("warning(cond.message)", file = temp.cond) 373s > unitizer:::read_line_set_vals(c("Y", "Y")) 373s > # state = environment() so we can access variables from this local 373s > unitizer:::capture_output( 373s + unitize(temp.cond, state = environment(), interactive.mode = TRUE) 373s + ) 374s > cond.message <- "goodbye world" 374s > unitizer:::read_line_set_vals("Q") 374s > cond.capt <- 374s + unitizer:::capture_output( 374s + unitize(temp.cond, state = environment(), interactive.mode = TRUE) 374s + ) 374s > sum(grepl("Conditions mismatch", cond.capt$output)) == 1L 374s [1] TRUE 374s > unlink(c(temp.cond, temp.cond.utz), recursive = TRUE) 374s > 374s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 374s > # - "Force" -------------------------------------------------------------------- 374s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 374s > # 374s > # Toggle force update, in order for this to work we need to create a situation 374s > # where in a `unitize_dir`, one file passes, the other doesn't, and we review 374s > # the file that passes. Otherwise the only other way to do it is to set force 374s > # from the beginning, but that ruins the toggle effect. One possible issue 374s > # here is that we don't have a great way to check the file actually changed. 374s > 374s > temp.forceup.base.dir <- tempfile() 374s > dir.create(temp.forceup.base.dir) 374s > temp.forceup.1 <- file.path(temp.forceup.base.dir, "force1.R") 374s > temp.forceup.2 <- file.path(temp.forceup.base.dir, "force2.R") 374s > cat("force.var\n", file = temp.forceup.1) 374s > cat("4 + 1\n", file = temp.forceup.2) 374s > force.var <- 1 374s > unitizer:::capture_output({ 374s + unitize(temp.forceup.1, auto.accept = "new", state = environment()) 374s + unitize(temp.forceup.2, auto.accept = "new", state = environment()) 374s + }) 374s > force.var <- 2 374s > unitizer:::read_line_set_vals(c("2", "1", "Y", "O", "Q", "Q")) 374s > force.capt <- unitizer:::capture_output(unitize_dir(temp.forceup.base.dir, 374s + state = environment(), interactive.mode = TRUE)) 374s > unlink(temp.forceup.base.dir, recursive = TRUE) 374s > sum(grepl("Toggling force update mode ON", force.capt$message)) == 374s + 1L 374s [1] TRUE 374s > sum(grepl("You are about to .* with re-evaluated", force.capt$message)) == 374s + 1L 374s [1] TRUE 374s > 374s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 374s > # - "Compare Funs" ------------------------------------------------------------- 374s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 374s > 374s > # Bad comparison functions 374s > temp.bad.comp <- paste0(tempfile(), ".R") 374s > cat("\n unitizer_sect(\n 'bad comp', {1 + 1; 2 + 2},\n compare=function(x, y) list('failed', 'comparison')\n )\n", 374s + file = temp.bad.comp) 374s > unitizer:::capture_output(unitize(temp.bad.comp, auto.accept = "new")) 374s > unitizer:::read_line_set_vals(c("Q")) 374s > bad.comp.capt <- unitizer:::capture_output(unitize(temp.bad.comp, 374s + interactive.mode = TRUE)) 375s > unlink(temp.bad.comp) 375s > 375s > sum(grepl("Unable to compare value", bad.comp.capt$message)) == 1L 375s [1] TRUE 375s > sum(grepl("Corrupted", bad.comp.capt$output)) >= 1L 375s [1] TRUE 375s > 375s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 375s > # - "bad map" ------------------------------------------------------------------ 375s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 375s > 375s > # Bad store mapping functions 375s > 375s > try(unitize_dir(FLM.TEST.DIR, store.ids = function(x) stop("Bad store map fun"))) 375s 375s Error in FUN(X[[i]], ...) : Bad store map fun 375s Error in unitize_dir(FLM.TEST.DIR, store.ids = function(x) stop("Bad store map fun")) : 375s Argument `store.ids` is a function, but caused an error when attempting to use it to convert test file names to `unitizer` ids. 375s > 375s > unitizer:::read_line_set_vals(NULL) 375s > 375s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 375s > # - "Multiple Bookmarks" ------------------------------------------------------- 375s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 375s > 375s > # Issue 245: In review-all mode should not move to next unitizer until the 375s > # review bookmark is cleared. 375s > 375s > temp.dir <- tempfile() 375s > dir.create(temp.dir) 375s > writeLines("'hello'\n'world'", file.path(temp.dir, "a.R")) 375s > writeLines("2 + 1\n3 + 2", file.path(temp.dir, "b.R")) 375s > writeLines("pi\n2 * pi\nsqrt(pi)", file.path(temp.dir, "c.R")) 375s > unitizer:::read_line_set_vals( 375s + c("A","N","N","Y","Y","R","Y","Q","Y","R","Y","Y","Y","Y","Q") 375s + ) 375s > unitize_dir(temp.dir, interactive.mode=TRUE) 375s 375s | Summary of files in common directory '.': 375s | 375s | Pass Fail New 375s | *1. a.R - - 2 375s | *2. b.R - - 2 375s | *3. c.R - - 3 375s | ....................... 375s | - - 7 375s | Legend: 375s | * `unitizer` requires review 375s 375s | Type number of unitizer to review, 'A' to review all that require review 375s 375s unitizer> A 375s 375s +------------------------------------------------------------------------------+ 375s | unitizer for: a.R | 375s +------------------------------------------------------------------------------+ 375s 375s Pass Fail New 375s - - 2 375s ........................... 375s - - 2 375s 375s - New -------------------------------------------------------------------------- 375s 375s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 375s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 375s 375s > "hello" 375s [1] "hello" 375s 375s unitizer> N 375s 375s > "world" 375s [1] "world" 375s 375s unitizer> N 375s 375s = Finalize Unitizer ============================================================ 375s 375s | You made no changes to the unitizer so there is no need to update it. While 375s | unnecessary, you can force an update by typing O at the prompt. 375s 375s | Exit unitizer ([Y]es, [P]rev, [B]rowse, [R]erun, f[O]rce, [QQ]uit All)? 375s 375s unitizer> Y 375s 375s | unitizer unchanged. 375s 375s +------------------------------------------------------------------------------+ 375s | unitizer for: b.R | 375s +------------------------------------------------------------------------------+ 375s 375s Pass Fail New 375s - - 2 375s ........................... 375s - - 2 375s 375s - New -------------------------------------------------------------------------- 375s 375s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 375s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 375s 375s > 2 + 1 375s [1] 3 375s 375s unitizer> Y 375s 375s > 3 + 2 375s [1] 5 375s 375s unitizer> R 375s 375s | Toggling re-run mode ON for this unitizer 375s 375s = Finalize Unitizer ============================================================ 375s 375s | You have 1 unreviewed tests; press `B` to browse tests, `U` to go to first 375s | unreviewed test. 375s 375s | You will IRREVERSIBLY modify 'b.unitizer' by: 375s | - Adding 1 out of 2 new tests 375s 375s | Update unitizer and re-run unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U] 375s | nreviewed, [R]erun, [QQ]uit All)? 375s 375s unitizer> Y 375s 375s | unitizer updated. 375s 375s +------------------------------------------------------------------------------+ 375s | unitizer for: b.R | 375s +------------------------------------------------------------------------------+ 375s 375s Pass Fail New 375s 1 - 1 375s ........................... 375s 1 - 1 375s 375s - New -------------------------------------------------------------------------- 375s 375s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 375s | [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 375s 375s | Jumping to test #2 because that was the test under review when test re-run was 375s | requested. 375s 375s > 3 + 2 375s [1] 5 375s 375s unitizer> Q 375s 375s | No changes recorded. 375s | unitizer unchanged. 375s 375s +------------------------------------------------------------------------------+ 375s | unitizer for: c.R | 375s +------------------------------------------------------------------------------+ 375s 375s Pass Fail New 375s - - 3 375s ........................... 375s - - 3 375s 375s - New -------------------------------------------------------------------------- 375s 375s | The 3 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 375s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 375s 375s > pi 375s [1] 3.14 375s 375s unitizer> Y 375s 375s > 2 * pi 375s [1] 6.28 375s 375s unitizer> R 375s 375s | Toggling re-run mode ON for this unitizer 375s 376s = Finalize Unitizer ============================================================ 376s 376s | You have 2 unreviewed tests; press `B` to browse tests, `U` to go to first 376s | unreviewed test. 376s 376s | You will IRREVERSIBLY modify 'c.unitizer' by: 376s | - Adding 1 out of 3 new tests 376s 376s | Update unitizer and re-run unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [U] 376s | nreviewed, [R]erun, [QQ]uit All)? 376s 376s unitizer> Y 376s 376s | unitizer updated. 376s 376s +------------------------------------------------------------------------------+ 376s | unitizer for: c.R | 376s +------------------------------------------------------------------------------+ 376s 376s Pass Fail New 376s 1 - 2 376s ........................... 376s 1 - 2 376s 376s - New -------------------------------------------------------------------------- 376s 376s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 376s | [B]rowse, [R]erun, [Q]uit, [H]elp)? 376s 376s | Jumping to test #2 because that was the test under review when test re-run was 376s | requested. 376s 376s > 2 * pi 376s [1] 6.28 376s 376s unitizer> Y 376s 376s > sqrt(pi) 376s [1] 1.77 376s 376s unitizer> Y 376s 376s = Finalize Unitizer ============================================================ 376s 376s | You will IRREVERSIBLY modify 'c.unitizer' by: 376s | - Adding 2 out of 2 new tests 376s 376s | Update unitizer ([Y]es, [N]o, [P]rev, [B]rowse, [R]erun)? 376s 376s unitizer> Y 376s 376s | unitizer updated. 376s 376s | Summary of files in common directory '.': 376s | 376s | Pass Fail New 376s | *1. a.R - - 2 376s | *2. b.R 1 - 1 376s | $3. c.R ? ? ? 376s | ....................... 376s | ? ? ? 376s | Legend: 376s | * `unitizer` requires review 376s | $ `unitizer` has been modified and needs to be re-run to recompute summary 376s 376s | Type number of unitizer to review, 'A' to review all that require review, 'R' 376s | to re-run all updated 376s 376s unitizer> Q 376s 376s > 376s > # Make sure re-eval all clears all bookmarks 376s > unlink( 376s + list.files(temp.dir, full.names=TRUE, pattern="\\.unitizer$"), 376s + recursive=TRUE 376s + ) 376s > unitizer:::read_line_set_vals(c("A","Q","Y","RR","Y","Q")) 376s > unitize_dir(temp.dir, interactive.mode=TRUE) 376s 376s | Summary of files in common directory '.': 376s | 376s | Pass Fail New 376s | *1. a.R - - 2 376s | *2. b.R - - 2 376s | *3. c.R - - 3 376s | ....................... 376s | - - 7 376s | Legend: 376s | * `unitizer` requires review 376s 376s | Type number of unitizer to review, 'A' to review all that require review 376s 376s unitizer> A 376s 376s +------------------------------------------------------------------------------+ 376s | unitizer for: a.R | 376s +------------------------------------------------------------------------------+ 376s 376s Pass Fail New 376s - - 2 376s ........................... 376s - - 2 376s 376s - New -------------------------------------------------------------------------- 376s 376s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 376s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 376s 376s > "hello" 376s [1] "hello" 376s 376s unitizer> Q 376s 376s | No changes recorded. 376s | unitizer unchanged. 376s 376s +------------------------------------------------------------------------------+ 376s | unitizer for: b.R | 376s +------------------------------------------------------------------------------+ 376s 376s Pass Fail New 376s - - 2 376s ........................... 376s - - 2 376s 376s - New -------------------------------------------------------------------------- 376s 376s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 376s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 376s 376s > 2 + 1 376s [1] 3 376s 376s unitizer> Y 376s 376s > 3 + 2 376s [1] 5 376s 376s unitizer> RR 376s 376s | Toggling re-run mode ON for all loaded unitizers 376s 376s = Finalize Unitizer ============================================================ 376s 376s | You have 1 unreviewed tests; press `B` to browse tests, `U` to go to first 376s | unreviewed test. 376s 376s | You will IRREVERSIBLY modify 'b.unitizer' by: 376s | - Adding 1 out of 2 new tests 376s 376s | Update unitizer and re-run all loaded unitizers ([Y]es, [N]o, [P]rev, [B] 376s | rowse, [U]nreviewed, [R]erun, [QQ]uit All)? 376s 376s unitizer> Y 376s 376s | unitizer updated. 376s 376s | Summary of files in common directory '.': 376s | 376s | Pass Fail New 376s | *1. a.R - - 2 376s | *2. b.R 1 - 1 376s | *3. c.R - - 3 376s | ....................... 376s | 1 - 6 376s | Legend: 376s | * `unitizer` requires review 376s 376s | Type number of unitizer to review, 'A' to review all that require review 376s 376s unitizer> Q 376s 376s > 376s > unitizer:::read_line_set_vals(NULL) 376s > unlink(temp.dir, recursive=TRUE) 376s > 376s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 376s > # - "Non-Standard Conditions" -------------------------------------------------- 376s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 376s > 376s > # Issue 272: some conditions don't produce any output, but for `unitizer` we 376s > # consider normally non-test expressions that produce conditions as tests. So 376s > # we need a mechanism for clarifying what happened. 376s > 376s > temp.dir <- tempfile() 376s > temp.file <- file.path(temp.dir, 'a.R') 376s > dir.create(temp.dir) 376s > 376s > unitizer:::read_line_set_vals("Q") 376s > writeLines( 376s + c( 376s + "cond <- simpleCondition('hello')", 376s + "class(cond) <- c('svgchop_unsupported', 'svgchop', class(cond))", 376s + "invisible(signalCondition(cond))" 376s + ), 376s + temp.file 376s + ) 376s > unitize(temp.file, interactive.mode=TRUE) 376s 377s +------------------------------------------------------------------------------+ 377s | unitizer for: a.R | 377s +------------------------------------------------------------------------------+ 377s 377s Pass Fail New 377s - - 1 377s ........................... 377s - - 1 377s 377s - New -------------------------------------------------------------------------- 377s 377s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 377s | [R]erun, [Q]uit, [H]elp)? 377s 377s > cond <- simpleCondition("hello") 377s > class(cond) <- c("svgchop_unsupported", "svgchop", class(cond)) 377s > invisible(signalCondition(cond)) 377s 377s | Test silently signalled conditions (use e.g. .NEW$conditions[[1]] to inspect): 377s 377s Condition list with 1 condition: 377s 1. svgchop_unsupported: hello 377s 377s unitizer> Q 377s 377s | No changes recorded. 377s | unitizer unchanged. 377s 377s > 377s > unitizer:::read_line_set_vals(NULL) 377s > unlink(temp.dir, recursive=TRUE) 377s > 377s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 377s > # - "Output Transcript in non-Interactive" ------------------------------------- 377s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 377s > 377s > # Issue 286: don't capture output in non-interactive. 377s > # We need `try` because we're testing what happens when the unitizer fails. 377s > 377s > temp.dir <- tempfile() 377s > temp.file <- file.path(temp.dir, 'a.R') 377s > dir.create(temp.dir) 377s > writeLines('warning("boom")', temp.file) # can't use error b/c try below 377s > old.opt <- options(unitizer.transcript=NULL, unitizer.show.progress=TRUE) 377s > try(unitize(temp.file)) 377s 377s Warning in check_call_stack() : 377s It appears you are running unitizer inside an error handling function such as 377s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 377s couraged as it may cause unpredictable behavior from unitizer in the event tests 377s produce conditions / errors. We strongly recommend you re-run your tests 377s outside of such handling functions. 377s Preloads... 377s Loading unitizer data... 377s Parsing tests... 377s Parsing a.R 377s Evaluating tests... 377s 377s warning("boom") 377s Warning in withVisible(warning("boom")) : boom 377s 377s Prepping Unitizers... 377s Warning in history_capt(history, interactive.mode) : 377s Unable to capture history in non-interactive mode. 377s 377s +------------------------------------------------------------------------------+ 377s | unitizer for: a.R | 377s +------------------------------------------------------------------------------+ 377s 377s Pass Fail New 377s - - 1 377s ........................... 377s - - 1 377s 377s - New -------------------------------------------------------------------------- 377s 377s | The following test is new. Add test to store ([Y]es, [N]o, [P]rev, [B]rowse, 377s | [R]erun, [Q]uit, [H]elp)? 377s 377s > warning("boom") 377s 377s | Test signalled conditions (use e.g. .NEW$conditions[[1]] to inspect): 377s 377s Condition list with 1 condition: 377s 1. Warning: boom 377s 377s | User input required to proceed, but we are in non-interactive mode. 377s 377s | unitizer unchanged. 377s 377s | * New: warning("boom") 377s | in 'a.R' 377s 377s | Newly evaluated tests do not match unitizer (New: 1); see above for more info, 377s | or run in interactive mode. 377s 377s | Running in transcript mode: only stderr text that is also part of a signalled 377s | condition is in the test review section (scroll up to the evaluation section 377s | for the rest). See `transcript` parameter in `?unitize`. 377s 377s Error in unitize_core(test.file.inf, list(store.id.inf), state = state, : 377s Cannot proceed in non-interactive mode. 377s > options(old.opt) 377s > unlink(temp.dir, recursive=TRUE) 377s > 377s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 377s > # - "Display All Tests in non-Interactive" ------------------------------------- 377s > # /\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ 377s > 377s > # Issue 293: don't stop after first failing test 377s > # We need `try` because we're testing what happens when the unitizer fails. 377s > 377s > temp.dir <- tempfile() 377s > temp.file.a <- file.path(temp.dir, 'a.R') 377s > temp.file.b <- file.path(temp.dir, 'b.R') 377s > dir.create(temp.dir) 377s > writeLines(c("1 + 1", "warning('hello')"), temp.file.a) 377s > writeLines(c("2 + 1", "warning('goodbye')"), temp.file.b) 377s > try(unitize_dir(temp.dir, transcript=FALSE)) 377s 377s Warning in check_call_stack() : 377s It appears you are running unitizer inside an error handling function such as 377s `withCallingHanlders`, `tryCatch`, or `withRestarts`. This is strongly dis- 377s couraged as it may cause unpredictable behavior from unitizer in the event tests 377s produce conditions / errors. We strongly recommend you re-run your tests 377s outside of such handling functions. 377s Warning in history_capt(history, interactive.mode) : 377s Unable to capture history in non-interactive mode. 377s | Summary of files in common directory '.': 377s | 377s | Pass Fail New 377s | *1. a.R - - 2 377s | *2. b.R - - 2 377s | ....................... 377s | - - 4 377s | Legend: 377s | * `unitizer` requires review 377s 377s +------------------------------------------------------------------------------+ 377s | unitizer for: a.R | 377s +------------------------------------------------------------------------------+ 377s 377s Pass Fail New 377s - - 2 377s ........................... 377s - - 2 377s 377s - New -------------------------------------------------------------------------- 377s 377s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 377s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 377s 377s > 1 + 1 377s [1] 2 377s 377s > warning("hello") 377s Warning: hello 377s 377s | User input required to proceed, but we are in non-interactive mode. 377s 377s | unitizer unchanged. 377s 377s +------------------------------------------------------------------------------+ 377s | unitizer for: b.R | 377s +------------------------------------------------------------------------------+ 377s 377s Pass Fail New 377s - - 2 377s ........................... 377s - - 2 377s 377s - New -------------------------------------------------------------------------- 377s 377s | The 2 tests in this section are new. Add tests to store ([Y]es, [N]o, [P]rev, 377s | [B]rowse, [R]erun, [QQ]uit All, [Q]uit, [H]elp)? 377s 377s > 2 + 1 377s [1] 3 377s 377s > warning("goodbye") 377s Warning: goodbye 377s 377s | User input required to proceed, but we are in non-interactive mode. 377s 377s | unitizer unchanged. 377s 377s | * New: 1 + 1 377s | * New: warning("hello") 377s | in 'a.R' 377s 377s | * New: 2 + 1 377s | * New: warning("goodbye") 377s | in 'b.R' 377s 377s | Newly evaluated tests do not match unitizer (New: 4); see above for more info, 377s | or run in interactive mode. 377s 377s Error in unitize_core(test.files = test.files, store.ids = store.ids, : 377s Cannot proceed in non-interactive mode. 377s > options(old.opt) 377s > unlink(temp.dir, recursive=TRUE) 377s > 377s > 377s PASS 377s Begin testing zz-check.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: arm-unknown-linux-gnueabihf (32-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('aammrtf/check.R') 377s 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?" 377s Warning message: 377s In eval(ei, envir) : Some outputs contain non-ASCII: 377s 't-text.Rout' 377s > 377s PASS 378s autopkgtest [02:13:37]: test run-unit-test: -----------------------] 383s run-unit-test PASS 383s autopkgtest [02:13:42]: test run-unit-test: - - - - - - - - - - results - - - - - - - - - - 387s autopkgtest [02:13:46]: test pkg-r-autopkgtest: preparing testbed 397s Reading package lists... 397s Building dependency tree... 397s Reading state information... 398s Starting pkgProblemResolver with broken count: 0 398s Starting 2 pkgProblemResolver with broken count: 0 398s Done 398s The following additional packages will be installed: 398s build-essential cpp cpp-13 cpp-13-arm-linux-gnueabihf 398s cpp-arm-linux-gnueabihf dctrl-tools g++ g++-13 g++-13-arm-linux-gnueabihf 398s g++-arm-linux-gnueabihf gcc gcc-13 gcc-13-arm-linux-gnueabihf 398s gcc-arm-linux-gnueabihf gfortran gfortran-13 gfortran-13-arm-linux-gnueabihf 398s gfortran-arm-linux-gnueabihf icu-devtools libasan8 libatomic1 libblas-dev 398s libbz2-dev libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libgcc-13-dev 398s libgfortran-13-dev libicu-dev libisl23 libjpeg-dev libjpeg-turbo8-dev 398s libjpeg8-dev liblapack-dev liblzma-dev libmpc3 libncurses-dev libpcre2-16-0 398s libpcre2-32-0 libpcre2-dev libpcre2-posix3 libpkgconf3 libpng-dev 398s libreadline-dev libstdc++-13-dev libubsan1 linux-libc-dev pkg-config 398s pkg-r-autopkgtest pkgconf pkgconf-bin r-base-dev rpcsvc-proto zlib1g-dev 398s Suggested packages: 398s cpp-doc gcc-13-locales cpp-13-doc debtags gcc-13-doc gcc-multilib 398s manpages-dev autoconf automake libtool flex bison gdb gcc-doc 398s gdb-arm-linux-gnueabihf gfortran-doc gfortran-13-doc libcoarrays-dev 398s liblapack-doc glibc-doc icu-doc liblzma-doc ncurses-doc readline-doc 398s libstdc++-13-doc texlive-base texlive-latex-base texlive-plain-generic 398s texlive-fonts-recommended texlive-fonts-extra texlive-extra-utils 398s texlive-latex-recommended texlive-latex-extra texinfo 398s Recommended packages: 398s bzip2-doc manpages manpages-dev libc-devtools libpng-tools 399s The following NEW packages will be installed: 399s autopkgtest-satdep build-essential cpp cpp-13 cpp-13-arm-linux-gnueabihf 399s cpp-arm-linux-gnueabihf dctrl-tools g++ g++-13 g++-13-arm-linux-gnueabihf 399s g++-arm-linux-gnueabihf gcc gcc-13 gcc-13-arm-linux-gnueabihf 399s gcc-arm-linux-gnueabihf gfortran gfortran-13 gfortran-13-arm-linux-gnueabihf 399s gfortran-arm-linux-gnueabihf icu-devtools libasan8 libatomic1 libblas-dev 399s libbz2-dev libc-dev-bin libc6-dev libcc1-0 libcrypt-dev libgcc-13-dev 399s libgfortran-13-dev libicu-dev libisl23 libjpeg-dev libjpeg-turbo8-dev 399s libjpeg8-dev liblapack-dev liblzma-dev libmpc3 libncurses-dev libpcre2-16-0 399s libpcre2-32-0 libpcre2-dev libpcre2-posix3 libpkgconf3 libpng-dev 399s libreadline-dev libstdc++-13-dev libubsan1 linux-libc-dev pkg-config 399s pkg-r-autopkgtest pkgconf pkgconf-bin r-base-dev rpcsvc-proto zlib1g-dev 399s 0 upgraded, 56 newly installed, 0 to remove and 1 not upgraded. 399s Need to get 74.3 MB/74.3 MB of archives. 399s After this operation, 232 MB of additional disk space will be used. 399s Get:1 /tmp/autopkgtest.HV3Vlf/2-autopkgtest-satdep.deb autopkgtest-satdep armhf 0 [732 B] 399s Get:2 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libc-dev-bin armhf 2.39-0ubuntu6 [19.1 kB] 399s Get:3 http://ftpmaster.internal/ubuntu noble-proposed/main armhf linux-libc-dev armhf 6.8.0-20.20 [1555 kB] 400s Get:4 http://ftpmaster.internal/ubuntu noble/main armhf libcrypt-dev armhf 1:4.4.36-4 [136 kB] 400s Get:5 http://ftpmaster.internal/ubuntu noble/main armhf rpcsvc-proto armhf 1.4.2-0ubuntu6 [63.7 kB] 400s Get:6 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libc6-dev armhf 2.39-0ubuntu6 [1351 kB] 401s Get:7 http://ftpmaster.internal/ubuntu noble/main armhf libisl23 armhf 0.26-3 [595 kB] 401s Get:8 http://ftpmaster.internal/ubuntu noble/main armhf libmpc3 armhf 1.3.1-1 [46.4 kB] 401s Get:9 http://ftpmaster.internal/ubuntu noble-proposed/main armhf cpp-13-arm-linux-gnueabihf armhf 13.2.0-19ubuntu1 [8753 kB] 402s Get:10 http://ftpmaster.internal/ubuntu noble-proposed/main armhf cpp-13 armhf 13.2.0-19ubuntu1 [1036 B] 402s Get:11 http://ftpmaster.internal/ubuntu noble/main armhf cpp-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [5320 B] 402s Get:12 http://ftpmaster.internal/ubuntu noble/main armhf cpp armhf 4:13.2.0-7ubuntu1 [22.4 kB] 402s Get:13 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libcc1-0 armhf 14-20240315-1ubuntu1 [39.0 kB] 402s Get:14 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libatomic1 armhf 14-20240315-1ubuntu1 [7824 B] 402s Get:15 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libasan8 armhf 14-20240315-1ubuntu1 [2941 kB] 403s Get:16 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libubsan1 armhf 14-20240315-1ubuntu1 [1152 kB] 403s Get:17 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgcc-13-dev armhf 13.2.0-19ubuntu1 [900 kB] 403s Get:18 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-13-arm-linux-gnueabihf armhf 13.2.0-19ubuntu1 [16.8 MB] 404s Get:19 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gcc-13 armhf 13.2.0-19ubuntu1 [448 kB] 404s Get:20 http://ftpmaster.internal/ubuntu noble/main armhf gcc-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [1220 B] 404s Get:21 http://ftpmaster.internal/ubuntu noble/main armhf gcc armhf 4:13.2.0-7ubuntu1 [5022 B] 404s Get:22 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libstdc++-13-dev armhf 13.2.0-19ubuntu1 [2403 kB] 404s Get:23 http://ftpmaster.internal/ubuntu noble-proposed/main armhf g++-13-arm-linux-gnueabihf armhf 13.2.0-19ubuntu1 [9935 kB] 404s Get:24 http://ftpmaster.internal/ubuntu noble-proposed/main armhf g++-13 armhf 13.2.0-19ubuntu1 [14.5 kB] 404s Get:25 http://ftpmaster.internal/ubuntu noble/main armhf g++-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [966 B] 404s Get:26 http://ftpmaster.internal/ubuntu noble/main armhf g++ armhf 4:13.2.0-7ubuntu1 [1090 B] 404s Get:27 http://ftpmaster.internal/ubuntu noble/main armhf build-essential armhf 12.10ubuntu1 [4928 B] 404s Get:28 http://ftpmaster.internal/ubuntu noble/main armhf dctrl-tools armhf 2.24-3build2 [57.2 kB] 404s Get:29 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libgfortran-13-dev armhf 13.2.0-19ubuntu1 [359 kB] 404s Get:30 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gfortran-13-arm-linux-gnueabihf armhf 13.2.0-19ubuntu1 [9176 kB] 404s Get:31 http://ftpmaster.internal/ubuntu noble-proposed/main armhf gfortran-13 armhf 13.2.0-19ubuntu1 [10.4 kB] 404s Get:32 http://ftpmaster.internal/ubuntu noble/main armhf gfortran-arm-linux-gnueabihf armhf 4:13.2.0-7ubuntu1 [1024 B] 404s Get:33 http://ftpmaster.internal/ubuntu noble/main armhf gfortran armhf 4:13.2.0-7ubuntu1 [1166 B] 404s Get:34 http://ftpmaster.internal/ubuntu noble/main armhf icu-devtools armhf 74.2-1ubuntu1 [201 kB] 404s Get:35 http://ftpmaster.internal/ubuntu noble/main armhf libblas-dev armhf 3.12.0-3 [132 kB] 404s Get:36 http://ftpmaster.internal/ubuntu noble/main armhf libbz2-dev armhf 1.0.8-5ubuntu1 [30.4 kB] 404s Get:37 http://ftpmaster.internal/ubuntu noble/main armhf libicu-dev armhf 74.2-1ubuntu1 [11.6 MB] 405s Get:38 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg-turbo8-dev armhf 2.1.5-2ubuntu1 [263 kB] 405s Get:39 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg8-dev armhf 8c-2ubuntu11 [1484 B] 405s Get:40 http://ftpmaster.internal/ubuntu noble/main armhf libjpeg-dev armhf 8c-2ubuntu11 [1482 B] 405s Get:41 http://ftpmaster.internal/ubuntu noble/main armhf liblapack-dev armhf 3.12.0-3 [2177 kB] 405s Get:42 http://ftpmaster.internal/ubuntu noble/main armhf libncurses-dev armhf 6.4+20240113-1ubuntu1 [501 kB] 405s Get:43 http://ftpmaster.internal/ubuntu noble/main armhf libpcre2-16-0 armhf 10.42-4ubuntu1 [180 kB] 405s Get:44 http://ftpmaster.internal/ubuntu noble/main armhf libpcre2-32-0 armhf 10.42-4ubuntu1 [171 kB] 405s Get:45 http://ftpmaster.internal/ubuntu noble/main armhf libpcre2-posix3 armhf 10.42-4ubuntu1 [6096 B] 405s Get:46 http://ftpmaster.internal/ubuntu noble/main armhf libpcre2-dev armhf 10.42-4ubuntu1 [664 kB] 405s Get:47 http://ftpmaster.internal/ubuntu noble/main armhf libpkgconf3 armhf 1.8.1-2 [26.3 kB] 405s Get:48 http://ftpmaster.internal/ubuntu noble-proposed/main armhf zlib1g-dev armhf 1:1.3.dfsg-3.1ubuntu1 [880 kB] 405s Get:49 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libpng-dev armhf 1.6.43-3 [248 kB] 405s Get:50 http://ftpmaster.internal/ubuntu noble-proposed/main armhf libreadline-dev armhf 8.2-3.1build1 [153 kB] 405s Get:51 http://ftpmaster.internal/ubuntu noble/main armhf pkgconf-bin armhf 1.8.1-2 [20.6 kB] 405s Get:52 http://ftpmaster.internal/ubuntu noble/main armhf pkgconf armhf 1.8.1-2 [16.7 kB] 405s Get:53 http://ftpmaster.internal/ubuntu noble/main armhf pkg-config armhf 1.8.1-2 [7170 B] 405s Get:54 http://ftpmaster.internal/ubuntu noble-proposed/main armhf liblzma-dev armhf 5.6.0-0.2 [166 kB] 405s Get:55 http://ftpmaster.internal/ubuntu noble-proposed/universe armhf r-base-dev all 4.3.3-2build1 [4334 B] 405s Get:56 http://ftpmaster.internal/ubuntu noble/universe armhf pkg-r-autopkgtest all 20231212ubuntu1 [6448 B] 406s Fetched 74.3 MB in 6s (12.1 MB/s) 406s Selecting previously unselected package libc-dev-bin. 406s (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 ... 72299 files and directories currently installed.) 406s Preparing to unpack .../00-libc-dev-bin_2.39-0ubuntu6_armhf.deb ... 406s Unpacking libc-dev-bin (2.39-0ubuntu6) ... 406s Selecting previously unselected package linux-libc-dev:armhf. 406s Preparing to unpack .../01-linux-libc-dev_6.8.0-20.20_armhf.deb ... 406s Unpacking linux-libc-dev:armhf (6.8.0-20.20) ... 406s Selecting previously unselected package libcrypt-dev:armhf. 406s Preparing to unpack .../02-libcrypt-dev_1%3a4.4.36-4_armhf.deb ... 406s Unpacking libcrypt-dev:armhf (1:4.4.36-4) ... 406s Selecting previously unselected package rpcsvc-proto. 406s Preparing to unpack .../03-rpcsvc-proto_1.4.2-0ubuntu6_armhf.deb ... 406s Unpacking rpcsvc-proto (1.4.2-0ubuntu6) ... 406s Selecting previously unselected package libc6-dev:armhf. 406s Preparing to unpack .../04-libc6-dev_2.39-0ubuntu6_armhf.deb ... 406s Unpacking libc6-dev:armhf (2.39-0ubuntu6) ... 406s Selecting previously unselected package libisl23:armhf. 406s Preparing to unpack .../05-libisl23_0.26-3_armhf.deb ... 406s Unpacking libisl23:armhf (0.26-3) ... 406s Selecting previously unselected package libmpc3:armhf. 406s Preparing to unpack .../06-libmpc3_1.3.1-1_armhf.deb ... 406s Unpacking libmpc3:armhf (1.3.1-1) ... 406s Selecting previously unselected package cpp-13-arm-linux-gnueabihf. 406s Preparing to unpack .../07-cpp-13-arm-linux-gnueabihf_13.2.0-19ubuntu1_armhf.deb ... 406s Unpacking cpp-13-arm-linux-gnueabihf (13.2.0-19ubuntu1) ... 407s Selecting previously unselected package cpp-13. 407s Preparing to unpack .../08-cpp-13_13.2.0-19ubuntu1_armhf.deb ... 407s Unpacking cpp-13 (13.2.0-19ubuntu1) ... 407s Selecting previously unselected package cpp-arm-linux-gnueabihf. 407s Preparing to unpack .../09-cpp-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 407s Unpacking cpp-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 407s Selecting previously unselected package cpp. 407s Preparing to unpack .../10-cpp_4%3a13.2.0-7ubuntu1_armhf.deb ... 407s Unpacking cpp (4:13.2.0-7ubuntu1) ... 407s Selecting previously unselected package libcc1-0:armhf. 407s Preparing to unpack .../11-libcc1-0_14-20240315-1ubuntu1_armhf.deb ... 407s Unpacking libcc1-0:armhf (14-20240315-1ubuntu1) ... 407s Selecting previously unselected package libatomic1:armhf. 407s Preparing to unpack .../12-libatomic1_14-20240315-1ubuntu1_armhf.deb ... 407s Unpacking libatomic1:armhf (14-20240315-1ubuntu1) ... 407s Selecting previously unselected package libasan8:armhf. 407s Preparing to unpack .../13-libasan8_14-20240315-1ubuntu1_armhf.deb ... 407s Unpacking libasan8:armhf (14-20240315-1ubuntu1) ... 407s Selecting previously unselected package libubsan1:armhf. 407s Preparing to unpack .../14-libubsan1_14-20240315-1ubuntu1_armhf.deb ... 407s Unpacking libubsan1:armhf (14-20240315-1ubuntu1) ... 407s Selecting previously unselected package libgcc-13-dev:armhf. 407s Preparing to unpack .../15-libgcc-13-dev_13.2.0-19ubuntu1_armhf.deb ... 407s Unpacking libgcc-13-dev:armhf (13.2.0-19ubuntu1) ... 407s Selecting previously unselected package gcc-13-arm-linux-gnueabihf. 407s Preparing to unpack .../16-gcc-13-arm-linux-gnueabihf_13.2.0-19ubuntu1_armhf.deb ... 407s Unpacking gcc-13-arm-linux-gnueabihf (13.2.0-19ubuntu1) ... 408s Selecting previously unselected package gcc-13. 408s Preparing to unpack .../17-gcc-13_13.2.0-19ubuntu1_armhf.deb ... 408s Unpacking gcc-13 (13.2.0-19ubuntu1) ... 408s Selecting previously unselected package gcc-arm-linux-gnueabihf. 408s Preparing to unpack .../18-gcc-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 408s Unpacking gcc-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 408s Selecting previously unselected package gcc. 408s Preparing to unpack .../19-gcc_4%3a13.2.0-7ubuntu1_armhf.deb ... 408s Unpacking gcc (4:13.2.0-7ubuntu1) ... 408s Selecting previously unselected package libstdc++-13-dev:armhf. 408s Preparing to unpack .../20-libstdc++-13-dev_13.2.0-19ubuntu1_armhf.deb ... 408s Unpacking libstdc++-13-dev:armhf (13.2.0-19ubuntu1) ... 408s Selecting previously unselected package g++-13-arm-linux-gnueabihf. 408s Preparing to unpack .../21-g++-13-arm-linux-gnueabihf_13.2.0-19ubuntu1_armhf.deb ... 408s Unpacking g++-13-arm-linux-gnueabihf (13.2.0-19ubuntu1) ... 408s Selecting previously unselected package g++-13. 408s Preparing to unpack .../22-g++-13_13.2.0-19ubuntu1_armhf.deb ... 408s Unpacking g++-13 (13.2.0-19ubuntu1) ... 408s Selecting previously unselected package g++-arm-linux-gnueabihf. 408s Preparing to unpack .../23-g++-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 408s Unpacking g++-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 408s Selecting previously unselected package g++. 408s Preparing to unpack .../24-g++_4%3a13.2.0-7ubuntu1_armhf.deb ... 408s Unpacking g++ (4:13.2.0-7ubuntu1) ... 408s Selecting previously unselected package build-essential. 408s Preparing to unpack .../25-build-essential_12.10ubuntu1_armhf.deb ... 408s Unpacking build-essential (12.10ubuntu1) ... 408s Selecting previously unselected package dctrl-tools. 408s Preparing to unpack .../26-dctrl-tools_2.24-3build2_armhf.deb ... 408s Unpacking dctrl-tools (2.24-3build2) ... 408s Selecting previously unselected package libgfortran-13-dev:armhf. 409s Preparing to unpack .../27-libgfortran-13-dev_13.2.0-19ubuntu1_armhf.deb ... 409s Unpacking libgfortran-13-dev:armhf (13.2.0-19ubuntu1) ... 409s Selecting previously unselected package gfortran-13-arm-linux-gnueabihf. 409s Preparing to unpack .../28-gfortran-13-arm-linux-gnueabihf_13.2.0-19ubuntu1_armhf.deb ... 409s Unpacking gfortran-13-arm-linux-gnueabihf (13.2.0-19ubuntu1) ... 409s Selecting previously unselected package gfortran-13. 409s Preparing to unpack .../29-gfortran-13_13.2.0-19ubuntu1_armhf.deb ... 409s Unpacking gfortran-13 (13.2.0-19ubuntu1) ... 409s Selecting previously unselected package gfortran-arm-linux-gnueabihf. 409s Preparing to unpack .../30-gfortran-arm-linux-gnueabihf_4%3a13.2.0-7ubuntu1_armhf.deb ... 409s Unpacking gfortran-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 409s Selecting previously unselected package gfortran. 409s Preparing to unpack .../31-gfortran_4%3a13.2.0-7ubuntu1_armhf.deb ... 409s Unpacking gfortran (4:13.2.0-7ubuntu1) ... 409s Selecting previously unselected package icu-devtools. 409s Preparing to unpack .../32-icu-devtools_74.2-1ubuntu1_armhf.deb ... 409s Unpacking icu-devtools (74.2-1ubuntu1) ... 409s Selecting previously unselected package libblas-dev:armhf. 409s Preparing to unpack .../33-libblas-dev_3.12.0-3_armhf.deb ... 409s Unpacking libblas-dev:armhf (3.12.0-3) ... 409s Selecting previously unselected package libbz2-dev:armhf. 409s Preparing to unpack .../34-libbz2-dev_1.0.8-5ubuntu1_armhf.deb ... 409s Unpacking libbz2-dev:armhf (1.0.8-5ubuntu1) ... 409s Selecting previously unselected package libicu-dev:armhf. 409s Preparing to unpack .../35-libicu-dev_74.2-1ubuntu1_armhf.deb ... 409s Unpacking libicu-dev:armhf (74.2-1ubuntu1) ... 409s Selecting previously unselected package libjpeg-turbo8-dev:armhf. 409s Preparing to unpack .../36-libjpeg-turbo8-dev_2.1.5-2ubuntu1_armhf.deb ... 409s Unpacking libjpeg-turbo8-dev:armhf (2.1.5-2ubuntu1) ... 409s Selecting previously unselected package libjpeg8-dev:armhf. 409s Preparing to unpack .../37-libjpeg8-dev_8c-2ubuntu11_armhf.deb ... 409s Unpacking libjpeg8-dev:armhf (8c-2ubuntu11) ... 409s Selecting previously unselected package libjpeg-dev:armhf. 409s Preparing to unpack .../38-libjpeg-dev_8c-2ubuntu11_armhf.deb ... 409s Unpacking libjpeg-dev:armhf (8c-2ubuntu11) ... 409s Selecting previously unselected package liblapack-dev:armhf. 409s Preparing to unpack .../39-liblapack-dev_3.12.0-3_armhf.deb ... 409s Unpacking liblapack-dev:armhf (3.12.0-3) ... 410s Selecting previously unselected package libncurses-dev:armhf. 410s Preparing to unpack .../40-libncurses-dev_6.4+20240113-1ubuntu1_armhf.deb ... 410s Unpacking libncurses-dev:armhf (6.4+20240113-1ubuntu1) ... 410s Selecting previously unselected package libpcre2-16-0:armhf. 410s Preparing to unpack .../41-libpcre2-16-0_10.42-4ubuntu1_armhf.deb ... 410s Unpacking libpcre2-16-0:armhf (10.42-4ubuntu1) ... 410s Selecting previously unselected package libpcre2-32-0:armhf. 410s Preparing to unpack .../42-libpcre2-32-0_10.42-4ubuntu1_armhf.deb ... 410s Unpacking libpcre2-32-0:armhf (10.42-4ubuntu1) ... 410s Selecting previously unselected package libpcre2-posix3:armhf. 410s Preparing to unpack .../43-libpcre2-posix3_10.42-4ubuntu1_armhf.deb ... 410s Unpacking libpcre2-posix3:armhf (10.42-4ubuntu1) ... 410s Selecting previously unselected package libpcre2-dev:armhf. 410s Preparing to unpack .../44-libpcre2-dev_10.42-4ubuntu1_armhf.deb ... 410s Unpacking libpcre2-dev:armhf (10.42-4ubuntu1) ... 410s Selecting previously unselected package libpkgconf3:armhf. 410s Preparing to unpack .../45-libpkgconf3_1.8.1-2_armhf.deb ... 410s Unpacking libpkgconf3:armhf (1.8.1-2) ... 410s Selecting previously unselected package zlib1g-dev:armhf. 410s Preparing to unpack .../46-zlib1g-dev_1%3a1.3.dfsg-3.1ubuntu1_armhf.deb ... 410s Unpacking zlib1g-dev:armhf (1:1.3.dfsg-3.1ubuntu1) ... 410s Selecting previously unselected package libpng-dev:armhf. 410s Preparing to unpack .../47-libpng-dev_1.6.43-3_armhf.deb ... 410s Unpacking libpng-dev:armhf (1.6.43-3) ... 410s Selecting previously unselected package libreadline-dev:armhf. 410s Preparing to unpack .../48-libreadline-dev_8.2-3.1build1_armhf.deb ... 410s Unpacking libreadline-dev:armhf (8.2-3.1build1) ... 410s Selecting previously unselected package pkgconf-bin. 410s Preparing to unpack .../49-pkgconf-bin_1.8.1-2_armhf.deb ... 410s Unpacking pkgconf-bin (1.8.1-2) ... 410s Selecting previously unselected package pkgconf:armhf. 410s Preparing to unpack .../50-pkgconf_1.8.1-2_armhf.deb ... 410s Unpacking pkgconf:armhf (1.8.1-2) ... 410s Selecting previously unselected package pkg-config:armhf. 410s Preparing to unpack .../51-pkg-config_1.8.1-2_armhf.deb ... 410s Unpacking pkg-config:armhf (1.8.1-2) ... 410s Selecting previously unselected package liblzma-dev:armhf. 410s Preparing to unpack .../52-liblzma-dev_5.6.0-0.2_armhf.deb ... 410s Unpacking liblzma-dev:armhf (5.6.0-0.2) ... 410s Selecting previously unselected package r-base-dev. 410s Preparing to unpack .../53-r-base-dev_4.3.3-2build1_all.deb ... 410s Unpacking r-base-dev (4.3.3-2build1) ... 410s Selecting previously unselected package pkg-r-autopkgtest. 410s Preparing to unpack .../54-pkg-r-autopkgtest_20231212ubuntu1_all.deb ... 410s Unpacking pkg-r-autopkgtest (20231212ubuntu1) ... 410s Selecting previously unselected package autopkgtest-satdep. 410s Preparing to unpack .../55-2-autopkgtest-satdep.deb ... 410s Unpacking autopkgtest-satdep (0) ... 410s Setting up linux-libc-dev:armhf (6.8.0-20.20) ... 410s Setting up libpcre2-16-0:armhf (10.42-4ubuntu1) ... 410s Setting up libpcre2-32-0:armhf (10.42-4ubuntu1) ... 410s Setting up libpkgconf3:armhf (1.8.1-2) ... 410s Setting up rpcsvc-proto (1.4.2-0ubuntu6) ... 410s Setting up libmpc3:armhf (1.3.1-1) ... 410s Setting up libatomic1:armhf (14-20240315-1ubuntu1) ... 410s Setting up icu-devtools (74.2-1ubuntu1) ... 410s Setting up pkgconf-bin (1.8.1-2) ... 410s Setting up liblzma-dev:armhf (5.6.0-0.2) ... 410s Setting up libubsan1:armhf (14-20240315-1ubuntu1) ... 410s Setting up libpcre2-posix3:armhf (10.42-4ubuntu1) ... 410s Setting up libcrypt-dev:armhf (1:4.4.36-4) ... 410s Setting up libasan8:armhf (14-20240315-1ubuntu1) ... 410s Setting up libisl23:armhf (0.26-3) ... 410s Setting up libc-dev-bin (2.39-0ubuntu6) ... 410s Setting up libcc1-0:armhf (14-20240315-1ubuntu1) ... 410s Setting up libblas-dev:armhf (3.12.0-3) ... 410s update-alternatives: using /usr/lib/arm-linux-gnueabihf/blas/libblas.so to provide /usr/lib/arm-linux-gnueabihf/libblas.so (libblas.so-arm-linux-gnueabihf) in auto mode 410s Setting up dctrl-tools (2.24-3build2) ... 410s Setting up cpp-13-arm-linux-gnueabihf (13.2.0-19ubuntu1) ... 410s Setting up pkgconf:armhf (1.8.1-2) ... 410s Setting up liblapack-dev:armhf (3.12.0-3) ... 410s update-alternatives: using /usr/lib/arm-linux-gnueabihf/lapack/liblapack.so to provide /usr/lib/arm-linux-gnueabihf/liblapack.so (liblapack.so-arm-linux-gnueabihf) in auto mode 410s Setting up pkg-config:armhf (1.8.1-2) ... 410s Setting up libgcc-13-dev:armhf (13.2.0-19ubuntu1) ... 410s Setting up libc6-dev:armhf (2.39-0ubuntu6) ... 410s Setting up libgfortran-13-dev:armhf (13.2.0-19ubuntu1) ... 410s Setting up libicu-dev:armhf (74.2-1ubuntu1) ... 410s Setting up cpp-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 410s Setting up libstdc++-13-dev:armhf (13.2.0-19ubuntu1) ... 410s Setting up libbz2-dev:armhf (1.0.8-5ubuntu1) ... 410s Setting up libjpeg-turbo8-dev:armhf (2.1.5-2ubuntu1) ... 410s Setting up libncurses-dev:armhf (6.4+20240113-1ubuntu1) ... 410s Setting up libpcre2-dev:armhf (10.42-4ubuntu1) ... 410s Setting up cpp-13 (13.2.0-19ubuntu1) ... 410s Setting up libreadline-dev:armhf (8.2-3.1build1) ... 410s Setting up gcc-13-arm-linux-gnueabihf (13.2.0-19ubuntu1) ... 410s Setting up gcc-13 (13.2.0-19ubuntu1) ... 410s Setting up zlib1g-dev:armhf (1:1.3.dfsg-3.1ubuntu1) ... 410s Setting up cpp (4:13.2.0-7ubuntu1) ... 410s Setting up libjpeg8-dev:armhf (8c-2ubuntu11) ... 410s Setting up gcc-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 410s Setting up g++-13-arm-linux-gnueabihf (13.2.0-19ubuntu1) ... 410s Setting up gfortran-13-arm-linux-gnueabihf (13.2.0-19ubuntu1) ... 410s Setting up g++-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 410s Setting up g++-13 (13.2.0-19ubuntu1) ... 410s Setting up libpng-dev:armhf (1.6.43-3) ... 410s Setting up libjpeg-dev:armhf (8c-2ubuntu11) ... 410s Setting up gcc (4:13.2.0-7ubuntu1) ... 410s Setting up gfortran-arm-linux-gnueabihf (4:13.2.0-7ubuntu1) ... 410s Setting up gfortran-13 (13.2.0-19ubuntu1) ... 410s Setting up g++ (4:13.2.0-7ubuntu1) ... 410s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 410s Setting up build-essential (12.10ubuntu1) ... 410s Setting up gfortran (4:13.2.0-7ubuntu1) ... 410s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode 410s 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 410s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode 410s 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 410s Setting up r-base-dev (4.3.3-2build1) ... 410s Setting up pkg-r-autopkgtest (20231212ubuntu1) ... 410s Setting up autopkgtest-satdep (0) ... 410s Processing triggers for man-db (2.12.0-3build4) ... 411s Processing triggers for install-info (7.1-3build1) ... 411s Processing triggers for libc-bin (2.39-0ubuntu6) ... 423s (Reading database ... 75719 files and directories currently installed.) 423s Removing autopkgtest-satdep (0) ... 428s autopkgtest [02:14:27]: test pkg-r-autopkgtest: /usr/share/dh-r/pkg-r-autopkgtest 428s autopkgtest [02:14:27]: test pkg-r-autopkgtest: [----------------------- 430s Test: Try to load the R library unitizer 430s 430s R version 4.3.3 (2024-02-29) -- "Angel Food Cake" 430s Copyright (C) 2024 The R Foundation for Statistical Computing 430s Platform: arm-unknown-linux-gnueabihf (32-bit) 430s 430s R is free software and comes with ABSOLUTELY NO WARRANTY. 430s You are welcome to redistribute it under certain conditions. 430s Type 'license()' or 'licence()' for distribution details. 430s 430s R is a collaborative project with many contributors. 430s Type 'contributors()' for more information and 430s 'citation()' on how to cite R or R packages in publications. 430s 430s Type 'demo()' for some demos, 'help()' for on-line help, or 430s 'help.start()' for an HTML browser interface to help. 430s Type 'q()' to quit R. 430s 430s > library('unitizer') 431s 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 `?unitizerState`,in particular the 'CRAN non-compliance' section. 431s > 431s > 431s Other tests are currently unsupported! 431s They will be progressively added. 431s autopkgtest [02:14:30]: test pkg-r-autopkgtest: -----------------------] 435s pkg-r-autopkgtest PASS 435s autopkgtest [02:14:34]: test pkg-r-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 438s autopkgtest [02:14:37]: @@@@@@@@@@@@@@@@@@@@ summary 438s run-unit-test PASS 438s pkg-r-autopkgtest PASS