1s autopkgtest [15:23:44]: starting date and time: 2025-03-15 15:23:44+0000 1s autopkgtest [15:23:44]: git checkout: 325255d2 Merge branch 'pin-any-arch' into 'ubuntu/production' 1s autopkgtest [15:23:44]: host juju-7f2275-prod-proposed-migration-environment-15; command line: /home/ubuntu/autopkgtest/runner/autopkgtest --output-dir /tmp/autopkgtest-work.yew67b3d/out --timeout-copy=6000 --setup-commands /home/ubuntu/autopkgtest-cloud/worker-config-production/setup-canonical.sh --apt-pocket=proposed=src:glibc --apt-upgrade r-cran-diffobj --timeout-short=300 --timeout-copy=20000 --timeout-build=20000 --env=ADT_TEST_TRIGGERS=glibc/2.41-1ubuntu2 -- ssh -s /home/ubuntu/autopkgtest/ssh-setup/nova -- --flavor autopkgtest --security-groups autopkgtest-juju-7f2275-prod-proposed-migration-environment-15@bos03-arm64-34.secgroup --name adt-plucky-arm64-r-cran-diffobj-20250315-152342-juju-7f2275-prod-proposed-migration-environment-15-69a4a03a-e904-4c70-ae15-c91e93b20d4d --image adt/ubuntu-plucky-arm64-server --keyname testbed-juju-7f2275-prod-proposed-migration-environment-15 --net-id=net_prod-proposed-migration -e TERM=linux -e ''"'"'http_proxy=http://squid.internal:3128'"'"'' -e ''"'"'https_proxy=http://squid.internal:3128'"'"'' -e ''"'"'no_proxy=127.0.0.1,127.0.1.1,login.ubuntu.com,localhost,localdomain,novalocal,internal,archive.ubuntu.com,ports.ubuntu.com,security.ubuntu.com,ddebs.ubuntu.com,changelogs.ubuntu.com,keyserver.ubuntu.com,launchpadlibrarian.net,launchpadcontent.net,launchpad.net,10.24.0.0/24,keystone.ps5.canonical.com,objectstorage.prodstack5.canonical.com,radosgw.ps5.canonical.com'"'"'' --mirror=http://ftpmaster.internal/ubuntu/ 154s autopkgtest [15:26:17]: testbed dpkg architecture: arm64 155s autopkgtest [15:26:18]: testbed apt version: 2.9.33 155s autopkgtest [15:26:18]: @@@@@@@@@@@@@@@@@@@@ test bed setup 155s autopkgtest [15:26:18]: testbed release detected to be: None 156s autopkgtest [15:26:19]: updating testbed package index (apt update) 156s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease [126 kB] 157s Hit:2 http://ftpmaster.internal/ubuntu plucky InRelease 158s Hit:3 http://ftpmaster.internal/ubuntu plucky-updates InRelease 158s Hit:4 http://ftpmaster.internal/ubuntu plucky-security InRelease 158s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/main Sources [101 kB] 158s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/universe Sources [404 kB] 158s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse Sources [15.8 kB] 158s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 Packages [78.2 kB] 158s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 c-n-f Metadata [1976 B] 158s Get:10 http://ftpmaster.internal/ubuntu plucky-proposed/restricted arm64 c-n-f Metadata [116 B] 158s Get:11 http://ftpmaster.internal/ubuntu plucky-proposed/universe arm64 Packages [346 kB] 158s Get:12 http://ftpmaster.internal/ubuntu plucky-proposed/universe arm64 c-n-f Metadata [15.8 kB] 158s Get:13 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse arm64 Packages [4948 B] 158s Get:14 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse arm64 c-n-f Metadata [572 B] 158s Fetched 1094 kB in 2s (562 kB/s) 159s Reading package lists... 160s + lsb_release --codename --short 160s + RELEASE=plucky 160s + cat 160s + [ plucky != trusty ] 160s + DEBIAN_FRONTEND=noninteractive eatmydata apt-get -y --allow-downgrades -o Dpkg::Options::=--force-confnew dist-upgrade 160s Reading package lists... 160s Building dependency tree... 160s Reading state information... 161s Calculating upgrade... 161s Calculating upgrade... 161s The following packages will be upgraded: 161s python3-jinja2 strace 161s 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 161s Need to get 608 kB of archives. 161s After this operation, 11.3 kB of additional disk space will be used. 161s Get:1 http://ftpmaster.internal/ubuntu plucky/main arm64 strace arm64 6.13+ds-1ubuntu1 [499 kB] 162s Get:2 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-jinja2 all 3.1.5-2ubuntu1 [109 kB] 163s Fetched 608 kB in 1s (606 kB/s) 163s (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 ... 117701 files and directories currently installed.) 163s Preparing to unpack .../strace_6.13+ds-1ubuntu1_arm64.deb ... 163s Unpacking strace (6.13+ds-1ubuntu1) over (6.11-0ubuntu1) ... 163s Preparing to unpack .../python3-jinja2_3.1.5-2ubuntu1_all.deb ... 163s Unpacking python3-jinja2 (3.1.5-2ubuntu1) over (3.1.5-2) ... 163s Setting up python3-jinja2 (3.1.5-2ubuntu1) ... 163s Setting up strace (6.13+ds-1ubuntu1) ... 163s Processing triggers for man-db (2.13.0-1) ... 164s + rm /etc/apt/preferences.d/force-downgrade-to-release.pref 164s + /usr/lib/apt/apt-helper analyze-pattern ?true 164s + uname -r 164s + sed s/\./\\./g 164s + running_kernel_pattern=^linux-.*6\.14\.0-10-generic.* 164s + apt list ?obsolete 164s + tail -n+2 164s + grep -v ^linux-.*6\.14\.0-10-generic.* 164s + cut -d/ -f1 164s + obsolete_pkgs=linux-headers-6.11.0-8-generic 164s linux-headers-6.11.0-8 164s linux-image-6.11.0-8-generic 164s linux-modules-6.11.0-8-generic 164s linux-tools-6.11.0-8-generic 164s linux-tools-6.11.0-8 164s + DEBIAN_FRONTEND=noninteractive eatmydata apt-get -y purge --autoremove linux-headers-6.11.0-8-generic linux-headers-6.11.0-8 linux-image-6.11.0-8-generic linux-modules-6.11.0-8-generic linux-tools-6.11.0-8-generic linux-tools-6.11.0-8 164s Reading package lists... 165s Building dependency tree... 165s Reading state information... 165s Solving dependencies... 165s The following packages will be REMOVED: 165s libnsl2* libpython3.12-minimal* libpython3.12-stdlib* libpython3.12t64* 165s libunwind8* linux-headers-6.11.0-8* linux-headers-6.11.0-8-generic* 165s linux-image-6.11.0-8-generic* linux-modules-6.11.0-8-generic* 165s linux-tools-6.11.0-8* linux-tools-6.11.0-8-generic* 166s 0 upgraded, 0 newly installed, 11 to remove and 5 not upgraded. 166s After this operation, 267 MB disk space will be freed. 166s (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 ... 117701 files and directories currently installed.) 166s Removing linux-tools-6.11.0-8-generic (6.11.0-8.8) ... 166s Removing linux-tools-6.11.0-8 (6.11.0-8.8) ... 166s Removing libpython3.12t64:arm64 (3.12.9-1) ... 166s Removing libpython3.12-stdlib:arm64 (3.12.9-1) ... 166s Removing libnsl2:arm64 (1.3.0-3build3) ... 166s Removing libpython3.12-minimal:arm64 (3.12.9-1) ... 166s Removing libunwind8:arm64 (1.6.2-3.1) ... 166s Removing linux-headers-6.11.0-8-generic (6.11.0-8.8) ... 166s Removing linux-headers-6.11.0-8 (6.11.0-8.8) ... 168s Removing linux-image-6.11.0-8-generic (6.11.0-8.8) ... 168s I: /boot/vmlinuz.old is now a symlink to vmlinuz-6.14.0-10-generic 168s I: /boot/initrd.img.old is now a symlink to initrd.img-6.14.0-10-generic 168s /etc/kernel/postrm.d/initramfs-tools: 168s update-initramfs: Deleting /boot/initrd.img-6.11.0-8-generic 168s /etc/kernel/postrm.d/zz-flash-kernel: 168s flash-kernel: Kernel 6.11.0-8-generic has been removed. 168s flash-kernel: A higher version (6.14.0-10-generic) is still installed, no reflashing required. 169s /etc/kernel/postrm.d/zz-update-grub: 169s Sourcing file `/etc/default/grub' 169s Sourcing file `/etc/default/grub.d/50-cloudimg-settings.cfg' 169s Generating grub configuration file ... 169s Found linux image: /boot/vmlinuz-6.14.0-10-generic 169s Found initrd image: /boot/initrd.img-6.14.0-10-generic 169s Warning: os-prober will not be executed to detect other bootable partitions. 169s Systems on them will not be added to the GRUB boot configuration. 169s Check GRUB_DISABLE_OS_PROBER documentation entry. 169s Adding boot menu entry for UEFI Firmware Settings ... 169s done 169s Removing linux-modules-6.11.0-8-generic (6.11.0-8.8) ... 169s Processing triggers for libc-bin (2.41-1ubuntu1) ... 170s (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 ... 81650 files and directories currently installed.) 170s Purging configuration files for linux-image-6.11.0-8-generic (6.11.0-8.8) ... 170s Purging configuration files for libpython3.12-minimal:arm64 (3.12.9-1) ... 170s Purging configuration files for linux-modules-6.11.0-8-generic (6.11.0-8.8) ... 170s + grep -q trusty /etc/lsb-release 170s + [ ! -d /usr/share/doc/unattended-upgrades ] 170s + [ ! -d /usr/share/doc/lxd ] 170s + [ ! -d /usr/share/doc/lxd-client ] 170s + [ ! -d /usr/share/doc/snapd ] 170s + type iptables 170s + cat 170s + chmod 755 /etc/rc.local 170s + . /etc/rc.local 170s + iptables -w -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 170s + iptables -A OUTPUT -d 10.255.255.1/32 -p tcp -j DROP 170s + iptables -A OUTPUT -d 10.255.255.2/32 -p tcp -j DROP 170s + uname -m 170s + [ aarch64 = ppc64le ] 170s + [ -d /run/systemd/system ] 170s + systemd-detect-virt --quiet --vm 170s + mkdir -p /etc/systemd/system/systemd-random-seed.service.d/ 170s + cat 170s + grep -q lz4 /etc/initramfs-tools/initramfs.conf 170s + echo COMPRESS=lz4 170s autopkgtest [15:26:33]: upgrading testbed (apt dist-upgrade and autopurge) 170s Reading package lists... 170s Building dependency tree... 170s Reading state information... 171s Calculating upgrade...Starting pkgProblemResolver with broken count: 0 171s Starting 2 pkgProblemResolver with broken count: 0 171s Done 172s Entering ResolveByKeep 172s 172s Calculating upgrade... 172s The following packages will be upgraded: 172s libc-bin libc-dev-bin libc6 libc6-dev locales 173s 5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 173s Need to get 9530 kB of archives. 173s After this operation, 0 B of additional disk space will be used. 173s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libc6-dev arm64 2.41-1ubuntu2 [1750 kB] 174s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libc-dev-bin arm64 2.41-1ubuntu2 [24.0 kB] 174s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libc6 arm64 2.41-1ubuntu2 [2910 kB] 177s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libc-bin arm64 2.41-1ubuntu2 [600 kB] 177s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 locales all 2.41-1ubuntu2 [4246 kB] 181s Preconfiguring packages ... 182s Fetched 9530 kB in 9s (1094 kB/s) 182s (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 ... 81647 files and directories currently installed.) 182s Preparing to unpack .../libc6-dev_2.41-1ubuntu2_arm64.deb ... 182s Unpacking libc6-dev:arm64 (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 182s Preparing to unpack .../libc-dev-bin_2.41-1ubuntu2_arm64.deb ... 182s Unpacking libc-dev-bin (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 182s Preparing to unpack .../libc6_2.41-1ubuntu2_arm64.deb ... 182s Unpacking libc6:arm64 (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 182s Setting up libc6:arm64 (2.41-1ubuntu2) ... 182s (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 ... 81647 files and directories currently installed.) 182s Preparing to unpack .../libc-bin_2.41-1ubuntu2_arm64.deb ... 182s Unpacking libc-bin (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 183s Setting up libc-bin (2.41-1ubuntu2) ... 183s (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 ... 81647 files and directories currently installed.) 183s Preparing to unpack .../locales_2.41-1ubuntu2_all.deb ... 183s Unpacking locales (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 183s Setting up locales (2.41-1ubuntu2) ... 183s Generating locales (this might take a while)... 185s en_US.UTF-8... done 185s Generation complete. 185s Setting up libc-dev-bin (2.41-1ubuntu2) ... 185s Setting up libc6-dev:arm64 (2.41-1ubuntu2) ... 185s Processing triggers for man-db (2.13.0-1) ... 186s Processing triggers for systemd (257.3-1ubuntu3) ... 187s Reading package lists... 188s Building dependency tree... 188s Reading state information... 188s Starting pkgProblemResolver with broken count: 0 188s Starting 2 pkgProblemResolver with broken count: 0 188s Done 188s Solving dependencies... 189s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 189s autopkgtest [15:26:52]: rebooting testbed after setup commands that affected boot 213s autopkgtest [15:27:16]: testbed running kernel: Linux 6.14.0-10-generic #10-Ubuntu SMP PREEMPT_DYNAMIC Wed Mar 12 15:45:31 UTC 2025 215s autopkgtest [15:27:18]: @@@@@@@@@@@@@@@@@@@@ apt-source r-cran-diffobj 217s Get:1 http://ftpmaster.internal/ubuntu plucky/universe r-cran-diffobj 0.3.5-1 (dsc) [2117 B] 217s Get:2 http://ftpmaster.internal/ubuntu plucky/universe r-cran-diffobj 0.3.5-1 (tar) [479 kB] 217s Get:3 http://ftpmaster.internal/ubuntu plucky/universe r-cran-diffobj 0.3.5-1 (diff) [3480 B] 218s gpgv: Signature made Tue Oct 12 17:58:35 2021 UTC 218s gpgv: using RSA key F1F007320A035541F0A663CA578A0494D1C646D1 218s gpgv: issuer "tille@debian.org" 218s gpgv: Can't check signature: No public key 218s dpkg-source: warning: cannot verify inline signature for ./r-cran-diffobj_0.3.5-1.dsc: no acceptable signature found 218s autopkgtest [15:27:21]: testing package r-cran-diffobj version 0.3.5-1 218s autopkgtest [15:27:21]: build not needed 221s autopkgtest [15:27:24]: test run-unit-test: preparing testbed 221s Reading package lists... 221s Building dependency tree... 221s Reading state information... 221s Starting pkgProblemResolver with broken count: 0 222s Starting 2 pkgProblemResolver with broken count: 0 222s Done 222s The following NEW packages will be installed: 222s fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-mono libblas3 222s libcairo2 libdatrie1 libdeflate0 libfontconfig1 libgfortran5 libgomp1 222s libgraphite2-3 libharfbuzz0b libice6 libjbig0 libjpeg-turbo8 libjpeg8 222s liblapack3 liblerc4 libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 222s libpaper-utils libpaper2 libpixman-1-0 libsharpyuv0 libsm6 libtcl8.6 222s libthai-data libthai0 libtiff6 libtk8.6 libwebp7 libxcb-render0 libxcb-shm0 222s libxft2 libxrender1 libxss1 libxt6t64 r-base-core r-cran-brio r-cran-callr 222s r-cran-cli r-cran-crayon r-cran-desc r-cran-diffobj r-cran-digest 222s r-cran-evaluate r-cran-fs r-cran-glue r-cran-jsonlite r-cran-lifecycle 222s r-cran-magrittr r-cran-pkgbuild r-cran-pkgload r-cran-praise r-cran-processx 222s r-cran-ps r-cran-r6 r-cran-rlang r-cran-rprojroot r-cran-testthat 222s r-cran-waldo r-cran-withr unzip x11-common xdg-utils zip 222s 0 upgraded, 68 newly installed, 0 to remove and 0 not upgraded. 222s Need to get 48.5 MB of archives. 222s After this operation, 96.9 MB of additional disk space will be used. 222s Get:1 http://ftpmaster.internal/ubuntu plucky/main arm64 fonts-dejavu-mono all 2.37-8 [502 kB] 223s Get:2 http://ftpmaster.internal/ubuntu plucky/main arm64 fonts-dejavu-core all 2.37-8 [835 kB] 223s Get:3 http://ftpmaster.internal/ubuntu plucky/main arm64 fontconfig-config arm64 2.15.0-2ubuntu1 [37.5 kB] 224s Get:4 http://ftpmaster.internal/ubuntu plucky/main arm64 libfontconfig1 arm64 2.15.0-2ubuntu1 [144 kB] 224s Get:5 http://ftpmaster.internal/ubuntu plucky/main arm64 fontconfig arm64 2.15.0-2ubuntu1 [191 kB] 224s Get:6 http://ftpmaster.internal/ubuntu plucky/main arm64 libblas3 arm64 3.12.1-2 [161 kB] 224s Get:7 http://ftpmaster.internal/ubuntu plucky/main arm64 libpixman-1-0 arm64 0.44.0-3 [197 kB] 224s Get:8 http://ftpmaster.internal/ubuntu plucky/main arm64 libxcb-render0 arm64 1.17.0-2 [16.6 kB] 224s Get:9 http://ftpmaster.internal/ubuntu plucky/main arm64 libxcb-shm0 arm64 1.17.0-2 [5884 B] 224s Get:10 http://ftpmaster.internal/ubuntu plucky/main arm64 libxrender1 arm64 1:0.9.10-1.1build1 [18.8 kB] 224s Get:11 http://ftpmaster.internal/ubuntu plucky/main arm64 libcairo2 arm64 1.18.2-2 [560 kB] 224s Get:12 http://ftpmaster.internal/ubuntu plucky/main arm64 libdatrie1 arm64 0.2.13-3build1 [19.2 kB] 224s Get:13 http://ftpmaster.internal/ubuntu plucky/main arm64 libdeflate0 arm64 1.23-1 [46.2 kB] 224s Get:14 http://ftpmaster.internal/ubuntu plucky/main arm64 libgfortran5 arm64 15-20250222-0ubuntu1 [444 kB] 225s Get:15 http://ftpmaster.internal/ubuntu plucky/main arm64 libgomp1 arm64 15-20250222-0ubuntu1 [146 kB] 225s Get:16 http://ftpmaster.internal/ubuntu plucky/main arm64 libgraphite2-3 arm64 1.3.14-2ubuntu1 [70.6 kB] 225s Get:17 http://ftpmaster.internal/ubuntu plucky/main arm64 libharfbuzz0b arm64 10.2.0-1 [490 kB] 225s Get:18 http://ftpmaster.internal/ubuntu plucky/main arm64 x11-common all 1:7.7+23ubuntu3 [21.7 kB] 225s Get:19 http://ftpmaster.internal/ubuntu plucky/main arm64 libice6 arm64 2:1.1.1-1 [42.3 kB] 225s Get:20 http://ftpmaster.internal/ubuntu plucky/main arm64 libjpeg-turbo8 arm64 2.1.5-3ubuntu2 [165 kB] 225s Get:21 http://ftpmaster.internal/ubuntu plucky/main arm64 libjpeg8 arm64 8c-2ubuntu11 [2148 B] 225s Get:22 http://ftpmaster.internal/ubuntu plucky/main arm64 liblapack3 arm64 3.12.1-2 [2307 kB] 227s Get:23 http://ftpmaster.internal/ubuntu plucky/main arm64 liblerc4 arm64 4.0.0+ds-5ubuntu1 [167 kB] 227s Get:24 http://ftpmaster.internal/ubuntu plucky/main arm64 libthai-data all 0.1.29-2build1 [158 kB] 227s Get:25 http://ftpmaster.internal/ubuntu plucky/main arm64 libthai0 arm64 0.1.29-2build1 [18.2 kB] 227s Get:26 http://ftpmaster.internal/ubuntu plucky/main arm64 libpango-1.0-0 arm64 1.56.2-1 [237 kB] 227s Get:27 http://ftpmaster.internal/ubuntu plucky/main arm64 libpangoft2-1.0-0 arm64 1.56.2-1 [49.5 kB] 227s Get:28 http://ftpmaster.internal/ubuntu plucky/main arm64 libpangocairo-1.0-0 arm64 1.56.2-1 [27.6 kB] 227s Get:29 http://ftpmaster.internal/ubuntu plucky/main arm64 libpaper2 arm64 2.2.5-0.3 [17.3 kB] 227s Get:30 http://ftpmaster.internal/ubuntu plucky/main arm64 libpaper-utils arm64 2.2.5-0.3 [15.4 kB] 227s Get:31 http://ftpmaster.internal/ubuntu plucky/main arm64 libsharpyuv0 arm64 1.5.0-0.1 [16.9 kB] 227s Get:32 http://ftpmaster.internal/ubuntu plucky/main arm64 libsm6 arm64 2:1.2.4-1 [16.4 kB] 227s Get:33 http://ftpmaster.internal/ubuntu plucky/main arm64 libtcl8.6 arm64 8.6.16+dfsg-1 [987 kB] 228s Get:34 http://ftpmaster.internal/ubuntu plucky/main arm64 libjbig0 arm64 2.1-6.1ubuntu2 [29.3 kB] 228s Get:35 http://ftpmaster.internal/ubuntu plucky/main arm64 libwebp7 arm64 1.5.0-0.1 [194 kB] 228s Get:36 http://ftpmaster.internal/ubuntu plucky/main arm64 libtiff6 arm64 4.5.1+git230720-4ubuntu4 [193 kB] 228s Get:37 http://ftpmaster.internal/ubuntu plucky/main arm64 libxft2 arm64 2.3.6-1build1 [44.1 kB] 228s Get:38 http://ftpmaster.internal/ubuntu plucky/main arm64 libxss1 arm64 1:1.2.3-1build3 [7244 B] 228s Get:39 http://ftpmaster.internal/ubuntu plucky/main arm64 libtk8.6 arm64 8.6.16-1 [776 kB] 229s Get:40 http://ftpmaster.internal/ubuntu plucky/main arm64 libxt6t64 arm64 1:1.2.1-1.2build1 [168 kB] 229s Get:41 http://ftpmaster.internal/ubuntu plucky/main arm64 zip arm64 3.0-14ubuntu2 [173 kB] 229s Get:42 http://ftpmaster.internal/ubuntu plucky/main arm64 unzip arm64 6.0-28ubuntu6 [178 kB] 229s Get:43 http://ftpmaster.internal/ubuntu plucky/main arm64 xdg-utils all 1.2.1-2ubuntu1 [66.0 kB] 230s Get:44 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-base-core arm64 4.4.3-1 [28.4 MB] 250s Get:45 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-brio arm64 1.1.5-1 [39.1 kB] 250s Get:46 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-ps arm64 1.9.0-1 [407 kB] 251s Get:47 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-r6 all 2.6.1-1 [101 kB] 251s Get:48 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-processx arm64 3.8.6-1 [363 kB] 251s Get:49 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-callr all 3.7.6-1 [458 kB] 252s Get:50 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-cli arm64 3.6.4-1 [1374 kB] 253s Get:51 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-crayon all 1.5.3-1 [165 kB] 253s Get:52 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-desc all 1.4.3-1 [359 kB] 254s Get:53 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-diffobj arm64 0.3.5-1 [1116 kB] 254s Get:54 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-digest arm64 0.6.37-1 [200 kB] 255s Get:55 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-evaluate all 1.0.3-1 [114 kB] 255s Get:56 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-fs arm64 1.6.5+dfsg-1 [244 kB] 255s Get:57 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-glue arm64 1.8.0-1 [163 kB] 255s Get:58 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-jsonlite arm64 1.9.1+dfsg-1 [445 kB] 256s Get:59 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-rlang arm64 1.1.5-1 [1707 kB] 257s Get:60 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 257s Get:61 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-magrittr arm64 2.0.3-1 [154 kB] 258s Get:62 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-pkgbuild all 1.4.6-1 [213 kB] 258s Get:63 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-rprojroot all 2.0.4-2 [125 kB] 258s Get:64 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-withr all 3.0.2+dfsg-1 [214 kB] 258s Get:65 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-pkgload all 1.4.0-1 [247 kB] 259s Get:66 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-praise all 1.0.0-4build1 [20.3 kB] 259s Get:67 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-waldo all 0.6.1-2 [150 kB] 259s Get:68 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-testthat arm64 3.2.3-1 [1644 kB] 261s Preconfiguring packages ... 261s Fetched 48.5 MB in 39s (1258 kB/s) 261s Selecting previously unselected package fonts-dejavu-mono. 261s (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 ... 81647 files and directories currently installed.) 261s Preparing to unpack .../00-fonts-dejavu-mono_2.37-8_all.deb ... 261s Unpacking fonts-dejavu-mono (2.37-8) ... 261s Selecting previously unselected package fonts-dejavu-core. 261s Preparing to unpack .../01-fonts-dejavu-core_2.37-8_all.deb ... 261s Unpacking fonts-dejavu-core (2.37-8) ... 261s Selecting previously unselected package fontconfig-config. 261s Preparing to unpack .../02-fontconfig-config_2.15.0-2ubuntu1_arm64.deb ... 262s Unpacking fontconfig-config (2.15.0-2ubuntu1) ... 262s Selecting previously unselected package libfontconfig1:arm64. 262s Preparing to unpack .../03-libfontconfig1_2.15.0-2ubuntu1_arm64.deb ... 262s Unpacking libfontconfig1:arm64 (2.15.0-2ubuntu1) ... 262s Selecting previously unselected package fontconfig. 262s Preparing to unpack .../04-fontconfig_2.15.0-2ubuntu1_arm64.deb ... 262s Unpacking fontconfig (2.15.0-2ubuntu1) ... 262s Selecting previously unselected package libblas3:arm64. 262s Preparing to unpack .../05-libblas3_3.12.1-2_arm64.deb ... 262s Unpacking libblas3:arm64 (3.12.1-2) ... 262s Selecting previously unselected package libpixman-1-0:arm64. 262s Preparing to unpack .../06-libpixman-1-0_0.44.0-3_arm64.deb ... 262s Unpacking libpixman-1-0:arm64 (0.44.0-3) ... 262s Selecting previously unselected package libxcb-render0:arm64. 262s Preparing to unpack .../07-libxcb-render0_1.17.0-2_arm64.deb ... 262s Unpacking libxcb-render0:arm64 (1.17.0-2) ... 262s Selecting previously unselected package libxcb-shm0:arm64. 262s Preparing to unpack .../08-libxcb-shm0_1.17.0-2_arm64.deb ... 262s Unpacking libxcb-shm0:arm64 (1.17.0-2) ... 262s Selecting previously unselected package libxrender1:arm64. 262s Preparing to unpack .../09-libxrender1_1%3a0.9.10-1.1build1_arm64.deb ... 262s Unpacking libxrender1:arm64 (1:0.9.10-1.1build1) ... 262s Selecting previously unselected package libcairo2:arm64. 262s Preparing to unpack .../10-libcairo2_1.18.2-2_arm64.deb ... 262s Unpacking libcairo2:arm64 (1.18.2-2) ... 262s Selecting previously unselected package libdatrie1:arm64. 262s Preparing to unpack .../11-libdatrie1_0.2.13-3build1_arm64.deb ... 262s Unpacking libdatrie1:arm64 (0.2.13-3build1) ... 262s Selecting previously unselected package libdeflate0:arm64. 262s Preparing to unpack .../12-libdeflate0_1.23-1_arm64.deb ... 262s Unpacking libdeflate0:arm64 (1.23-1) ... 262s Selecting previously unselected package libgfortran5:arm64. 262s Preparing to unpack .../13-libgfortran5_15-20250222-0ubuntu1_arm64.deb ... 262s Unpacking libgfortran5:arm64 (15-20250222-0ubuntu1) ... 262s Selecting previously unselected package libgomp1:arm64. 262s Preparing to unpack .../14-libgomp1_15-20250222-0ubuntu1_arm64.deb ... 262s Unpacking libgomp1:arm64 (15-20250222-0ubuntu1) ... 262s Selecting previously unselected package libgraphite2-3:arm64. 262s Preparing to unpack .../15-libgraphite2-3_1.3.14-2ubuntu1_arm64.deb ... 262s Unpacking libgraphite2-3:arm64 (1.3.14-2ubuntu1) ... 262s Selecting previously unselected package libharfbuzz0b:arm64. 262s Preparing to unpack .../16-libharfbuzz0b_10.2.0-1_arm64.deb ... 262s Unpacking libharfbuzz0b:arm64 (10.2.0-1) ... 262s Selecting previously unselected package x11-common. 262s Preparing to unpack .../17-x11-common_1%3a7.7+23ubuntu3_all.deb ... 262s Unpacking x11-common (1:7.7+23ubuntu3) ... 262s Selecting previously unselected package libice6:arm64. 262s Preparing to unpack .../18-libice6_2%3a1.1.1-1_arm64.deb ... 262s Unpacking libice6:arm64 (2:1.1.1-1) ... 262s Selecting previously unselected package libjpeg-turbo8:arm64. 262s Preparing to unpack .../19-libjpeg-turbo8_2.1.5-3ubuntu2_arm64.deb ... 262s Unpacking libjpeg-turbo8:arm64 (2.1.5-3ubuntu2) ... 262s Selecting previously unselected package libjpeg8:arm64. 262s Preparing to unpack .../20-libjpeg8_8c-2ubuntu11_arm64.deb ... 262s Unpacking libjpeg8:arm64 (8c-2ubuntu11) ... 262s Selecting previously unselected package liblapack3:arm64. 262s Preparing to unpack .../21-liblapack3_3.12.1-2_arm64.deb ... 262s Unpacking liblapack3:arm64 (3.12.1-2) ... 262s Selecting previously unselected package liblerc4:arm64. 262s Preparing to unpack .../22-liblerc4_4.0.0+ds-5ubuntu1_arm64.deb ... 262s Unpacking liblerc4:arm64 (4.0.0+ds-5ubuntu1) ... 262s Selecting previously unselected package libthai-data. 262s Preparing to unpack .../23-libthai-data_0.1.29-2build1_all.deb ... 262s Unpacking libthai-data (0.1.29-2build1) ... 262s Selecting previously unselected package libthai0:arm64. 262s Preparing to unpack .../24-libthai0_0.1.29-2build1_arm64.deb ... 262s Unpacking libthai0:arm64 (0.1.29-2build1) ... 262s Selecting previously unselected package libpango-1.0-0:arm64. 262s Preparing to unpack .../25-libpango-1.0-0_1.56.2-1_arm64.deb ... 262s Unpacking libpango-1.0-0:arm64 (1.56.2-1) ... 263s Selecting previously unselected package libpangoft2-1.0-0:arm64. 263s Preparing to unpack .../26-libpangoft2-1.0-0_1.56.2-1_arm64.deb ... 263s Unpacking libpangoft2-1.0-0:arm64 (1.56.2-1) ... 263s Selecting previously unselected package libpangocairo-1.0-0:arm64. 263s Preparing to unpack .../27-libpangocairo-1.0-0_1.56.2-1_arm64.deb ... 263s Unpacking libpangocairo-1.0-0:arm64 (1.56.2-1) ... 263s Selecting previously unselected package libpaper2:arm64. 263s Preparing to unpack .../28-libpaper2_2.2.5-0.3_arm64.deb ... 263s Unpacking libpaper2:arm64 (2.2.5-0.3) ... 263s Selecting previously unselected package libpaper-utils. 263s Preparing to unpack .../29-libpaper-utils_2.2.5-0.3_arm64.deb ... 263s Unpacking libpaper-utils (2.2.5-0.3) ... 263s Selecting previously unselected package libsharpyuv0:arm64. 263s Preparing to unpack .../30-libsharpyuv0_1.5.0-0.1_arm64.deb ... 263s Unpacking libsharpyuv0:arm64 (1.5.0-0.1) ... 263s Selecting previously unselected package libsm6:arm64. 263s Preparing to unpack .../31-libsm6_2%3a1.2.4-1_arm64.deb ... 263s Unpacking libsm6:arm64 (2:1.2.4-1) ... 263s Selecting previously unselected package libtcl8.6:arm64. 263s Preparing to unpack .../32-libtcl8.6_8.6.16+dfsg-1_arm64.deb ... 263s Unpacking libtcl8.6:arm64 (8.6.16+dfsg-1) ... 263s Selecting previously unselected package libjbig0:arm64. 263s Preparing to unpack .../33-libjbig0_2.1-6.1ubuntu2_arm64.deb ... 263s Unpacking libjbig0:arm64 (2.1-6.1ubuntu2) ... 263s Selecting previously unselected package libwebp7:arm64. 263s Preparing to unpack .../34-libwebp7_1.5.0-0.1_arm64.deb ... 263s Unpacking libwebp7:arm64 (1.5.0-0.1) ... 263s Selecting previously unselected package libtiff6:arm64. 263s Preparing to unpack .../35-libtiff6_4.5.1+git230720-4ubuntu4_arm64.deb ... 263s Unpacking libtiff6:arm64 (4.5.1+git230720-4ubuntu4) ... 263s Selecting previously unselected package libxft2:arm64. 263s Preparing to unpack .../36-libxft2_2.3.6-1build1_arm64.deb ... 263s Unpacking libxft2:arm64 (2.3.6-1build1) ... 263s Selecting previously unselected package libxss1:arm64. 263s Preparing to unpack .../37-libxss1_1%3a1.2.3-1build3_arm64.deb ... 263s Unpacking libxss1:arm64 (1:1.2.3-1build3) ... 263s Selecting previously unselected package libtk8.6:arm64. 263s Preparing to unpack .../38-libtk8.6_8.6.16-1_arm64.deb ... 263s Unpacking libtk8.6:arm64 (8.6.16-1) ... 263s Selecting previously unselected package libxt6t64:arm64. 263s Preparing to unpack .../39-libxt6t64_1%3a1.2.1-1.2build1_arm64.deb ... 263s Unpacking libxt6t64:arm64 (1:1.2.1-1.2build1) ... 263s Selecting previously unselected package zip. 263s Preparing to unpack .../40-zip_3.0-14ubuntu2_arm64.deb ... 263s Unpacking zip (3.0-14ubuntu2) ... 263s Selecting previously unselected package unzip. 263s Preparing to unpack .../41-unzip_6.0-28ubuntu6_arm64.deb ... 263s Unpacking unzip (6.0-28ubuntu6) ... 263s Selecting previously unselected package xdg-utils. 263s Preparing to unpack .../42-xdg-utils_1.2.1-2ubuntu1_all.deb ... 263s Unpacking xdg-utils (1.2.1-2ubuntu1) ... 263s Selecting previously unselected package r-base-core. 263s Preparing to unpack .../43-r-base-core_4.4.3-1_arm64.deb ... 263s Unpacking r-base-core (4.4.3-1) ... 263s Selecting previously unselected package r-cran-brio. 263s Preparing to unpack .../44-r-cran-brio_1.1.5-1_arm64.deb ... 263s Unpacking r-cran-brio (1.1.5-1) ... 263s Selecting previously unselected package r-cran-ps. 264s Preparing to unpack .../45-r-cran-ps_1.9.0-1_arm64.deb ... 264s Unpacking r-cran-ps (1.9.0-1) ... 264s Selecting previously unselected package r-cran-r6. 264s Preparing to unpack .../46-r-cran-r6_2.6.1-1_all.deb ... 264s Unpacking r-cran-r6 (2.6.1-1) ... 264s Selecting previously unselected package r-cran-processx. 264s Preparing to unpack .../47-r-cran-processx_3.8.6-1_arm64.deb ... 264s Unpacking r-cran-processx (3.8.6-1) ... 264s Selecting previously unselected package r-cran-callr. 264s Preparing to unpack .../48-r-cran-callr_3.7.6-1_all.deb ... 264s Unpacking r-cran-callr (3.7.6-1) ... 264s Selecting previously unselected package r-cran-cli. 264s Preparing to unpack .../49-r-cran-cli_3.6.4-1_arm64.deb ... 264s Unpacking r-cran-cli (3.6.4-1) ... 264s Selecting previously unselected package r-cran-crayon. 264s Preparing to unpack .../50-r-cran-crayon_1.5.3-1_all.deb ... 264s Unpacking r-cran-crayon (1.5.3-1) ... 264s Selecting previously unselected package r-cran-desc. 264s Preparing to unpack .../51-r-cran-desc_1.4.3-1_all.deb ... 264s Unpacking r-cran-desc (1.4.3-1) ... 264s Selecting previously unselected package r-cran-diffobj. 264s Preparing to unpack .../52-r-cran-diffobj_0.3.5-1_arm64.deb ... 264s Unpacking r-cran-diffobj (0.3.5-1) ... 264s Selecting previously unselected package r-cran-digest. 264s Preparing to unpack .../53-r-cran-digest_0.6.37-1_arm64.deb ... 264s Unpacking r-cran-digest (0.6.37-1) ... 264s Selecting previously unselected package r-cran-evaluate. 264s Preparing to unpack .../54-r-cran-evaluate_1.0.3-1_all.deb ... 264s Unpacking r-cran-evaluate (1.0.3-1) ... 264s Selecting previously unselected package r-cran-fs. 264s Preparing to unpack .../55-r-cran-fs_1.6.5+dfsg-1_arm64.deb ... 264s Unpacking r-cran-fs (1.6.5+dfsg-1) ... 264s Selecting previously unselected package r-cran-glue. 264s Preparing to unpack .../56-r-cran-glue_1.8.0-1_arm64.deb ... 264s Unpacking r-cran-glue (1.8.0-1) ... 264s Selecting previously unselected package r-cran-jsonlite. 264s Preparing to unpack .../57-r-cran-jsonlite_1.9.1+dfsg-1_arm64.deb ... 264s Unpacking r-cran-jsonlite (1.9.1+dfsg-1) ... 264s Selecting previously unselected package r-cran-rlang. 264s Preparing to unpack .../58-r-cran-rlang_1.1.5-1_arm64.deb ... 264s Unpacking r-cran-rlang (1.1.5-1) ... 264s Selecting previously unselected package r-cran-lifecycle. 264s Preparing to unpack .../59-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 264s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 264s Selecting previously unselected package r-cran-magrittr. 264s Preparing to unpack .../60-r-cran-magrittr_2.0.3-1_arm64.deb ... 264s Unpacking r-cran-magrittr (2.0.3-1) ... 264s Selecting previously unselected package r-cran-pkgbuild. 264s Preparing to unpack .../61-r-cran-pkgbuild_1.4.6-1_all.deb ... 264s Unpacking r-cran-pkgbuild (1.4.6-1) ... 264s Selecting previously unselected package r-cran-rprojroot. 264s Preparing to unpack .../62-r-cran-rprojroot_2.0.4-2_all.deb ... 264s Unpacking r-cran-rprojroot (2.0.4-2) ... 264s Selecting previously unselected package r-cran-withr. 264s Preparing to unpack .../63-r-cran-withr_3.0.2+dfsg-1_all.deb ... 264s Unpacking r-cran-withr (3.0.2+dfsg-1) ... 264s Selecting previously unselected package r-cran-pkgload. 264s Preparing to unpack .../64-r-cran-pkgload_1.4.0-1_all.deb ... 264s Unpacking r-cran-pkgload (1.4.0-1) ... 264s Selecting previously unselected package r-cran-praise. 264s Preparing to unpack .../65-r-cran-praise_1.0.0-4build1_all.deb ... 264s Unpacking r-cran-praise (1.0.0-4build1) ... 264s Selecting previously unselected package r-cran-waldo. 264s Preparing to unpack .../66-r-cran-waldo_0.6.1-2_all.deb ... 264s Unpacking r-cran-waldo (0.6.1-2) ... 264s Selecting previously unselected package r-cran-testthat. 264s Preparing to unpack .../67-r-cran-testthat_3.2.3-1_arm64.deb ... 264s Unpacking r-cran-testthat (3.2.3-1) ... 265s Setting up libgraphite2-3:arm64 (1.3.14-2ubuntu1) ... 265s Setting up libpixman-1-0:arm64 (0.44.0-3) ... 265s Setting up libsharpyuv0:arm64 (1.5.0-0.1) ... 265s Setting up liblerc4:arm64 (4.0.0+ds-5ubuntu1) ... 265s Setting up libxrender1:arm64 (1:0.9.10-1.1build1) ... 265s Setting up libdatrie1:arm64 (0.2.13-3build1) ... 265s Setting up libxcb-render0:arm64 (1.17.0-2) ... 265s Setting up unzip (6.0-28ubuntu6) ... 265s Setting up x11-common (1:7.7+23ubuntu3) ... 265s Setting up libdeflate0:arm64 (1.23-1) ... 265s Setting up libxcb-shm0:arm64 (1.17.0-2) ... 265s Setting up libgomp1:arm64 (15-20250222-0ubuntu1) ... 265s Setting up libjbig0:arm64 (2.1-6.1ubuntu2) ... 265s Setting up zip (3.0-14ubuntu2) ... 265s Setting up libblas3:arm64 (3.12.1-2) ... 265s update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/aarch64-linux-gnu/libblas.so.3 (libblas.so.3-aarch64-linux-gnu) in auto mode 265s Setting up fonts-dejavu-mono (2.37-8) ... 265s Setting up libtcl8.6:arm64 (8.6.16+dfsg-1) ... 265s Setting up fonts-dejavu-core (2.37-8) ... 265s Setting up libjpeg-turbo8:arm64 (2.1.5-3ubuntu2) ... 265s Setting up libgfortran5:arm64 (15-20250222-0ubuntu1) ... 265s Setting up libwebp7:arm64 (1.5.0-0.1) ... 265s Setting up libharfbuzz0b:arm64 (10.2.0-1) ... 265s Setting up libthai-data (0.1.29-2build1) ... 265s Setting up libxss1:arm64 (1:1.2.3-1build3) ... 265s Setting up libpaper2:arm64 (2.2.5-0.3) ... 265s Setting up xdg-utils (1.2.1-2ubuntu1) ... 265s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 265s Setting up libjpeg8:arm64 (8c-2ubuntu11) ... 265s Setting up libice6:arm64 (2:1.1.1-1) ... 265s Setting up liblapack3:arm64 (3.12.1-2) ... 265s update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/aarch64-linux-gnu/liblapack.so.3 (liblapack.so.3-aarch64-linux-gnu) in auto mode 265s Setting up fontconfig-config (2.15.0-2ubuntu1) ... 265s Setting up libpaper-utils (2.2.5-0.3) ... 265s Setting up libthai0:arm64 (0.1.29-2build1) ... 265s Setting up libtiff6:arm64 (4.5.1+git230720-4ubuntu4) ... 265s Setting up libfontconfig1:arm64 (2.15.0-2ubuntu1) ... 265s Setting up libsm6:arm64 (2:1.2.4-1) ... 265s Setting up fontconfig (2.15.0-2ubuntu1) ... 267s Regenerating fonts cache... done. 267s Setting up libxft2:arm64 (2.3.6-1build1) ... 267s Setting up libtk8.6:arm64 (8.6.16-1) ... 267s Setting up libpango-1.0-0:arm64 (1.56.2-1) ... 267s Setting up libcairo2:arm64 (1.18.2-2) ... 267s Setting up libxt6t64:arm64 (1:1.2.1-1.2build1) ... 267s Setting up libpangoft2-1.0-0:arm64 (1.56.2-1) ... 267s Setting up libpangocairo-1.0-0:arm64 (1.56.2-1) ... 267s Setting up r-base-core (4.4.3-1) ... 267s Creating config file /etc/R/Renviron with new version 268s Setting up r-cran-crayon (1.5.3-1) ... 268s Setting up r-cran-ps (1.9.0-1) ... 268s Setting up r-cran-r6 (2.6.1-1) ... 268s Setting up r-cran-magrittr (2.0.3-1) ... 268s Setting up r-cran-fs (1.6.5+dfsg-1) ... 268s Setting up r-cran-brio (1.1.5-1) ... 268s Setting up r-cran-diffobj (0.3.5-1) ... 268s Setting up r-cran-rlang (1.1.5-1) ... 268s Setting up r-cran-withr (3.0.2+dfsg-1) ... 268s Setting up r-cran-processx (3.8.6-1) ... 268s Setting up r-cran-praise (1.0.0-4build1) ... 268s Setting up r-cran-digest (0.6.37-1) ... 268s Setting up r-cran-evaluate (1.0.3-1) ... 268s Setting up r-cran-glue (1.8.0-1) ... 268s Setting up r-cran-cli (3.6.4-1) ... 268s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 268s Setting up r-cran-rprojroot (2.0.4-2) ... 268s Setting up r-cran-jsonlite (1.9.1+dfsg-1) ... 268s Setting up r-cran-waldo (0.6.1-2) ... 268s Setting up r-cran-callr (3.7.6-1) ... 268s Setting up r-cran-desc (1.4.3-1) ... 268s Setting up r-cran-pkgbuild (1.4.6-1) ... 268s Setting up r-cran-pkgload (1.4.0-1) ... 268s Setting up r-cran-testthat (3.2.3-1) ... 268s Processing triggers for libc-bin (2.41-1ubuntu2) ... 268s Processing triggers for man-db (2.13.0-1) ... 269s Processing triggers for install-info (7.1.1-1) ... 270s autopkgtest [15:28:13]: test run-unit-test: [----------------------- 270s Begin testing test-atomic.R 270s 270s R version 4.4.3 (2025-02-28) -- "Trophy Case" 270s Copyright (C) 2025 The R Foundation for Statistical Computing 270s Platform: aarch64-unknown-linux-gnu 270s 270s R is free software and comes with ABSOLUTELY NO WARRANTY. 270s You are welcome to redistribute it under certain conditions. 270s Type 'license()' or 'licence()' for distribution details. 270s 270s R is a collaborative project with many contributors. 270s Type 'contributors()' for more information and 270s 'citation()' on how to cite R or R packages in publications. 270s 270s Type 'demo()' for some demos, 'help()' for on-line help, or 270s 'help.start()' for an HTML browser interface to help. 270s Type 'q()' to quit R. 270s 271s > NAME <- "atomic" 271s > source(file.path('_helper', 'init.R')) 271s > 271s > # - Basic Tests 271s > 271s > all.equal(as.character(diffPrint(chr.1, chr.2)), rdsf(100)) 271s [1] TRUE 271s > all.equal( 271s + as.character(diffPrint(chr.1, chr.2, mode="unified")), rdsf(200) 271s + ) 271s [1] TRUE 271s > all.equal( 271s + as.character(diffPrint(chr.1, chr.2, mode="context")), rdsf(400) 271s + ) 271s [1] TRUE 271s > all.equal( 271s + as.character(diffPrint(chr.1[2:3], chr.2[2], mode="sidebyside")), rdsf(500) 271s + ) 271s [1] TRUE 271s > # Check that `extra` works 271s > 271s > all.equal( 271s + as.character( 271s + diffPrint(chr.1, chr.2, mode="unified", extra=list(quote=FALSE)) 271s + ), 271s + rdsf(600) 271s + ) 271s [1] TRUE 271s > # make sure blanks line up correctly 271s > 271s > all.equal( 271s + as.character(diffPrint(chr.3, chr.4)), rdsf(700) 271s + ) 271s [1] TRUE 271s > all.equal( 271s + as.character(diffPrint(chr.3, chr.4, mode="unified")), rdsf(800) 271s + ) 271s [1] TRUE 271s > 271s > # - Word wrap in atomic 271s > 271s > A <- A.1 <- B <- c(letters, LETTERS) 271s > B[15] <- "Alabama" 271s > A.1[5] <- "Ee" 271s > C <- A[-15] 271s > D <- C 271s > E <- B[-45] 271s > 271s > # Test simple changes to vectors; at 80 columns removing 1:8 corresponds to 271s > # row deletion 271s > 271s > all.equal(as.character(diffPrint(A[-(1:8)], A)), rdsf(900)) 271s [1] TRUE 271s > all.equal(as.character(diffPrint(A, A[-(1:8)])), rdsf(1000)) 271s [1] TRUE 271s > 271s > all.equal(as.character(diffPrint(A[-1], A[-2])), rdsf(1100)) 271s [1] TRUE 271s > 271s > # Replace single word 271s > 271s > all.equal(as.character(diffPrint(A, B)), rdsf(1200)) 271s [1] TRUE 271s > all.equal(as.character(diffPrint(B, A)), rdsf(1250)) 271s [1] TRUE 271s > 271s > # Make sure turning off word.diff also turns of unwrapping, but that we can 271s > # turn off unwrapping without turning off word diff 271s > 271s > all.equal( 271s + as.character(diffPrint(A, B, word.diff=FALSE)), rdsf(1300) 271s + ) 271s [1] TRUE 271s > all.equal( 271s + as.character(diffPrint(A, B, unwrap.atomic=FALSE)), rdsf(1400) 271s + ) 271s [1] TRUE 271s > # Different wrap frequency and removed words that span lines 271s > 271s > all.equal( 271s + as.character(diffPrint(A, A.1[-(13:18)])), rdsf(1425) 271s + ) 271s [1] TRUE 271s > # Removing words 271s > 271s > all.equal(as.character(diffPrint(C, B)), rdsf(1450)) 271s [1] TRUE 271s > 271s > # Two hunks 271s > 271s > all.equal(as.character(diffPrint(D, E)), rdsf(1500)) 272s [1] TRUE 272s > all.equal(as.character(diffPrint(E, D)), rdsf(1600)) 272s [1] TRUE 272s > 272s > # Vignette example 272s > 272s > state.abb.2 <- state.abb 272s > state.abb.2[38] <- "Pennsylvania" 272s > 272s > all.equal( 272s + as.character(diffPrint(state.abb, state.abb.2)), rdsf(1700) 272s + ) 272s [1] TRUE 272s > # Number corner cases 272s > 272s > all.equal(as.character(diffPrint(1:100, 2:101)), rdsf(1800)) 272s [1] TRUE 272s > all.equal(as.character(diffPrint(2:101, 1:100)), rdsf(1900)) 272s [1] TRUE 272s > all.equal( 272s + as.character(diffPrint(2:101, (1:100)[-9])), rdsf(2000) 272s + ) 272s [1] TRUE 272s > all.equal( 272s + as.character(diffPrint((2:101)[-98], (1:100)[-9])), rdsf(2100) 272s + ) 272s [1] TRUE 272s > # This is one of those that a better in-hunk align algorithm would benefit 272s > 272s > int.1 <- int.2 <- 1:100 272s > int.2[c(8, 20, 60)] <- 99 272s > int.2 <- c(50:1, int.2) 272s > all.equal(as.character(diffPrint(int.1, int.2)), rdsf(2200)) 272s [1] TRUE 272s > 272s > # - with names 272s > rand.chrs <- do.call(paste0, expand.grid(LETTERS, LETTERS)) 272s > F <- F1 <- F2 <- (2:105)[-98] 272s > G <- G2 <- G3 <- G4 <- G5 <- (1:100)[-9] 272s > nm.1 <- rand.chrs[seq_along(F)] 272s > nm.2 <- rand.chrs[seq_along(G)] 272s > names(F1) <- names(F2) <- nm.1 272s > names(G3) <- names(G2) <- names(G3) <- names(G4) <- names(G5) <- nm.2 272s > names(G3)[c(5, 25, 60)] <- c("XXXXX", rand.chrs[c(300, 350)]) 272s > names(G4)[c(5, 25, 60)] <- names(G5)[c(5, 25, 60)] <- 272s + c("XX", rand.chrs[c(300, 350)]) 272s > attr(F2, "blah") <- 1:5 272s > attr(G5, "blah") <- 3:8 272s > 272s > all.equal(as.character(diffPrint(F, G)), rdsf(2300)) 272s [1] TRUE 272s > all.equal(as.character(diffPrint(F1, G2)), rdsf(2400)) 272s [1] TRUE 272s > 272s > # Challenging case b/c the names wrap with values, and you have to pick one or 272s > # the other to match when the wrap frequencies are different 272s > 272s > all.equal(as.character(diffPrint(F1, G3)), rdsf(2500)) 272s [1] TRUE 272s > all.equal(as.character(diffPrint(F1, G4)), rdsf(2520)) 272s [1] TRUE 272s > 272s > # Attributes 272s > 272s > all.equal(as.character(diffPrint(F2, G5)), rdsf(2530)) 272s [1] TRUE 272s > all.equal(as.character(diffPrint(F1, G5)), rdsf(2540)) 272s [1] TRUE 272s > 272s > # - Original tests 272s > set.seed(2) 272s > w1 <- sample( 272s + c( 272s + "carrot", "cat", "cake", "eat", "rabbit", "holes", "the", "a", "pasta", 272s + "boom", "noon", "sky", "hat", "blah", "paris", "dog", "snake" 272s + ), 25, replace=TRUE 272s + ) 272s > w4 <- w3 <- w2 <- w1 272s > w2[sample(seq_along(w1), 5)] <- LETTERS[1:5] 272s > w3 <- w1[8:15] 272s > w4 <- c(w1[1:5], toupper(w1[1:5]), w1[6:15], toupper(w1[1:5])) 272s > 272s > all.equal(as.character(diffPrint(w1, w2)), rdsf(2600)) 272s [1] TRUE 272s > all.equal(as.character(diffPrint(w1, w3)), rdsf(2700)) 272s [1] TRUE 272s > all.equal(as.character(diffPrint(w1, w4)), rdsf(2800)) 272s [1] TRUE 272s > 272s > # - Simple word diffs 272s > a <- c("a", "b", "c", "d") 272s > b <- c("b", "c", "d", "e") 272s > all.equal(as.character(diffPrint(a, b)), rdsf(2900)) 272s [1] TRUE 272s > 272s > a <- c("x", "a", "b", "c", "d", "z") 272s > b <- c("x", "b", "c", "d", "e", "z") 272s > all.equal(as.character(diffPrint(a, b)), rdsf(3000)) 272s [1] TRUE 272s > 272s > a <- c("x", "a", "b", "c", "d", "z") 272s > b <- c("z", "b", "c", "d", "e", "x") 272s > all.equal(as.character(diffPrint(a, b)), rdsf(3100)) 272s [1] TRUE 272s > 272s > # - Alignment edge cases 272s > all.equal( 272s + as.character(diffPrint(20:50, 30:62)), rdsf(3200) 272s + ) 272s [1] TRUE 272s > # below is off; should be aligning matching context line, part of the problem 272s > # might be that we're doing the realignment without thinking about what the 272s > # other hunk has. 272s > # 272s > # Possible encode each line as hunk#:diff/mix/cont 272s > 272s > # all.equal( 272s > # as.character(diffPrint(20:50, 35:62)), rdsf(3300) 272s > # ) 272s > 272s > # another interesting example where the existing algo seems to lead to a 272s > # reasonable outcome 272s > 272s > all.equal( 272s + as.character(diffPrint(c(1:24,35:45), c(1:8, 17:45))), rdsf(3400) 272s + ) 272s [1] TRUE 272s > 272s PASS 272s Begin testing test-banner.R 272s 272s R version 4.4.3 (2025-02-28) -- "Trophy Case" 272s Copyright (C) 2025 The R Foundation for Statistical Computing 272s Platform: aarch64-unknown-linux-gnu 272s 272s R is free software and comes with ABSOLUTELY NO WARRANTY. 272s You are welcome to redistribute it under certain conditions. 272s Type 'license()' or 'licence()' for distribution details. 272s 272s R is a collaborative project with many contributors. 272s Type 'contributors()' for more information and 272s 'citation()' on how to cite R or R packages in publications. 272s 272s Type 'demo()' for some demos, 'help()' for on-line help, or 272s 'help.start()' for an HTML browser interface to help. 272s Type 'q()' to quit R. 272s 273s > NAME <- "banner" 273s > source(file.path('_helper', 'init.R')) 273s > 273s > # - Banner Capture ------------------------------------------------------------ 273s > 273s > ref <- as.character( 273s + diffPrint(1 + 2, letters, tar.banner="1 + 2", cur.banner="letters") 273s + ) 273s > identical(as.character(diffPrint(1 + 2, letters)), ref) 273s [1] TRUE 273s > invisible( 273s + setMethod( 273s + "diffPrint", c("numeric", "character"), 273s + function(target, current, ...) callNextMethod() 273s + ) ) 273s > identical(as.character(diffPrint(1 + 2, letters)), ref) 273s [1] TRUE 273s > isTRUE( 273s + !identical(as.character(diffPrint(1 + 2, LETTERS)), ref) 273s + ) 273s [1] TRUE 273s > 273s PASS 273s Begin testing test-capture.R 273s 273s R version 4.4.3 (2025-02-28) -- "Trophy Case" 273s Copyright (C) 2025 The R Foundation for Statistical Computing 273s Platform: aarch64-unknown-linux-gnu 273s 273s R is free software and comes with ABSOLUTELY NO WARRANTY. 273s You are welcome to redistribute it under certain conditions. 273s Type 'license()' or 'licence()' for distribution details. 273s 273s R is a collaborative project with many contributors. 273s Type 'contributors()' for more information and 273s 'citation()' on how to cite R or R packages in publications. 273s 273s Type 'demo()' for some demos, 'help()' for on-line help, or 273s 'help.start()' for an HTML browser interface to help. 273s Type 'q()' to quit R. 273s 273s > NAME <- "capture" 273s > source(file.path('_helper', 'init.R')) 273s > 273s > # - capture width issues ------------------------------------------------------- 273s > 273s > local({ 273s + old.opt <- options(width=40L) 273s + on.exit(options(old.opt)) 273s + etc <- new("Settings", style=StyleRaw(), text.width=5L) # impossible width 273s + # warn: "Unable to set desired " 273s + res <- diffobj:::capture(letters, etc, function(...) do.call(cat, list(...))) 273s + all.equal(nchar(res), c(40L, 40L, 36L)) 273s + }) 273s [1] TRUE 273s Warning message: 273s In diffobj:::capture(letters, etc, function(...) do.call(cat, list(...))) : 273s Unable to set desired width 5, (invalid 'width' parameter, allowed 10...10000);proceeding with existing setting. 273s > 273s > # - errors in capture ---------------------------------------------------------- 273s > 273s > etc <- new("Settings", style=StyleRaw()) 273s > try(diffobj:::capture(stop('boom'), etc, function(...) stop(...))) # boom 273s Error in eval(x, etc@frame) : boom 273s Error in err("Failed attempting to get text representation of object: ", : 273s Failed attempting to get text representation of object: boom 273s > print <- function() NULL 273s > str <- function() NULL 273s > etc@mode <- "auto" 273s > etc@frame <- environment() 273s > try(diffobj:::capt_print(1, 2, etc, function(...) stop(...), list())) # compose 273s Error in match.call(definition, call, expand.dots, envir) : 273s unused argument (x = NULL) 273s Error in err("Unable to compose `print` call") : 273s Unable to compose `print` call 273s > # spec object 273s > try(diffobj:::capt_str(1, 2, etc, function(...) stop(...), list(object=1))) 273s Error in err("You may not specify `object` as part of `extra`") : 273s You may not specify `object` as part of `extra` 273s > try( # attempting to deparse 273s + diffobj:::capt_deparse( 273s + stop('a'), stop('b'), etc, function(...) stop(...), list() 273s + ) 273s + ) 273s Error in do.call(deparse, c(list(target), extra), quote = TRUE) : a 273s Error in err("Error attempting to deparse object(s)") : 273s Error attempting to deparse object(s) 273s > try( # target 273s + suppressWarnings( 273s + diffobj:::capt_file( 273s + tempfile(), tempfile(), etc, function(...) stop(...), list() 273s + ) ) 273s + ) 273s Error in file(con, "r") : cannot open the connection 273s Error in err("Unable to read `target` file.") : 273s Unable to read `target` file. 273s > local({ 273s + f <- tempfile() 273s + on.exit(unlink(f), add=TRUE) 273s + writeLines(letters, f) 273s + try( # "`current`" 273s + suppressWarnings( 273s + diffobj:::capt_file(f, tempfile(), etc, function(...) stop(...), list()) 273s + ) 273s + ) 273s + try( # "`target`" 273s + suppressWarnings( 273s + diffobj:::capt_csv( 273s + tempfile(), tempfile(), etc, function(...) stop(...), list() 273s + ) ) 273s + ) 273s + try( # "`current`" 273s + suppressWarnings( 273s + diffobj:::capt_csv( 273s + f, tempfile(), etc, function(...) stop(...), list() 273s + ) ) 273s + ) 273s + }) 273s Error in file(con, "r") : cannot open the connection 273s Error in err("Unable to read `current` file.") : 273s Unable to read `current` file. 273s Error in file(file, "rt") : cannot open the connection 273s Error in err("Unable to read `target` file.") : 273s Unable to read `target` file. 273s Error in file(file, "rt") : cannot open the connection 273s Error in err("Unable to read `current` file.") : 273s Unable to read `current` file. 273s > bad_obj <- structure(list(NULL), class='diffobj_ogewlhgiadfl3') 273s > try( # "Coercion of `target`" 273s + diffobj:::capt_chr(bad_obj, letters, etc, function(...) stop(...), list()) 273s + ) 273s Error in diffobj:::capt_chr(bad_obj, letters, etc, function(...) stop(...), : 273s Coercion of `target` did not produce character object (list). 273s > try( # "Coercion of `current`" 273s + diffobj:::capt_chr(letters, bad_obj, etc, function(...) stop(...), list()) 273s + ) 273s Error in diffobj:::capt_chr(letters, bad_obj, etc, function(...) stop(...), : 273s Coercion of `current` did not produce character object (list). 273s > 273s PASS 273s Begin testing test-check.R 274s 274s R version 4.4.3 (2025-02-28) -- "Trophy Case" 274s Copyright (C) 2025 The R Foundation for Statistical Computing 274s Platform: aarch64-unknown-linux-gnu 274s 274s R is free software and comes with ABSOLUTELY NO WARRANTY. 274s You are welcome to redistribute it under certain conditions. 274s Type 'license()' or 'licence()' for distribution details. 274s 274s R is a collaborative project with many contributors. 274s Type 'contributors()' for more information and 274s 'citation()' on how to cite R or R packages in publications. 274s 274s Type 'demo()' for some demos, 'help()' for on-line help, or 274s 'help.start()' for an HTML browser interface to help. 274s Type 'q()' to quit R. 274s 274s > NAME <- "check" 274s > source(file.path('_helper', 'init.R')) 274s > 274s > # - is.less_flags -------------------------------------------------------------- 274s > 274s > isTRUE(diffobj:::is.less_flags("RVXF")) 274s [1] TRUE 274s > isTRUE(diffobj:::is.less_flags("rvxF")) 274s [1] TRUE 274s > identical(diffobj:::is.less_flags(c("rvxF", "RVXF")), FALSE) 274s [1] TRUE 274s > identical(diffobj:::is.less_flags(23), FALSE) 274s [1] TRUE 274s > identical(diffobj:::is.less_flags("rv xF"), FALSE) 274s [1] TRUE 274s > 274s > # - is.int.2L ------------------------------------------------------------------ 274s > 274s > isTRUE(diffobj:::is.int.2L(1:2)) 274s [1] TRUE 274s > isTRUE(diffobj:::is.int.2L(as.numeric(1:2))) 274s [1] TRUE 274s > identical(diffobj:::is.int.2L(c(1.3, 2.2)), FALSE) 274s [1] TRUE 274s > identical(diffobj:::is.int.2L(1:3), FALSE) 274s [1] TRUE 274s > identical(diffobj:::is.int.2L(c(1, NA)), FALSE) 274s [1] TRUE 274s > 274s > # - arg.funs ------------------------------------------------------------------- 274s > 274s > isTRUE(diffobj:::is.one.arg.fun(function(x) NULL)) 274s [1] TRUE 274s > isTRUE(diffobj:::is.one.arg.fun(function(x, y=5) NULL)) 274s [1] TRUE 274s > 274s > diffobj:::is.one.arg.fun(function(..., x) NULL) # "cannot have `...` as " 274s [1] "cannot have `...` as the first argument" 274s > diffobj:::is.one.arg.fun(NULL) # "is not a fun" 274s [1] "is not a function" 274s > diffobj:::is.one.arg.fun(function() NULL) # "have at least" 274s [1] "does not have at least one arguments" 274s > diffobj:::is.one.arg.fun(function(x, y) NULL) # "cannot have any" 274s [1] "cannot have any non-optional arguments other than first one" 274s > 274s > isTRUE(diffobj:::is.two.arg.fun(function(x, y) NULL)) 274s [1] TRUE 274s > isTRUE(diffobj:::is.two.arg.fun(function(x, y=5) NULL)) 274s [1] TRUE 274s > 274s > diffobj:::is.two.arg.fun(function(x, ..., y) NULL) # "cannot have `...` as " 274s [1] "cannot have `...` as one of the first two arguments" 274s > diffobj:::is.two.arg.fun(NULL) # "is not a fun" 274s [1] "is not a function" 274s > diffobj:::is.two.arg.fun(function(x) NULL) # "have at least") 274s [1] "does not have at least two arguments" 274s > diffobj:::is.two.arg.fun(function(x, y, z) NULL) # "cannot have any" 274s [1] "cannot have any non-optional arguments other than first two" 274s > 274s > # - valid_object --------------------------------------------------------------- 274s > 274s > s.h <- StyleHtml() 274s > s.h@wrap <- TRUE 274s > try(diffobj:::valid_object(s.h, "style", stop)) #an invalid `StyleHtml` object 274s Error in diffobj:::valid_object(s.h, "style", stop) : 274s Argument `style` is an invalid `StyleHtml` object because: - slot `wrap` must be FALSE for `styleHtml` objects. 274s > 274s > pal <- PaletteOfStyles() 274s > pal["html", "light", "yb"] <- list(s.h) 274s > try(# "`palette.of.styles` is an invalid" 274s + diffChr( 274s + "A", "B", palette.of.styles=pal, style="auto", format="html", 274s + brightness="light", color.mode="yb" 274s + ) 274s + ) 274s Error in diffChr(target = "A", current = "B", palette.of.styles = pal, : 274s Argument `palette.of.styles` is an invalid `StyleHtml` because it contains and invalid `Style` object: - slot `wrap` must be FALSE for `styleHtml` objects. 274s > # - brightness ----------------------------------------------------------------- 274s > 274s > try(diffPrint(1:3, 3:6, brightness=NA)) # "must be character" 274s Error in diffPrint(target = 1:3, current = 3:6, brightness = NA) : 274s Argument `brightness` must be character and not contain NAs 274s > try(diffPrint(1:3, 3:6, brightness="red")) # "may only contain values" 274s Error in diffPrint(target = 1:3, current = 3:6, brightness = "red") : 274s Argument `brightness` may only contain values in `c("neutral", "light", "dark")` 274s > try(diffPrint(1:3, 3:6, brightness=c(raw='light'))) # "one empty name" 274s Error in diffPrint(target = 1:3, current = 3:6, brightness = c(raw = "light")) : 274s Argument `brightness` must include at least one empty name `""` if it has names. 274s > try(diffPrint(1:3, 3:6, brightness=c('light', 'dark'))) # have names 274s Error in diffPrint(target = 1:3, current = 3:6, brightness = c("light", : 274s Argument `brightness` must have names if it has length > 1, and those names must include at least an empty name `""` as well as names only from `c("raw", "ansi8", "ansi256", "html")`. 274s > 274s > # - misc ----------------------------------------------------------------------- 274s > 274s > diffobj:::is.one.file.name(1) # "must be character" 274s [1] "must be character(1L) and not NA" 274s > try(diffPrint(1:3, 2:6, extra="hello")) # "must be a list" 274s Error in diffPrint(target = 1:3, current = 2:6, extra = "hello") : 274s Argument `extra` must be a list. 274s > try(diffPrint(1:3, 2:6, context=TRUE)) # "Argument `context` must" 274s Error in diffPrint(target = 1:3, current = 2:6, context = TRUE) : 274s Argument `context` must be integer(1L) and not NA, an object produced by `auto_context`, or "auto". 274s > try(diffPrint(1:3, 2:6, mode=1)) # "must be character" 274s Error in diffPrint(target = 1:3, current = 2:6, mode = 1) : 274s Argument `mode` must be character(1L) and in `c("auto", "unified", "context", "sidebyside")`. 274s > try(diffPrint(1:3, 2:6, tab.stops=-1)) # "strictly positive" 274s Error in diffPrint(target = 1:3, current = 2:6, tab.stops = -1) : 274s Argument `tab.stops` must be integer containing at least one value and with all values strictly positive 274s > try(diffPrint(1:3, 2:6, hunk.limit='hello')) # "integer vector" 274s Error in diffPrint(target = 1:3, current = 2:6, hunk.limit = "hello") : 274s Argument `hunk.limit` must be an integer vector of length 1 or 2 and if length 2, with the first value larger than or equal to the second. 274s > try(diffPrint(1:3, 2:6, guides='hello')) # "or a function" 274s Error in diffPrint(target = 1:3, current = 2:6, guides = "hello") : 274s Argument `guides` must be TRUE, FALSE, or a function 274s > try(diffPrint(1:3, 2:6, guides=function(x, y, z) NULL))# "cannot have any non" 274s Error in diffPrint(target = 1:3, current = 2:6, guides = function(x, y, : 274s Argument `guides` cannot have any non-optional arguments other than first two 274s > try(diffPrint(1:3, 2:6, trim='hello')) # "TRUE, FALSE, or a function" 274s Error in diffPrint(target = 1:3, current = 2:6, trim = "hello") : 274s Argument `trim` must be TRUE, FALSE, or a function 274s > try(diffPrint(1:3, 2:6, trim=function(x, y, z) NULL)) # "cannot have any non" 274s Error in diffPrint(target = 1:3, current = 2:6, trim = function(x, y, : 274s Argument `trim` cannot have any non-optional arguments other than first two 274s > try(diffPrint(1:3, 2:6, interactive='hello')) # "must be TRUE or" 274s Error in diffPrint(target = 1:3, current = 2:6, interactive = "hello") : 274s Argument `interactive` must be TRUE or FALSE. 274s > try(diffPrint(1:3, 2:6, max.diffs=1:10)) # "must be integer" 274s Error in diffPrint(target = 1:3, current = 2:6, max.diffs = 1:10) : 274s Argument `max.diffs` must be integer(1L) and not NA. 274s > try(diffPrint(1:3, 2:6, tar.banner=1:10)) # "must be atomic" 274s Error in diffPrint(target = 1:3, current = 2:6, tar.banner = 1:10) : 274s Argument `tar.banner` must be atomic and length(1L), NULL, a symbol, or a call 274s > try(diffPrint(1:3, 2:6, style=1:10)) # "must be \"auto\", a" 274s Error in diffPrint(target = 1:3, current = 2:6, style = 1:10) : 274s Argument `style` must be "auto", a `Style` object, or a list. 274s > try(diffPrint(1:3, 2:6, pager=1:10)) # "must be one of" 274s Error in diffPrint(target = 1:3, current = 2:6, pager = 1:10) : 274s Argument `pager` must be one of `c("auto", "off", "on")`, a `Pager` object, or a list. 274s > try(diffPrint(1:3, 2:6, format=1:10)) # "must be character" 274s Error in diffPrint(target = 1:3, current = 2:6, format = 1:10) : 274s Argument `format` must be character(1L) and not NA 274s > try(diffPrint(1:3, 2:6, palette.of.styles=1:10)) # "must be a `PaletteOfStyles`" 274s Error in diffPrint(target = 1:3, current = 2:6, palette.of.styles = 1:10) : 274s Argument `palette.of.styles` must be a `PaletteOfStyles` object. 274s > try(diffChr(letters, LETTERS, context=NA)) # "must be integer" 274s Error in diffChr(target = letters, current = LETTERS, context = NA) : 274s Argument `context` must be integer(1L) and not NA, an object produced by `auto_context`, or "auto". 274s > 274s > 274s > 274s PASS 274s Begin testing test-context.R 274s 274s R version 4.4.3 (2025-02-28) -- "Trophy Case" 274s Copyright (C) 2025 The R Foundation for Statistical Computing 274s Platform: aarch64-unknown-linux-gnu 274s 274s R is free software and comes with ABSOLUTELY NO WARRANTY. 274s You are welcome to redistribute it under certain conditions. 274s Type 'license()' or 'licence()' for distribution details. 274s 274s R is a collaborative project with many contributors. 274s Type 'contributors()' for more information and 274s 'citation()' on how to cite R or R packages in publications. 274s 274s Type 'demo()' for some demos, 'help()' for on-line help, or 274s 'help.start()' for an HTML browser interface to help. 274s Type 'q()' to quit R. 274s 274s > NAME <- "context" 274s > source(file.path('_helper', 'init.R')) 274s > 274s > # - interesting context values ------------------------------------------------- 274s > 274s > all.equal( 274s + as.character(diffChr(chr.9, chr.10, context=0)), 274s + rdsf(100) 274s + ) 274s [1] TRUE 274s > all.equal( 274s + as.character(diffChr(chr.9, chr.10, context=-1L)), 274s + rdsf(150) 274s + ) 275s [1] TRUE 275s > all.equal( 275s + as.character(diffChr(chr.9, chr.10, context="auto")), 275s + rdsf(200) 275s + ) 275s [1] TRUE 275s > all.equal( 275s + as.character(diffChr(chr.9, chr.10, context=0, mode="context")), rdsf(300) 275s + ) 275s [1] TRUE 275s > # - with line limit ------------------------------------------------------------ 275s > 275s > all.equal( 275s + as.character(diffChr(chr.9, chr.10, context="auto", line.limit=18)), 275s + rdsf(400) 275s + ) 275s [1] TRUE 275s > all.equal( 275s + as.character(diffChr(chr.9, chr.10, context="auto", line.limit=25)), 275s + rdsf(500) 275s + ) 275s [1] TRUE 275s > # default to min context 275s > 275s > a <- b <- letters 275s > b[c(3, 20)] <- LETTERS[c(3,20)] 275s > all.equal( 275s + capture.output( 275s + show(diffChr(a, b, line.limit=c(20, 10), context='auto', format='raw')) 275s + ), 275s + txtf(100) 275s + ) 275s [1] TRUE 275s > # trim hunks in auto-context mode 275s > 275s > a <- b <- letters 275s > b[c(3, 10, 20)] <- LETTERS[c(3,10,20)] 275s > all.equal( 275s + capture.output(show( 275s + diffChr( 275s + a, b, hunk.limit=c(2, 1), context=auto_context(1, 5), line.limit=20, 275s + format='raw' 275s + ) 275s + )), 275s + txtf(200) 275s + ) 275s [1] TRUE 275s > # - error handling ------------------------------------------------------------- 275s > 275s > try(auto_context(min=-1, max=1:3)) # "`min` must be" 275s Error in auto_context(min = -1, max = 1:3) : 275s Argument `min` must be integer(1L) and greater than zero 275s > try(auto_context(min=1, max=1:3)) # "`max` must be" 275s Error in auto_context(min = 1, max = 1:3) : 275s Argument `max` must be integer(1L) and not NA 275s > 275s > 275s PASS 275s Begin testing test-core.R 275s 275s R version 4.4.3 (2025-02-28) -- "Trophy Case" 275s Copyright (C) 2025 The R Foundation for Statistical Computing 275s Platform: aarch64-unknown-linux-gnu 275s 275s R is free software and comes with ABSOLUTELY NO WARRANTY. 275s You are welcome to redistribute it under certain conditions. 275s Type 'license()' or 'licence()' for distribution details. 275s 275s R is a collaborative project with many contributors. 275s Type 'contributors()' for more information and 275s 'citation()' on how to cite R or R packages in publications. 275s 275s Type 'demo()' for some demos, 'help()' for on-line help, or 275s 'help.start()' for an HTML browser interface to help. 275s Type 'q()' to quit R. 275s 275s > NAME <- "core" 275s > source(file.path('_helper', 'init.R')) 275s > 275s > # The Myers paper strings 275s > 275s > A <- c("a", "b", "c", "a", "b", "b", "a") 275s > B <- c("c", "b", "a", "b", "a", "c") 275s > 275s > # - diff myers simple ---------------------------------------------------------- 275s > 275s > identical( 275s + diffobj:::myers_simple(character(), character()), 275s + list(target = integer(0), current = integer(0)) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple("a", character()), 275s + list(target = NA_integer_, current = integer(0)) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple(character(), "a"), 275s + list(target = integer(0), current = NA_integer_) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple("a", "a"), list(target = 0L, current = 0L) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple("a", "b"), 275s + list(target = 1L, current = 1L) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple(c("a", "b"), "b"), 275s + list(target = c(NA, 0L), current = 0L) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple(c("a", "b"), "a"), 275s + list(target = c(0L, NA), current = 0L) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple("a", c("a", "b")), 275s + list(target = 0L, current = c(0L, NA)) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple("b", c("a", "b")), 275s + list(target = 0L, current = c(NA, 0L)) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple(c("a", "b"), c("b", "c")), 275s + list(target = c(NA, 0L), current = c(0L, NA)) 275s + ) 275s [1] TRUE 275s > identical( 275s + diffobj:::myers_simple(c("a", "b", "c", "d"), c("a", "c", "d", "b")), 275s + list(target = c(0L, NA, 0L, 0L), current = c(0L, 0L, 0L, NA)) 275s + ) 275s [1] TRUE 275s > # Actual Myers sample string 275s > identical( 275s + diffobj:::myers_simple(A, B), 275s + list(target = c(NA, NA, 0L, 0L, 0L, NA, 0L), current = c(0L, NA, 0L, 0L, 0L, NA)) 275s + ) 275s [1] TRUE 275s > # - diff myers mba ------------------------------------------------------------- 275s > 275s > identical(ses(character(), character()), character()) 275s [1] TRUE 275s > identical(ses("a", character()), "1d0") 275s [1] TRUE 275s > identical(ses(character(), "a"), "0a1") 275s [1] TRUE 275s > identical(ses("a", "a"), character()) 275s [1] TRUE 275s > identical(ses("a", "b"), "1c1") 275s [1] TRUE 275s > identical(ses(c("a", "b"), "b"), "1d0") 275s [1] TRUE 275s > identical(ses(c("a", "b"), "a"), "2d1") 275s [1] TRUE 275s > identical(ses("a", c("a", "b")), "1a2") 275s [1] TRUE 275s > identical(ses("b", c("a", "b")), "0a1") 275s [1] TRUE 275s > identical(ses(c("a", "b"), c("b", "c")), c("1d0", "2a2")) 275s [1] TRUE 275s > identical( 275s + ses(c("a", "b", "c", "d"), c("a", "c", "d", "b")), c("2d1", "4a4") 275s + ) 275s [1] TRUE 275s > # Actual Myers sample string 275s > identical(ses(A, B), c("1,2d0", "4d1", "5a3", "7a6")) 275s [1] TRUE 275s > # This used to cause errors due to under-allocated buffer vector 275s > identical(ses(letters[1:10], LETTERS[1:2]), "1,10c1,2") 275s [1] TRUE 275s > 275s > # A little more complex with changes, this was a problem at some point 275s > 275s > A2 <- c("A", "B", "C") 275s > B2 <- c("X", "A", "Y", "C") 275s > identical(ses(A2, B2), c("0a1", "2c3")) 275s [1] TRUE 275s > 275s > # More complicated strings; intended for use with contexts for hunks, 275s > # but making sure the diffs are correct 275s > 275s > A1 <- c("A", "AA", "B", "C", "D", "E", "F", "G", "H") 275s > B1 <- c("A", "B", "X", "W", "D", "DD", "E", "Y", "Z") 275s > C1 <- c("X", "D", "E", "Y", "Z", "H") 275s > 275s > identical(ses(A1, B1), c("2d1", "4c3,4", "5a6", "7,9c8,9")) 275s [1] TRUE 275s > identical(ses(A1, C1), c("1,4c1", "7,8c4,5")) 275s [1] TRUE 275s > 275s > A5 <- c("A", "AA", "B", "C", "D", "E", "F", "G", "H") 275s > B5 <- c("A", "B", "X", "W", "D", "E", "F", "W", "G") 275s > identical(ses(A5, B5), c("2d1", "4c3,4", "7a8", "9d9")) 275s [1] TRUE 275s > 275s > # NAs treated as strings 275s > 275s > identical(ses(c(NA, "a", "b"), c("a", "b", NA)), c("1d0", "3a3")) 275s [1] TRUE 275s > 275s > # Coersion to character 275s > 275s > identical(ses(1:5, 4:6), c("1,3d0", "5a3")) 275s [1] TRUE 275s > 275s > # - print/summary -------------------------------------------------------------- 275s > capture.output( 275s + res.1 <- summary(diffobj:::diff_myers(A, B), with.match=TRUE) 275s + ) 275s [1] " type string len offset" "1 Delete ab 2 1" 275s [3] "2 Match c 1 3" "3 Delete a 1 4" 275s [5] "4 Match b 1 5" "5 Insert a 1 3" 275s [7] "6 Match ba 2 6" "7 Insert c 1 6" 275s > identical( 275s + res.1, 275s + structure(list(type = structure(c(3L, 1L, 3L, 1L, 2L, 1L, 2L), .Label = c("Match", 275s + "Insert", "Delete"), class = "factor"), string = c("ab", "c", 275s + "a", "b", "a", "ba", "c"), len = c(2L, 1L, 1L, 1L, 1L, 2L, 1L 275s + ), offset = c(1L, 3L, 4L, 5L, 3L, 6L, 6L)), class = "data.frame", row.names = c(NA, 275s + -7L)) 275s + ) 275s [1] TRUE 275s > capture.output( 275s + res.2 <- summary(diffobj:::diff_myers(A, B), with.match=FALSE) 275s + ) 275s [1] " type len offset" "1 Delete 2 1" "2 Match 1 3" 275s [4] "3 Delete 1 4" "4 Match 1 5" "5 Insert 1 3" 275s [7] "6 Match 2 6" "7 Insert 1 6" 275s > identical( 275s + res.2, 275s + structure(list(type = structure(c(3L, 1L, 3L, 1L, 2L, 1L, 2L), .Label = c("Match", "Insert", "Delete"), class = "factor"), len = c(2L, 1L, 1L, 1L, 1L, 2L, 1L), offset = c(1L, 3L, 4L, 5L, 3L, 6L, 6L)), .Names = c("type", "len", "offset"), row.names = c(NA, -7L), class = "data.frame") 275s + ) 275s [1] TRUE 275s > identical( 275s + capture.output(print(diffobj:::diff_myers(A, B))), ses(A, B) 275s + ) 275s [1] TRUE 275s > # # - translate 275s > # aa <- c("a", "b", "b", "c", "e") 275s > # bb <- c("x", "y", "c", "f", "e") 275s > # identical( 275s > # diffobj:::diffObjCompact(diffobj:::diff_myers(A, B)), 275s > # list(target = c(NA, NA, 0L, NA, 0L, 0L, 0L), current = c(0L, 0L, NA, 0L, 0L, NA)) 275s > # ) 275s > # identical( 275s > # diffobj:::diffObjCompact(diffobj:::diff_myers(aa, bb)), 275s > # list(target = c(1L, 2L, NA, 0L, 0L), current = c(1L, 2L, 0L, NA, 0L)) 275s > # ) 275s > # 275s > # } ) 275s > 275s PASS 275s Begin testing test-diffChr.R 275s 275s R version 4.4.3 (2025-02-28) -- "Trophy Case" 275s Copyright (C) 2025 The R Foundation for Statistical Computing 275s Platform: aarch64-unknown-linux-gnu 275s 275s R is free software and comes with ABSOLUTELY NO WARRANTY. 275s You are welcome to redistribute it under certain conditions. 275s Type 'license()' or 'licence()' for distribution details. 275s 275s R is a collaborative project with many contributors. 275s Type 'contributors()' for more information and 275s 'citation()' on how to cite R or R packages in publications. 275s 275s Type 'demo()' for some demos, 'help()' for on-line help, or 275s 'help.start()' for an HTML browser interface to help. 275s Type 'q()' to quit R. 275s 276s > NAME <- "diffChr" 276s > source(file.path('_helper', 'init.R')) 276s > 276s > # - Corner Cases --------------------------------------------------------------- 276s > 276s > # Corner cases from https://neil.fraser.name/writing/diff/ 276s > # Both of these appear handled correctly by the algorithm here 276s > # first one: suboptimal edit script due to two sided approach 276s > 276s > A1 <- c("X", "A", "X", "C", "X", "A", "B", "C") 276s > B1 <- c("A", "B", "C", "Y") 276s > all.equal(as.character(diffChr(A1, B1)), rdsf(100)) 276s [1] TRUE 276s > 276s > # second one: failure to find intersection at ends of paths (paths run into 276s > # each other eventually) 276s > 276s > A2 <- c("A", "B", "X", "A", "B") 276s > B2 <- c("A", "Y", "B") 276s > all.equal(as.character(diffChr(A2, B2)), rdsf(200)) 276s [1] TRUE 276s > 276s > # Simple corner cases 276s > 276s > all.equal( 276s + as.character(diffChr(character(), character())), rdsf(225) 276s + ) 276s [1] TRUE 276s > all.equal(as.character(diffChr("", "")), rdsf(250)) 276s [1] TRUE 276s > 276s > # - Larger strings ------------------------------------------------------------- 276s > 276s > # diffChr(X[1:2000], X[2001:4000]) 276s > 276s > all.equal(as.character(diffChr(chr.7, chr.8)), rdsf(300)) 276s [1] TRUE 276s > 276s > # Too slow to run; useful for benchmarking though 276s > 276s > # X1 <- X[1:2e4] 276s > # X2 <- X1[-sample(seq_along(X1), 2e3)] 276s > # X2[sample(seq_along(X2), 4e3)] <- "XXXXXX" 276s > # res <- diffChr(X1, X2) 276s > # res <- diffChr(X[1:10000], X[7500:17500]) 276s > # res <- ses(X[1:10000], X[7500:17500]) 276s > # res <- diffChr(X[1:25000], X[10001:50000], max.diffs=65000) 276s > 276s > # - Sentences 276s > chr.5 <- c( 276s + "hello there how are you doing", 276s + "humpty dumpty took a big fall", 276s + "lorem ipsum dolor sic est boom", 276s + "a computer once wrote a phrase" 276s + ) 276s > chr.6 <- c( 276s + "hello THERE how are you doing", 276s + "and another SENTENCE blah blah", 276s + "humpty dumpty TOOK a big fall", 276s + "a COMPUTER once wrote a phrase" 276s + ) 276s > all.equal(as.character(diffChr(chr.5, chr.6)), rdsf(400)) 276s [1] TRUE 276s > all.equal( 276s + as.character(diffChr(chr.5, chr.6, mode="unified")), rdsf(500) 276s + ) 276s [1] TRUE 276s > all.equal( 276s + as.character(diffChr(chr.5, chr.6, mode="context")), rdsf(600) 276s + ) 276s [1] TRUE 276s > # - Whitespace ----------------------------------------------------------------- 276s > 276s > all.equal( 276s + as.character(diffChr(c("a", "b", "c"), c("a ", "b", "c"))), rdsf(800) 276s + ) 276s [1] TRUE 276s > all.equal( 276s + as.character( 276s + diffChr(c("a", "b", "c"), c("a ", "b", "c"), ignore.white.space=FALSE) 276s + ), 276s + rdsf(900) 276s + ) 276s [1] TRUE 276s > # New lines count as new elements 276s > all.equal( 276s + as.character(diffChr("woo\nhoo\nfoo", c("woo", "foo"))), rdsf(1000) 276s + ) 276s [1] TRUE 276s > all.equal( 276s + capture.output(diffChr("hello . world", "hello. world", format='raw')), 276s + txtf(100) 276s + ) 276s [1] TRUE 276s > # - SGR ------------------------------------------------------------------------ 276s > 276s > a <- c("hello \033[31mworld\033[m", "umbrellas", "tomatoes") 276s > b <- c("hello world", "umbrellas", "tomatoes") 276s > 276s > local({ 276s + old.opt <- options(diffobj.sgr.supported=TRUE) 276s + on.exit(options(old.opt)) 276s + diff <- diffChr(a, b) # warn: 'contained ANSI CSI SGR' 276s + try(diffChr(a, b, strip.sgr=1:3)) # "TRUE, FALSE, or NULL" 276s + try(diffChr(a, b, sgr.supported=1:3)) # "TRUE, FALSE, or NULL" 276s + 276s + c( 276s + all.equal(capture.output(show(diff)), txtf(200)), 276s + all.equal(capture.output(show(diffChr(a, b, strip.sgr=FALSE))), txtf(300)), 276s + all.equal(capture.output(show(diffChr(a, b, format='raw'))), txtf(400)) 276s + ) 276s + }) 276s Error in diffChr(target = a, current = b, strip.sgr = 1:3) : 276s Argument `strip.sgr` must be TRUE, FALSE, or NULL 276s In addition: Warning message: 276s In diffChr(target = a, current = b) : 276s `target` or `current` contained ANSI CSI SGR when rendered; these were stripped. Use `strip.sgr=FALSE` to preserve them in the diffs. 276s Error in diffChr(target = a, current = b, sgr.supported = 1:3) : 276s Argument `sgr.supported` must be TRUE, FALSE, or NULL 276s [1] TRUE TRUE TRUE 276s > # - Alignment ------------------------------------------------------------------ 276s > 276s > chr.7 <- c("a b c d e", "F G h i j k", "xxx", "yyy", "k l m n o") 276s > chr.8 <- c("f g h i j k", "hello", "goodbye", "yo", "k l m n o") 276s > 276s > all.equal(as.character(diffChr(chr.7, chr.8)), rdsf(1100)) 276s [1] TRUE 276s > all.equal( 276s + as.character(diffChr(chr.7, chr.8, align=4/6)), rdsf(1100) # same as above 276s + ) 277s [1] TRUE 277s > # No longer aligns 277s > all.equal( 277s + as.character(diffChr(chr.7, chr.8, align=4.01/6)), rdsf(1200) 277s + ) 277s [1] TRUE 277s > all.equal( 277s + as.character(diffChr(chr.7, chr.8, align=AlignThreshold(min.chars=4))), 277s + rdsf(1100) # same as earlier 277s + ) 277s [1] TRUE 277s > all.equal( 277s + as.character(diffChr(chr.7, chr.8, align=AlignThreshold(min.chars=5))), 277s + rdsf(1200) # same as above 277s + ) 277s [1] TRUE 277s > 277s > ## Normally this would not align, but we allow symbols to count towards 277s > ## alignment 277s > chr.7a <- c("a b c e", "d [ f g") 277s > chr.7b <- "D [ f g" 277s > a1 <- AlignThreshold(threshold=0, min.chars=2, count.alnum.only=FALSE) 277s > all.equal( 277s + as.character(diffChr(chr.7a, chr.7b, align=a1, format='raw')), 277s + structure( 277s + c("< chr.7a > chr.7b ", "@@ 1,2 @@ @@ 1 @@ ", 277s + "< a b c e ~ ", "< d [ f g > D [ f g "), len = 4L) 277s + ) 277s [1] TRUE 277s > # corner case where alignment alog exits early because it runs out of B values 277s > # to match A values to. 277s > 277s > b <- c('a b c e', 'x w z f', 'e f g h') 277s > a <- c('z o o o', 'p o o o', 'A b c e') 277s > al <- AlignThreshold(threshold=0, min.chars=0) 277s > all.equal( 277s + capture.output(show(diffChr(b, a, align=al, format='raw'))), txtf(500) 277s + ) 277s [1] TRUE 277s > # - NAs ------------------------------------------------------------------------ 277s > 277s > all.equal( 277s + as.character( 277s + diffChr(c(NA, letters[1:3]), c(letters[1:3], LETTERS[1:2], NA)) 277s + ), 277s + rdsf(1300) 277s + ) 277s [1] TRUE 277s > all.equal( 277s + as.character( 277s + diffChr(c(letters[1:3]), c(letters[1:3], LETTERS[1:2], NA)) 277s + ), 277s + rdsf(1400) 277s + ) 277s [1] TRUE 277s > all.equal( 277s + as.character( 277s + diffChr(c(NA, letters[1:3]), c(letters[1:3], LETTERS[1:2])) 277s + ), 277s + rdsf(1500) 277s + ) 277s [1] TRUE 277s > # - Nested dots issue 134, h/t Noam Ross --------------------------------------- 277s > 277s > fn <- function(target, current, ...) { 277s + diffChr(target, current, ...) 277s + } 277s > all.equal( 277s + as.character(fn("a", "b", format = "raw")), 277s + structure( 277s + c( 277s + "< target > current ", 277s + "@@ 1 @@ @@ 1 @@ ", 277s + "< a > b "), len = 3L 277s + ) 277s + ) 277s [1] TRUE 277s > 277s > # - Newlines in input, issue 135, h/t Flying Sheep ----------------------------- 277s > 277s > a <- 'A Time Series:\n[1] 1 2 3 4' 277s > b <- 'A Time Series:\n[1] 9 4 1 4' 277s > all.equal( 277s + c(as.character(diffobj::diffChr(a, b, format = 'raw'))), 277s + c("< a > b ", 277s + "@@ 1,2 @@ @@ 1,2 @@ ", 277s + " A Time Series: A Time Series:", 277s + "< [1] 1 2 3 4 > [1] 9 4 1 4 ") 277s + ) 277s [1] TRUE 277s > 277s > # - Attributes causing dispatch in guides, issue 142 --------------------------- 277s > 277s > zlold <- c("0x0000, 0x001F", "0x007F, 0x009F", "0x0300, 0x036F") 277s > zlnew <- structure( 277s + c("0x0000, 0x001F", "0x008F, 0x009F", "0x0300, 0x036F"), .Dim = 3L 277s + ) 277s > diffChr(zlold, zlnew) # no warning 277s < zlold > zlnew 277s @@ 1,3 @@  @@ 1,3 @@  277s 0x0000, 0x001F 0x0000, 0x001F 277s < 0x007F, 0x009F > 0x008F, 0x009F 277s 0x0300, 0x036F 0x0300, 0x036F 277s > 277s > # - do.call, issue 158 --------------------------------------------------------- 277s > 277s > do.call(diffChr, list(1:2, 3:4, format='raw')) 277s < 1:2 > 3:4 277s @@ 1,2 @@ @@ 1,2 @@ 277s < 1 > 3 277s < 2 > 4 277s > 277s > 277s PASS 277s Begin testing test-diffDeparse.R 277s 277s R version 4.4.3 (2025-02-28) -- "Trophy Case" 277s Copyright (C) 2025 The R Foundation for Statistical Computing 277s Platform: aarch64-unknown-linux-gnu 277s 277s R is free software and comes with ABSOLUTELY NO WARRANTY. 277s You are welcome to redistribute it under certain conditions. 277s Type 'license()' or 'licence()' for distribution details. 277s 277s R is a collaborative project with many contributors. 277s Type 'contributors()' for more information and 277s 'citation()' on how to cite R or R packages in publications. 277s 277s Type 'demo()' for some demos, 'help()' for on-line help, or 277s 'help.start()' for an HTML browser interface to help. 277s Type 'q()' to quit R. 277s 277s > NAME <- "diffDeparse" 277s > source(file.path('_helper', 'init.R')) 277s > 277s > # - deparse -------------------------------------------------------------------- 277s > 277s > # First one will be done in unified mode since `deparse` disregards 277s > # option(width=), second will be done side by side 277s > 277s > all.equal(as.character(diffDeparse(letters, LETTERS)), rdsf(100)) 277s [1] TRUE 277s > all.equal( 277s + as.character( 277s + diffDeparse(letters, LETTERS, extra=list(width.cutoff=20)) 277s + ), 277s + rdsf(200) 277s + ) 277s [1] TRUE 277s > 277s PASS 277s Begin testing test-diffObj.R 277s 277s R version 4.4.3 (2025-02-28) -- "Trophy Case" 277s Copyright (C) 2025 The R Foundation for Statistical Computing 277s Platform: aarch64-unknown-linux-gnu 277s 277s R is free software and comes with ABSOLUTELY NO WARRANTY. 277s You are welcome to redistribute it under certain conditions. 277s Type 'license()' or 'licence()' for distribution details. 277s 277s R is a collaborative project with many contributors. 277s Type 'contributors()' for more information and 277s 'citation()' on how to cite R or R packages in publications. 277s 277s Type 'demo()' for some demos, 'help()' for on-line help, or 277s 'help.start()' for an HTML browser interface to help. 277s Type 'q()' to quit R. 277s 278s > NAME <- "diffObj" 278s > source(file.path('_helper', 'init.R')) 278s > 278s > # - simple diffobj ------------------------------------------------------------- 278s > 278s > # no diff for print 278s > all.equal(as.character(diffObj(iris.s, iris.c)), rdsf(100)) 278s [1] TRUE 278s > # no diff for str 278s > all.equal( 278s + as.character(diffObj(1:100, c(1:99, 200L))), rdsf(200) 278s + ) 278s [1] TRUE 278s > # diffs for both and must pick one, first one is str, second is print 278s > all.equal( 278s + as.character(diffObj(mdl1[7], mdl2[7])), rdsf(300) 278s + ) 278s [1] TRUE 278s > all.equal(as.character(diffObj(mdl1, mdl2)), rdsf(400)) 278s [1] TRUE 278s > 278s > # - fits or doesn't ------------------------------------------------------------ 278s > 278s > # Note, the first test used to favor str until we handicapped print 278s > all.equal( 278s + diffObj(matrix(1:20, ncol=2), matrix(2:21, ncol=2), line.limit=5)@capt.mode, 278s + "str" 278s + ) 278s [1] TRUE 278s > # test kinda slow, would be better to have one with smaller objects with print 278s > # methods 278s > 278s > all.equal( 278s + diffObj(mdl1, mdl2, line.limit=15, mode='unified')@capt.mode, "print" 278s + ) 279s [1] TRUE 279s > all.equal(diffObj(1:1000, 1000:1, line.limit=5)@capt.mode, "str") 279s [1] TRUE 279s > 279s > # - misc ----------------------------------------------------------------------- 279s > 279s > try(diffObj(1, 2, extra=list(TRUE))) # "extra" 279s Error in .local(target, current, ...) : 279s Argument `extra` must be empty in `diffObj`. 279s > 279s > # - print error ---------------------------------------------------------------- 279s > 279s > x <- structure("hello", class="diffobj_ogewlhgiadfl") 279s > y <- structure("goodbye", class="diffobj_ogewlhgiadfl") 279s > try(diffObj(x, y)) # "Error in calling .diffPrint." 279s Error in print.diffobj_ogewlhgiadfl(structure("goodbye", class = "diffobj_ogewlhgiadfl")) : 279s failure 279s Error in diffObj(target = x, current = y) : 279s Error in calling `diffPrint`: Failed attempting to get text representation of object: failure 279s > 279s > # Random exmaples to think through `diffObj` output 279s > 279s > diffObj( 279s + pairlist("`logical(2L)` should be length 2 (is 3)"), 279s + pairlist("be length 2 (is 3)") 279s + ) 279s < pairlist("`logical(2L)` should be l.. > pairlist("be length 2 (is 3)") 279s @@ 1,3 @@  @@ 1,3 @@  279s [[1]] [[1]] 279s < [1] "`logical(2L)` should be length 2 > [1] "be length 2 (is 3)" 279s :  (is 3)" ~ 279s 279s > 279s > diffObj( 279s + pairlist("`matrix(integer(), nrow = 3)` should be matrix (is list)", "`list(character(1L), 1L)[[2]]` should be type \"integer-like\" (is \"character\")"), 279s + pairlist("be class \"matrix\" (is \"list\")", "be type \"integer-like\" (is \"character\") at index [[2]]") 279s + ) 279s < pairlist("`matrix(integer(), nrow =.. > pairlist("be class \"matrix\" (is \.. 279s @@ 1,6 @@  @@ 1,6 @@  279s [[1]] [[1]] 279s < [1] "`matrix(integer(), nrow = 3)` sh > [1] "be class \"matrix\" (is \"list\" 279s : ould be matrix (is list)" : )" 279s 279s [[2]] [[2]] 279s < [1] "`list(character(1L), 1L)[[2]]` s > [1] "be type \"integer-like\" (is \"c 279s : hould be type \"integer-like\" (is \" : haracter\") at index [[2]]" 279s : character\")" ~ 279s 279s > 279s PASS 279s Begin testing test-diffStr.R 279s 279s R version 4.4.3 (2025-02-28) -- "Trophy Case" 279s Copyright (C) 2025 The R Foundation for Statistical Computing 279s Platform: aarch64-unknown-linux-gnu 279s 279s R is free software and comes with ABSOLUTELY NO WARRANTY. 279s You are welcome to redistribute it under certain conditions. 279s Type 'license()' or 'licence()' for distribution details. 279s 279s R is a collaborative project with many contributors. 279s Type 'contributors()' for more information and 279s 'citation()' on how to cite R or R packages in publications. 279s 279s Type 'demo()' for some demos, 'help()' for on-line help, or 279s 'help.start()' for an HTML browser interface to help. 279s Type 'q()' to quit R. 279s 279s > NAME <- "diffStr" 279s > source(file.path('_helper', 'init.R')) 279s > 279s > # - lm models ------------------------------------------------------------------ 279s > 279s > # formula display changed 279s > if( 279s + R.Version()$major >= 3 && R.Version()$minor >= "3.1" || R.Version()$major > 3 279s + ) 279s + all.equal(as.character(diffStr(mdl1, mdl2)), rdsf(100)) 280s [1] TRUE 280s > 280s > # Too strict a line limit, can't get under 280s > all.equal( 280s + as.character(diffStr(mdl1[7], mdl2[7], line.limit=10)), rdsf(200) 280s + ) 280s [1] TRUE 280s > # Now we can get under 280s > all.equal( 280s + as.character(diffStr(mdl1[7], mdl2[7], line.limit=15)), rdsf(300) 280s + ) 280s [1] TRUE 280s > 280s > # - Simple structure ----------------------------------------------------------- 280s > # 280s > # Character types 280s > 280s > all.equal(as.character(diffStr(iris.c, iris.s)), rdsf(400)) 280s [1] TRUE 280s > 280s > # - Strict width --------------------------------------------------------------- 280s > # formula display changed 280s > if( 280s + R.Version()$major >= 3 && R.Version()$minor >= "3.1" || R.Version()$major > 3 280s + ) { 280s + c( 280s + all.equal( 280s + as.character( 280s + diffStr(mdl1, mdl2, extra=list(strict.width="wrap"), line.limit=30) 280s + ), 280s + rdsf(500) 280s + ), 280s + all.equal( 280s + as.character( 280s + diffStr(mdl1, mdl2, extra=list(strict.width="cut"), line.limit=30) 280s + ), 280s + rdsf(550) 280s + ) ) 280s + } 281s [1] TRUE TRUE 281s > # - max.diffs ------------------------------------------------------------------ 281s > 281s > invisible(diffStr(iris, mtcars, max.diffs=2)) # warn: "Exceeded diff limit" 281s Warning message: 281s Exceeded diff limit during diff computation (18 vs. 2 allowed); overall diff is likely not optimal 281s > 281s > # - max.level ------------------------------------------------------------------ 281s > 281s > all.equal( 281s + as.character(diffStr(mdl1[7], mdl2[7], extra=list(max.level="auto"))), 281s + rdsf(600) 281s + ) 281s [1] TRUE 281s > all.equal( 281s + as.character(diffStr(mdl1[7], mdl2[7], extra=list(max.level=2))), 281s + rdsf(700) 281s + ) 281s [1] TRUE 281s > # Has a difference, but can't get under; the second is just for reference 281s > 281s > lst.1 <- lst.2 <- lst.3 <- list(a=list(b=list(c=list(d=list(e=list(25)))))) 281s > names(lst.2) <- "A" 281s > 281s > all.equal( 281s + as.character(diffStr(lst.1, lst.2, line.limit=2)), rdsf(800) 281s + ) 281s [1] TRUE 281s > all.equal( 281s + as.character(diffStr(lst.1, lst.2, line.limit=2)), rdsf(900) 281s + ) 281s [1] TRUE 281s > # Test that initial run shows difference, but too big, but next one down 281s > # doesn't so have to increase level 281s > 281s > names(lst.3$a$b$c$d) <- "E" 281s > all.equal( 281s + as.character(diffStr(lst.1, lst.3, line.limit=6)), rdsf(1000) 281s + ) 281s [1] TRUE 281s > 281s > # - No visible differences ----------------------------------------------------- 281s > 281s > all.equal( 281s + as.character(diffStr(1:100, c(1:99, 101L))), rdsf(1100) 281s + ) 281s [1] TRUE 281s > 281s > # - Quoted Objects ------------------------------------------------------------- 281s > 281s > all.equal( 281s + as.character(diffStr(quote(zz + 1), quote(zz + 3))), 281s + structure( 281s + c("\033[33m<\033[39m \033[33mstr(quote(zz +..\033[39m \033[34m>\033[39m \033[34mstr(quote(zz +..\033[39m", "\033[36m@@ 1 @@ \033[39m \033[36m@@ 1 @@ \033[39m", "\033[33m<\033[39m \033[90m\033[39m language zz + \033[33m1\033[39m\033[90m\033[39m \033[34m>\033[39m \033[90m\033[39m language zz + \033[34m3\033[39m\033[90m\033[39m" 281s + ), len = 3L 281s + ) ) 281s [1] TRUE 281s > 281s > all.equal( 281s + as.character(diffStr(quote(x), quote(y))), 281s + structure(c("\033[33m<\033[39m \033[33mstr(quo..\033[39m \033[34m>\033[39m \033[34mstr(quo..\033[39m", "\033[36m@@ 1 @@ \033[39m \033[36m@@ 1 @@ \033[39m", "\033[33m<\033[39m \033[90m\033[39m symbol \033[33mx\033[39m\033[90m\033[39m \033[34m>\033[39m \033[90m\033[39m symbol \033[34my\033[39m\033[90m\033[39m"), len = 3L) 281s + ) 281s [1] TRUE 281s > 281s > # - Spaces with punctuation ---------------------------------------------------- 281s > 281s > all.equal( 281s + capture.output(show(diffStr(list(a=1), list(a=1, cabera=3), format='raw'))), 281s + txtf(100) 281s + ) 281s [1] TRUE 281s > 281s > 281s PASS 281s Begin testing test-file.R 281s 281s R version 4.4.3 (2025-02-28) -- "Trophy Case" 281s Copyright (C) 2025 The R Foundation for Statistical Computing 281s Platform: aarch64-unknown-linux-gnu 281s 281s R is free software and comes with ABSOLUTELY NO WARRANTY. 281s You are welcome to redistribute it under certain conditions. 281s Type 'license()' or 'licence()' for distribution details. 281s 281s R is a collaborative project with many contributors. 281s Type 'contributors()' for more information and 281s 'citation()' on how to cite R or R packages in publications. 281s 281s Type 'demo()' for some demos, 'help()' for on-line help, or 281s 'help.start()' for an HTML browser interface to help. 281s Type 'q()' to quit R. 281s 281s > NAME <- "diffFile" 281s > source(file.path('_helper', 'init.R')) 281s > 281s > # - Code File ------------------------------------------------------------------ 281s > 281s > # # compare two crayon file versions 281s > # # These should eventually just be downloaded and made into diffFile tests 281s > 281s > f.p.1 <- file.path("_helper", "objs", "diffFile", "s.o.3f1f68.R") 281s > f.p.2 <- file.path("_helper", "objs", "diffFile", "s.o.30dbe0.R") 281s > 281s > # url.1 <- "https://raw.githubusercontent.com/gaborcsardi/crayon/3f1f68ab177b82a27e754a58264af801f7194820/R/string_operations.r" 281s > # url.2 <- "https://raw.githubusercontent.com/gaborcsardi/crayon/30dbe0d4d92157350af3cb3aeebd6d9a9cdf5c0e/R/string_operations.r" 281s > # f.1 <- readLines(url.1) 281s > # f.2 <- readLines(url.2) 281s > # writeLines(f.1, f.p.1) 281s > # writeLines(f.2, f.p.2) 281s > 281s > all.equal(as.character(diffFile(f.p.1, f.p.2)), rdsf(100)) 282s [1] TRUE 282s > 282s > # - RDS ------------------------------------------------------------------------ 282s > 282s > f1 <- tempfile() 282s > f2 <- tempfile() 282s > 282s > mx1 <- mx2 <- matrix(1:9, 3) 282s > mx2[5] <- 99 282s > saveRDS(mx1, f1) 282s > saveRDS(mx2, f2) 282s > 282s > is(diffobj:::get_rds(f1), "matrix") 282s [1] TRUE 282s > is(diffobj:::get_rds(f2), "matrix") 282s [1] TRUE 282s > 282s > ref <- as.character(diffPrint(mx1, mx2)) 282s > identical(as.character(diffPrint(mx1, f2, cur.banner="mx2")), ref) 282s [1] TRUE 282s > identical(as.character(diffPrint(f1, mx2, tar.banner="mx1")), ref) 282s [1] TRUE 282s > identical( 282s + as.character(diffPrint(f1, f2, tar.banner="mx1", cur.banner="mx2")), ref 282s + ) 282s [1] TRUE 282s > isTRUE(!identical(as.character(diffPrint(mx1, f2, rds=FALSE)), ref)) 282s [1] TRUE 282s > unlink(c(f1, f2)) 282s > 282s > # - file ----------------------------------------------------------------------- 282s > 282s > f1 <- tempfile() 282s > f2 <- tempfile() 282s > letters2 <- letters 282s > letters2[15] <- "HELLO" 282s > 282s > writeLines(letters, f1) 282s > writeLines(letters2, f2) 282s > 282s > identical( 282s + as.character(diffChr(letters, letters2, tar.banner="f1", cur.banner="f2")), 282s + as.character(diffFile(f1, f2)) 282s + ) 282s [1] TRUE 282s > unlink(c(f1, f2)) 282s > 282s > # issue 133 h/t Noam Ross, thanks for the test 282s > 282s > x <- tempfile() 282s > y <- tempfile() 282s > cat("Hello\nthere\n", file = x) 282s > file.copy(x, y) 282s [1] TRUE 282s > identical( 282s + as.character(diffFile(x, y, format = "raw")), 282s + structure( 282s + c("No visible differences between objects.", 282s + "< x > y ", 282s + "@@ 1,2 @@ @@ 1,2 @@ ", 282s + " Hello Hello ", 282s + " there there "), len = 5L) 282s + ) 282s [1] TRUE 282s > unlink(c(x, y)) 282s > 282s > # - CSV ------------------------------------------------------------------------ 282s > 282s > f1 <- tempfile() 282s > f2 <- tempfile() 282s > 282s > iris2 <- iris 282s > iris2$Sepal.Length[25] <- 9.9 282s > 282s > write.csv(iris, f1, row.names=FALSE) 282s > write.csv(iris2, f2, row.names=FALSE) 282s > 282s > identical( 282s + as.character(diffPrint(iris, iris2, tar.banner="f1", cur.banner="f2")), 282s + as.character(diffCsv(f1, f2)) 282s + ) 282s [1] TRUE 282s > unlink(c(f1, f2)) 282s > 282s > 282s PASS 282s Begin testing test-guide.R 282s 282s R version 4.4.3 (2025-02-28) -- "Trophy Case" 282s Copyright (C) 2025 The R Foundation for Statistical Computing 282s Platform: aarch64-unknown-linux-gnu 282s 282s R is free software and comes with ABSOLUTELY NO WARRANTY. 282s You are welcome to redistribute it under certain conditions. 282s Type 'license()' or 'licence()' for distribution details. 282s 282s R is a collaborative project with many contributors. 282s Type 'contributors()' for more information and 282s 'citation()' on how to cite R or R packages in publications. 282s 282s Type 'demo()' for some demos, 'help()' for on-line help, or 282s 'help.start()' for an HTML browser interface to help. 282s Type 'q()' to quit R. 282s 282s > NAME <- "guides" 282s > source(file.path('_helper', 'init.R')) 282s > 282s > # - detect_2d_guides ----------------------------------------------------------- 282s > 282s > iris.dply <- c("Source: local data frame [150 x 5]", "Groups: Species [3]", "", " Sepal.Length Sepal.Width", " (dbl) (dbl)", "1 5.1 3.5", "2 4.9 3.0", "3 4.7 3.2", "4 4.6 3.1", "5 5.0 3.6", "6 5.4 3.9", "7 4.6 3.4", "8 5.0 3.4", "9 4.4 2.9", "10 4.9 3.1", ".. ... ...", "Variables not shown: Petal.Length", " (dbl), Petal.Width (dbl), Species", " (fctr)") 282s > 282s > all.equal(diffobj:::detect_2d_guides(iris.dply), 4:5) 282s [1] TRUE 282s > # wrapping data table with separator (#96) 282s > 282s > DT.txt <- c( 282s + " V1 V2 V3", 282s + " 1: 0.3201122 0.6907066 0.5004968", 282s + " --- ", 282s + "1000: 0.3547379 0.2836985 0.8121208", 282s + " V4 V5", 282s + " 1: 0.331665 0.6788726", 282s + " --- ", 282s + "1000: 0.553012 0.7789110" 282s + ) 282s > all.equal( 282s + diffobj:::detect_2d_guides(DT.txt), 282s + c(1L, 5L) 282s + ) 282s [1] TRUE 282s > # Narrow width 282s > 282s > old.opt <- options(width=40) 282s > all.equal(diffobj:::detect_2d_guides(capture.output(iris)), c(1, 152)) 282s [1] TRUE 282s > all.equal( 282s + diffobj:::detect_2d_guides(capture.output(USAccDeaths)), c(1, 8, 15) 282s + ) 282s [1] TRUE 282s > # Time series 282s > all.equal(diffobj:::detect_2d_guides(capture.output(UKgas)), 1) 282s [1] TRUE 282s > # no row.names (#111) 282s > 282s > df1 <- capture.output(print(data.frame(a=1:3), row.names=FALSE)) 282s > no.rn.guide <- diffobj:::detect_2d_guides(df1) # no warning 282s > all.equal(no.rn.guide, 1L) 282s [1] TRUE 282s > 282s > df2 <- capture.output(print(data.frame(x="A"), row.names=FALSE)) 282s > no.rn.guide.2 <- diffobj:::detect_2d_guides(df2) # no warning 282s > all.equal(no.rn.guide.2, 1L) 282s [1] TRUE 282s > options(old.opt) 282s > 282s > # - detect_list_guides --------------------------------------------------------- 282s > 282s > l.1 <- list(1, 1:3, matrix(1:3, 1)) 282s > l.2 <- list(a=1, list(1:3, b=4, c=list(1, b=2)), matrix(1:3, 1)) 282s > c.l.1 <- capture.output(l.1) 282s > c.l.2 <- capture.output(l.2) 282s > # cbind(c.l.2, seq_along(c.l.2) %in% diffobj:::detect_list_guides(c.l.2)) 282s > all.equal(diffobj:::detect_list_guides(capture.output(l.1)), c(1, 4, 7)) 282s [1] TRUE 282s > all.equal( 282s + diffobj:::detect_list_guides(capture.output(l.2)), 282s + c(1, 5, 8, 12, 15, 20) 282s + ) 282s [1] TRUE 282s > 282s > # - detect_matrix_guides ------------------------------------------------------- 282s > mx3 <- mx4 <- mx5 <- mx5a <- mx11 <- matrix( 282s + c( 282s + "averylongwordthatcanlahblah", "causeasinglewidecolumnblah", 282s + "matrixtowrapseveraltimes", "inarrowscreen", "onceuponatime", 282s + "agreenduckflew", "overthemountains", "inalongofantelopes", 282s + "ineedthreemore", "entriesactually", "nowonlytwomore", "iwaswrongearlier" 282s + ), 282s + nrow=3, ncol=4 282s + ) 282s > mx3.c <- capture.output(mx3) 282s > all.equal(diffobj:::detect_matrix_guides(mx3.c, NULL), c(1, 5)) 282s [1] TRUE 282s > 282s > dimnames(mx4) <- list(A=NULL, B=NULL) 282s > mx4.c <- capture.output(mx4) 282s > all.equal( 282s + diffobj:::detect_matrix_guides(mx4.c, dimnames(mx4)), c(1, 2, 6, 7) 282s + ) 282s [1] TRUE 282s > attr(mx5, "blah") <- letters[1:10] 282s > mx5.c <- capture.output(mx5) 282s > all.equal( 282s + diffobj:::detect_matrix_guides(mx5.c, dimnames(mx5)), c(1, 5) 282s + ) 282s [1] TRUE 282s > # Simple matrices that don't wrap 282s > 282s > mx6 <- mx7 <- mx7.1 <- matrix(1:4, 2) 282s > 282s > mx6.c <- capture.output(mx6) 282s > all.equal(diffobj:::detect_matrix_guides(mx6.c, dimnames(mx6)), 1) 282s [1] TRUE 282s > 282s > dimnames(mx7) <- list(A=letters[1:2], B=LETTERS[25:26]) 282s > mx7.c <- capture.output(mx7) 282s > all.equal(diffobj:::detect_matrix_guides(mx7.c, dimnames(mx7)), c(1, 2)) 282s [1] TRUE 282s > 282s > dimnames(mx7.1) <- list(letters[1:2], B=LETTERS[25:26]) 282s > mx7.1.c <- capture.output(mx7.1) 282s > all.equal(diffobj:::detect_matrix_guides(mx7.1.c, dimnames(mx7.1)), c(1, 2)) 282s [1] TRUE 282s > 282s > # Single col matrix 282s > 282s > mx8 <- matrix(1:2, 2) 282s > 282s > mx8.c <- capture.output(mx8) 282s > all.equal(diffobj:::detect_matrix_guides(mx8.c, dimnames(mx8)), 1) 282s [1] TRUE 282s > 282s > # Wrapping matrices with colnames 282s > 282s > mx9 <- mx3 282s > dimnames(mx9) <- list(A=letters[1:3], B=LETTERS[20:23]) 282s > mx9.c <- capture.output(mx9) 282s > all.equal( 282s + diffobj:::detect_matrix_guides(mx9.c, dimnames(mx9)), c(1:2, 6:7) 282s + ) 282s [1] TRUE 282s > 282s > mx10 <- mx9 282s > attr(mx10, "blah") <- matrix(1:4, 2) 282s > mx10.c <- capture.output(mx10) 282s > all.equal( 282s + diffobj:::detect_matrix_guides(mx10.c, dimnames(mx10)), c(1:2, 6:7) 282s + ) 282s [1] TRUE 282s > local({ 282s + old.opt <- options(width=30L) 282s + on.exit(options(old.opt)) 282s + attr(mx11, "blah") <- letters[1:15] 282s + mx11.c <- capture.output(mx11) 282s + 282s + all.equal( 282s + diffobj:::detect_matrix_guides(mx11.c, dimnames(mx11)), c(1, 5, 9, 13) 282s + ) 282s + }) 282s [1] TRUE 282s > # - detect_array_guides -------------------------------------------------------- 282s > 282s > a.1 <- array(1:6, dim=c(2, 1, 3)) 282s > a.2 <- array(1:6, dim=c(2, 1, 3), dimnames=list(NULL, "X", LETTERS[1:3])) 282s > a.3 <- array( 282s + 1:6, dim=c(2, 1, 3), 282s + dimnames=list(rows=NULL, cols="X", LETTERS[1:3]) 282s + ) 282s > a.4 <- `attr<-`(a.3, "hello", "random attribute") 282s > a.5 <- array(1:36, dim=c(6, 2, 3)) 282s > a.6 <- array(1:2, c(2, 1, 1)) 282s > c.a.1 <- capture.output(a.1) 282s > c.a.2 <- capture.output(a.2) 282s > c.a.3 <- capture.output(a.3) 282s > c.a.4 <- capture.output(a.4) 282s > c.a.5 <- capture.output(a.5) 282s > c.a.6 <- capture.output(a.6) 282s > # helper funs to vizualize the guide line detection 282s > # viz_dag <- function(capt, obj) 282s > # cbind( 282s > # capt, 282s > # seq_along(capt) %in% diffobj:::detect_array_guides(capt, dimnames(obj)) 282s > # ) 282s > # viz_dag(c.a.1, a.1) 282s > # viz_dag(c.a.2, a.2) 282s > # viz_dag(c.a.3, a.3) 282s > # viz_dag(c.a.4, a.4) 282s > # viz_dag(c.a.5, a.5) 282s > # viz_dag(c.a.6, a.6) 282s > all.equal( 282s + diffobj:::detect_array_guides(c.a.1, dimnames(a.1)), 282s + c(1L, 2L, 7L, 8L, 13L, 14L) 282s + ) 282s [1] TRUE 282s > all.equal( 282s + diffobj:::detect_array_guides(c.a.2, dimnames(a.2)), 282s + c(1L, 2L, 7L, 8L, 13L, 14L) 282s + ) 282s [1] TRUE 282s > all.equal( 282s + diffobj:::detect_array_guides(c.a.3, dimnames(a.3)), 282s + c(1L, 2L, 8L, 9L, 15L, 16L) 282s + ) 282s [1] TRUE 282s > all.equal( 282s + diffobj:::detect_array_guides(c.a.4, dimnames(a.4)), 282s + c(1L, 2L, 8L, 9L, 15L, 16L) 282s + ) 282s [1] TRUE 282s > all.equal( 282s + diffobj:::detect_array_guides(c.a.5, dimnames(a.5)), 282s + c(1L, 2L, 11L, 12L, 21L, 22L) 282s + ) 282s [1] TRUE 282s > all.equal( 282s + diffobj:::detect_array_guides(c.a.6, dimnames(a.6)), 282s + c(1L, 2L) 282s + ) 282s [1] TRUE 282s > # - detect_s4_guides ----------------------------------------------------------- 282s > 282s > setClass("gtest2", slots=c(hello="integer", `good bye`="list")) 282s > setClass("gtest1", 282s + slots=c( 282s + sub.class="gtest2", blah="character", gah="list", sub.class.2="gtest2" 282s + ) ) 282s > obj <- new( 282s + "gtest1", 282s + sub.class=new( 282s + "gtest2", hello=1:3, `good bye`=list("a", list(l1=5, l2="wow")) 282s + ), 282s + blah=letters, gah=list(one=1:10, two=LETTERS), 282s + sub.class.2=new( 282s + "gtest2", hello=3:1, `good bye`=list("B", list(l1=5, l2="wow")) 282s + ) 282s + ) 282s > # note at this point the nested stuff doesn't work, so we're just shooting for 282s > # the simple match 282s > 282s > c.1 <- capture.output(obj) 282s > identical( 282s + diffobj:::detect_s4_guides(c.1, obj), 282s + c(1L, 2L, 21L, 25L, 34L) 282s + ) 282s [1] TRUE 282s > # small diff as that has a non-default show method 282s > 282s > diff <- diffChr("a", "b", format='raw') 283s > diff.out <- capture.output(show(diff)) 283s > all.equal( 283s + diffobj:::detect_s4_guides(diff.out, diff), 283s + integer() 283s + ) 283s [1] TRUE 283s > # - custom guide fun ----------------------------------------------------------- 283s > 283s > a <- b <- matrix(1:100) 283s > b[50] <- -99L 283s > 283s > fun1 <- function(x, y) c(1L, 14L, 53L) 283s > 283s > all.equal(as.character(diffPrint(a, b, guides=fun1)), rdsf(100)) 283s [1] TRUE 283s > if(getRversion() >= "3.2.2") { 283s + capture.output( # warn: "If you did not specify a `guides`" 283s + trim.err <- 283s + as.character(diffPrint(a, b, guides=function(x, y) stop("boom"))), 283s + type="message" 283s + ) 283s + all.equal(trim.err, rdsf(200)) 283s + } 283s [1] TRUE 283s Warning message: 283s In apply_guides(current, cur.capt, guide_fun) : 283s `guides*` method produced an error when attempting to compute guide lines ; If you did not specify a `guides` function or define custom `guides*` methods contact maintainer (see `?guides`). Proceeding without guides. 283s > # "must produce an integer vector" 283s > try(diffobj:::apply_guides(1:26, LETTERS, function(x, y) 35L)) 283s Error in diffobj:::apply_guides(1:26, LETTERS, function(x, y) 35L) : 283s `guides*` method must produce an integer vector containing unique index values for the `obj.as.chr` vector; If you did not specify a `guides` function or define custom `guides*` methods contact maintainer (see `?guides`). Proceeding without guides. 283s > 283s > # - errors --------------------------------------------------------------------- 283s > 283s > try(guidesStr(1:26, rep(NA_character_, 26)))# "Cannot compute guides" 283s Error in guidesStr(1:26, rep(NA_character_, 26)) : 283s Cannot compute guides if `obj.as.chr` contains NAs 283s > try(guidesPrint(1:26, rep(NA_character_, 26)))# "Cannot compute guides" 283s Error in guidesPrint(1:26, rep(NA_character_, 26)) : 283s Cannot compute guides if `obj.as.chr` contains NAs 283s > 283s > # - corner cases --------------------------------------------------------------- 283s > 283s > all.equal( 283s + diffobj:::split_by_guides(letters, integer()), 283s + list(structure(letters, idx=seq_along(letters))) 283s + ) 283s [1] TRUE 283s > try(guidesStr(1:26, rep(NA_character_, 26))) # "Cannot compute guides" 283s Error in guidesStr(1:26, rep(NA_character_, 26)) : 283s Cannot compute guides if `obj.as.chr` contains NAs 283s > try(guidesPrint(1:26, rep(NA_character_, 26))) # "Cannot compute guides" 283s Error in guidesPrint(1:26, rep(NA_character_, 26)) : 283s Cannot compute guides if `obj.as.chr` contains NAs 283s > 283s > # - issue 117 - 2d guide failure ----------------------------------------------- 283s > 283s > # Thanks to Sebastian Meyer (@bastician) for MRE 283s > a <- b <- data.frame(ID = 0, value = 1) 283s > b$value <- 2 283s > a <- a[c(rep(1, 86), 2)] 283s > b <- b[c(rep(1, 86), 2)] 283s > diffPrint(a, b, mode = "unified", format='raw', context=0) 283s < a 283s > b 283s @@ 16 / 16 @@ 283s ~ value 283s < 1 1 283s > 1 2 283s > 283s PASS 283s Begin testing test-html.R 283s 283s R version 4.4.3 (2025-02-28) -- "Trophy Case" 283s Copyright (C) 2025 The R Foundation for Statistical Computing 283s Platform: aarch64-unknown-linux-gnu 283s 283s R is free software and comes with ABSOLUTELY NO WARRANTY. 283s You are welcome to redistribute it under certain conditions. 283s Type 'license()' or 'licence()' for distribution details. 283s 283s R is a collaborative project with many contributors. 283s Type 'contributors()' for more information and 283s 'citation()' on how to cite R or R packages in publications. 283s 283s Type 'demo()' for some demos, 'help()' for on-line help, or 283s 'help.start()' for an HTML browser interface to help. 283s Type 'q()' to quit R. 283s 283s > NAME <- "html" 283s > source(file.path('_helper', 'init.R')) 283s > 283s > # Verify that internal css works 283s > 283s > # - HTML Output Modes ---------------------------------------------------------- 283s > 283s > all.equal( 283s + as.character( 283s + diffPrint( 283s + letters[1:3], LETTERS[1:3], 283s + style=StyleHtmlLightYb(html.output="diff.only") 283s + ) ), 283s + rdsf(100) 283s + ) 283s [1] TRUE 283s > all.equal( 283s + as.character( 283s + diffPrint( 283s + letters[1:6], LETTERS[1:6], 283s + style=StyleHtmlLightYb(html.output="diff.w.style") 283s + ) ), 283s + rdsf(200) 283s + ) 283s [1] TRUE 283s > all.equal( 283s + as.character( 283s + diffPrint( 283s + letters[1:6], LETTERS[1:6], 283s + style=StyleHtmlLightYb(html.output="page") 283s + ) ), 283s + rdsf(300) 283s + ) 283s [1] TRUE 283s > all.equal( 283s + as.character( 283s + diffPrint( 283s + letters[1:6], LETTERS[1:6], mode="unified", 283s + style=StyleHtmlLightYb(html.output="page") 283s + ) ), 283s + rdsf(350) 283s + ) 283s [1] TRUE 283s > # - Sub CSS -------------------------------------------------------------------- 283s > 283s > # Mess up the CSS to test that we can change CSS file 283s > 283s > local({ 283s + f <- tempfile() 283s + on.exit(unlink(f)) 283s + cat("div.row {background-color: red;}\n", file=f) 283s + all.equal( 283s + as.character( 283s + diffPrint( 283s + letters, LETTERS, 283s + style=StyleHtmlLightYb(css=f, html.output="diff.w.style") 283s + ) 283s + ), 283s + rdsf(400) 283s + ) 283s + }) 283s [1] TRUE 283s > # - Tag funs ------------------------------------------------------------------- 283s > 283s > div_a <- div_f("A", c(color="red")) 283s > all.equal( 283s + div_a(c("a", "b")), 283s + c( 283s + "
a
", 283s + "
b
" 283s + ) 283s + ) 283s [1] TRUE 283s > span_a <- span_f() 283s > all.equal(span_a(c("a", "b")), c("a", "b")) 283s [1] TRUE 283s > 283s > try(div_a(TRUE)) # "must be character" 283s Error in div_a(TRUE) : Argument `x` must be character. 283s > all.equal(div_a(character()),character()) 283s [1] TRUE 283s > 283s > # - nchar ---------------------------------------------------------------------- 283s > 283s > all.equal(nchar_html("25"), 2) 283s [1] TRUE 283s > all.equal(nchar_html("25 "), 3) 283s [1] TRUE 283s > 283s > # - cont_f --------------------------------------------------------------------- 283s > 283s > try(cont_f("hello")(1:3)) # "must be character" 283s Error in cont_f("hello")(1:3) : Argument `x` must be character. 283s > 283s PASS 283s Begin testing test-limit.R 283s 283s R version 4.4.3 (2025-02-28) -- "Trophy Case" 283s Copyright (C) 2025 The R Foundation for Statistical Computing 283s Platform: aarch64-unknown-linux-gnu 283s 283s R is free software and comes with ABSOLUTELY NO WARRANTY. 283s You are welcome to redistribute it under certain conditions. 283s Type 'license()' or 'licence()' for distribution details. 283s 283s R is a collaborative project with many contributors. 283s Type 'contributors()' for more information and 283s 'citation()' on how to cite R or R packages in publications. 283s 283s Type 'demo()' for some demos, 'help()' for on-line help, or 283s 'help.start()' for an HTML browser interface to help. 283s Type 'q()' to quit R. 283s 284s > NAME <- "limit" 284s > source(file.path('_helper', 'init.R')) 284s > 284s > # - Simple limit --------------------------------------------------------------- 284s > 284s > A <- B <- letters[1:5] 284s > B[2] <- "B" 284s > B[6] <- "F" 284s > # diffChr(A, B) 284s > all.equal(as.character(diffChr(A, B, line.limit=2)), rdsf(100)) 284s [1] TRUE 284s > all.equal(as.character(diffChr(A, B, line.limit=3)), rdsf(200)) 284s [1] TRUE 284s > 284s > # - More Extensive Limits ------------------------------------------------------ 284s > 284s > Puromycin2 <- Puromycin 284s > set.seed(1) 284s > Puromycin2$conc[c(8, 15:19, 22)] <- round(runif(7), 2) 284s > Puromycin2$state[17] <- "treated" 284s > 284s > all.equal( 284s + as.character( 284s + diffPrint(Puromycin, Puromycin2, line.limit=15, mode="sidebyside") 284s + ), 284s + rdsf(300) 284s + ) 284s [1] TRUE 284s > 284s > # # Not working right 284s > # diffPrint(Puromycin, Puromycin2, line.limit=15, mode="context") 284s > all.equal( 284s + as.character( 284s + diffPrint(Puromycin, Puromycin2, line.limit=15, mode="unified") 284s + ), 284s + rdsf(500) 284s + ) 284s [1] TRUE 284s > 284s > all.equal( 284s + as.character( 284s + diffPrint(Puromycin, Puromycin2, line.limit=5, mode="sidebyside") 284s + ), 284s + rdsf(600) 284s + ) 284s [1] TRUE 284s > all.equal( 284s + as.character( 284s + diffPrint(Puromycin, Puromycin2, line.limit=5, mode="context") 284s + ), 284s + rdsf(700) 284s + ) 284s [1] TRUE 284s > all.equal( 284s + as.character( 284s + diffPrint(Puromycin, Puromycin2, line.limit=5, mode="unified") 284s + ), 284s + rdsf(800) 284s + ) 284s [1] TRUE 284s > 284s > Puromycin3 <- Puromycin2 284s > names(Puromycin3)[3L] <- "blargh" 284s > all.equal( 284s + as.character( 284s + diffPrint(Puromycin, Puromycin3, line.limit=7, mode="sidebyside") 284s + ), 284s + rdsf(900) 284s + ) 284s [1] TRUE 284s > all.equal( 284s + as.character( 284s + diffPrint(Puromycin, Puromycin3, line.limit=6, mode="context") 284s + ), 284s + rdsf(1000) 284s + ) 284s [1] TRUE 284s > # - Dual limit values ---------------------------------------------------------- 284s > 284s > A <- letters[1:10] 284s > B <- LETTERS[1:10] 284s > all.equal( 284s + as.character(diffChr(A, B, line.limit=c(10, 3))), rdsf(1100) 284s + ) 284s [1] TRUE 284s > all.equal( 284s + as.character(diffChr(A, B, line.limit=c(13, 3))), rdsf(1200) 284s + ) 284s [1] TRUE 284s > try(diffChr(A, B, line.limit=c(3, 13))) # "larger than or" 284s Error in diffChr(target = A, current = B, line.limit = c(3, 13)) : 284s Argument `line.limit` must be an integer vector of length 1 or 2 and if length 2, with the first value larger than or equal to the second, or "auto" or the result of calling `auto_line_limit` 284s > 284s > # - Cause errors --------------------------------------------------------------- 284s > 284s > try(diffChr(letters, LETTERS, line.limit=1:3)) # "vector of length" 284s Error in diffChr(target = letters, current = LETTERS, line.limit = 1:3) : 284s Argument `line.limit` must be an integer vector of length 1 or 2 and if length 2, with the first value larger than or equal to the second, or "auto" or the result of calling `auto_line_limit` 284s > 284s > # - Vanishing header ----------------------------------------------------------- 284s > 284s > # issue 64 284s > all.equal( 284s + as.character( 284s + diffChr( 284s + letters, letters[-13], context=auto_context(0, 10), line.limit=1L, 284s + pager="off" 284s + ) ), 284s + rdsf(1300) 284s + ) 284s [1] TRUE 284s > 284s > 284s PASS 284s Begin testing test-methods.R 284s 284s R version 4.4.3 (2025-02-28) -- "Trophy Case" 284s Copyright (C) 2025 The R Foundation for Statistical Computing 284s Platform: aarch64-unknown-linux-gnu 284s 284s R is free software and comes with ABSOLUTELY NO WARRANTY. 284s You are welcome to redistribute it under certain conditions. 284s Type 'license()' or 'licence()' for distribution details. 284s 284s R is a collaborative project with many contributors. 284s Type 'contributors()' for more information and 284s 'citation()' on how to cite R or R packages in publications. 284s 284s Type 'demo()' for some demos, 'help()' for on-line help, or 284s 'help.start()' for an HTML browser interface to help. 284s Type 'q()' to quit R. 284s 285s > NAME <- "methods" 285s > source(file.path('_helper', 'init.R')) 285s > 285s > # try implementing methods that change default behavior outside of package 285s > 285s > # - Force unified -------------------------------------------------------------- 285s > 285s > par.env <- new.env() 285s > local( 285s + envir=par.env, { 285s + suppressWarnings( 285s + setClass( 285s + "testdiffobj", slots=c(a="integer"), where=par.env 285s + ) ) 285s + # First check that we do actually output in side by side mode 285s + 285s + print( 285s + all.equal( 285s + as.character(diffObj(new("testdiffobj", a=1L), new("testdiffobj", a=2L))), 285s + rdsf(100) 285s + ) ) 285s + # Now verify that with our new method, we get unified 285s + 285s + setMethod("diffObj", c("testdiffobj", "testdiffobj"), 285s + function(target, current, ...) { 285s + dots <- match.call(expand.dots=FALSE)[["..."]] 285s + if("mode" %in% names(dots)) 285s + callNextMethod() 285s + else 285s + callNextMethod(target=target, current=current, ..., mode="unified") 285s + }, 285s + where=par.env 285s + ) 285s + on.exit( 285s + removeMethod("diffObj", c("testdiffobj", "testdiffobj"), where=par.env) 285s + ) 285s + print( 285s + all.equal( 285s + as.character(diffObj(new("testdiffobj", a=1L), new("testdiffobj", a=2L))), 285s + rdsf(200) 285s + ) ) 285s + # Make sure we can still get side by side? 285s + print( 285s + all.equal( 285s + as.character( 285s + diffObj( 285s + new("testdiffobj", a=1L), new("testdiffobj", a=2L), mode="sidebyside" 285s + ) ), 285s + rdsf(100) 285s + ) ) 285s + try( #"Argument `mode` must be" 285s + diffObj(new("testdiffobj", a=1L), new("testdiffobj", a=2L), mode="hello") 285s + ) 285s + }) 285s [1] TRUE 285s [1] TRUE 285s [1] TRUE 285s Error in diffObj(target = new("testdiffobj", a = 1L), current = new("testdiffobj", : 285s Error in calling `diffStr`: Argument `mode` must be character(1L) and in `c("auto", "unified", "context", "sidebyside")`. 285s > 285s PASS 285s Begin testing test-misc.R 285s 285s R version 4.4.3 (2025-02-28) -- "Trophy Case" 285s Copyright (C) 2025 The R Foundation for Statistical Computing 285s Platform: aarch64-unknown-linux-gnu 285s 285s R is free software and comes with ABSOLUTELY NO WARRANTY. 285s You are welcome to redistribute it under certain conditions. 285s Type 'license()' or 'licence()' for distribution details. 285s 285s R is a collaborative project with many contributors. 285s Type 'contributors()' for more information and 285s 'citation()' on how to cite R or R packages in publications. 285s 285s Type 'demo()' for some demos, 'help()' for on-line help, or 285s 'help.start()' for an HTML browser interface to help. 285s Type 'q()' to quit R. 285s 285s > NAME <- "misc" 285s > source(file.path('_helper', 'init.R')) 285s > 285s > # - trim_str ------------------------------------------------------------------- 285s > 285s > a <- structure("hello", class="A", xx="B") 285s > b <- structure(1:10, yy=a) 285s > long.string <- "I'm a string long enough to force wrapping under most cases so that I may be useful for tests andiamareallylongwordtoseehowwrappingbreakslongwordsthatexceed" 285s > obj <- list( 285s + a=a, b=b, c=1:50, 285s + d=long.string, 285s + e=list(1, structure(2, zz=list(a=1, b=list("a", ls=long.string))), e=letters) 285s + ) 285s > # conditional because of issue113 285s > str.txt <- capture.output(str(obj)) 285s > str.txt.w <- capture.output(str(obj, width=30L, strict.width="wrap")) 286s > 286s > if( 286s + getRversion() >= '3.5.0' && as.numeric(R.Version()[['svn rev']]) >= 73780 286s + ) { 286s + c( 286s + all.equal( 286s + diffobj:::str_levels(str.txt, wrap=FALSE), 286s + c(0L, 1L, 2L, 1L, 2L, 3L, 1L, 1L, 1L, 2L, 2L, 3L, 4L, 4L, 5L, 5L, 2L) 286s + ), 286s + all.equal( 286s + diffobj:::str_levels(str.txt.w, wrap=TRUE), 286s + c(0L, 1L, 2L, 1L, 1L, 2L, 2L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 286s + 1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 286s + 2L, 2L 286s + ) 286s + ) ) 286s + } else { 286s + c( 286s + all.equal( 286s + diffobj:::str_levels(str.txt, wrap=FALSE), 286s + c(0L, 1L, 3L, 1L, 2L, 4L, 1L, 1L, 1L, 2L, 2L, 3L, 4L, 4L, 5L, 5L, 2L) 286s + ), 286s + all.equal( 286s + diffobj:::str_levels(str.txt.w, wrap=TRUE), 286s + c(0L, 1L, 1L, 3L, 1L, 1L, 2L, 2L, 4L, 4L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 2L, 2L) 286s + ) ) 286s + } 286s [1] TRUE TRUE 286s > # cat( 286s > # paste( 286s > # format(substr(str.txt.w, 1, 20)), diffobj:::str_levels(str.txt.w, TRUE), 286s > # sep=": " 286s > # ), 286s > # sep="\n" 286s > # ) 286s > 286s > # - rle_sub -------------------------------------------------------------------- 286s > 286s > x <- c(1, 1, 1, 2, 2, 1, 1, 3, 3, 4, 4, 4, 5, 2, 2) 286s > r <- rle(x) 286s > all.equal(diffobj:::rle_sub(r, r$values == 1L), list(1:3, 6:7)) 286s [1] TRUE 286s > all.equal(diffobj:::rle_sub(r, r$values == 2L), list(4:5, 14:15)) 286s [1] TRUE 286s > isTRUE(all(x[unlist(diffobj:::rle_sub(r, r$values == 1L))] == 1)) 286s [1] TRUE 286s > isTRUE(all(x[unlist(diffobj:::rle_sub(r, r$values == 2L))] == 2)) 286s [1] TRUE 286s > isTRUE(all(x[unlist(diffobj:::rle_sub(r, r$values == 3L))] == 3)) 286s [1] TRUE 286s > 286s > # - call funs ------------------------------------------------------------------ 286s > 286s > # Failure case; assumes no S4 dispatch in testthat 286s > calls <- list(quote(a()), quote(b()), quote(notafunctionblah())) 286s > all.equal(diffobj:::which_top(calls), length(calls)) 286s [1] TRUE 286s > diffobj:::extract_call(calls, new.env()) # warn: "Unable to find") 286s $call 286s NULL 286s 286s $tar 286s NULL 286s 286s $cur 286s NULL 286s 286s Warning message: 286s In get_fun(found.call[[1L]], env = par.env) : 286s Unable to find function `notafunctionblah` to match call with. 286s > 286s > # missing param works 286s > 286s > calls2 <- pairlist( 286s + quote(diffChr("a")), quote(diffChr("a")), quote(.local(target, current, ...)) 286s + ) 286s > all.equal( 286s + diffobj:::extract_call(calls2, new.env()), 286s + list(call = quote(diffChr(target = "a", NULL)), tar = "a", cur = NULL) 286s + ) 286s [1] TRUE 286s > # fallback parent frame; can't think of a good way to actually cause this to 286s > # happen 286s > 286s > # all.equal(diffobj:::par_frame(), .GlobalEnv) 286s > 286s > # - lines ---------------------------------------------------------------------- 286s > 286s > old.val <- Sys.getenv("LINES", unset=NA) 286s > Sys.setenv(LINES="25") 286s > all.equal(console_lines(), 25L) 286s [1] TRUE 286s > Sys.setenv(LINES="-25") 286s > all.equal(console_lines(), 48L) 286s [1] TRUE 286s > Sys.unsetenv("LINES") 286s > all.equal(console_lines(), 48L) 286s [1] TRUE 286s > 286s > # - get_funs ------------------------------------------------------------------- 286s > 286s > identical( 286s + diffobj:::get_fun(quote(diffobj::diffPrint), .BaseNamespaceEnv), 286s + diffobj::diffPrint 286s + ) 286s [1] TRUE 286s > identical( 286s + diffobj:::get_fun(quote(diffobj:::diffPrint), .BaseNamespaceEnv), 286s + diffobj::diffPrint 286s + ) 286s [1] TRUE 286s > identical( 286s + diffobj:::get_fun(quote(diffPrint), getNamespace("diffobj")), 286s + diffobj::diffPrint 286s + ) 286s [1] TRUE 286s > gf <- diffobj:::get_fun(quote(notAFunction), getNamespace("diffobj")) # warn 286s Warning message: 286s In diffobj:::get_fun(quote(notAFunction), getNamespace("diffobj")) : 286s Unable to find function `notAFunction` to match call with. 286s > 286s > identical(gf, NULL) 286s [1] TRUE 286s > 286s > # - trimws2 -------------------------------------------------------------------- 286s > 286s > all.equal(diffobj:::trimws2("hello world"), "hello world") 286s [1] TRUE 286s > all.equal(diffobj:::trimws2(" hello world"), "hello world") 286s [1] TRUE 286s > all.equal(diffobj:::trimws2(" hello world "), "hello world") 286s [1] TRUE 286s > all.equal(diffobj:::trimws2(" hello world ", 'left'), "hello world ") 286s [1] TRUE 286s > all.equal(diffobj:::trimws2(" hello world ", 'right'), " hello world") 286s [1] TRUE 286s > 286s > try(diffobj:::trimws2(" hello world ", 'banana')) # "is wrong" 286s Error in diffobj:::trimws2(" hello world ", "banana") : 286s Argument which is wrong 286s > 286s > # - string --------------------------------------------------------------------- 286s > 286s > try(diffobj:::substr2("hello world", 1, 1:2)) # "same length" 286s Error in diffobj:::substr2("hello world", 1, 1:2) : 286s `start` and `stop` must be length 1 or the same length as `x`. 286s > 286s > # - Gutters -------------------------------------------------------------------- 286s > 286s > etc <- new("Settings") 286s > etc@style <- StyleRaw() 286s > etc@style@funs@gutter <- function(x) stop("bad gutters") 286s > try(diffobj:::gutter_dat(etc)) # "Failed attempting to apply gutter." 286s Error in funs@gutter(paste0(gutt.dat.format, funs@gutter.pad(text@gutter.pad))) : 286s bad gutters 286s Error in diffobj:::gutter_dat(etc) : 286s Failed attempting to apply gutter formatting functions; if you did not customize them, contact maintainer. See `?StyleFuns`. 286s > 286s > # - Finalizer error handling --------------------------------------------------- 286s > 286s > try(finalizeHtml(letters, NULL)) # "must be character" 286s Error in .local(x, ...) : Argument `x.chr` must be character 286s > try(finalizeHtml(letters, letters, letters)) # "must be character\\(1L" 286s Error in .local(x, ...) : Argument `js` must be character(1L) and not NA. 286s > 286s > # - c.factor ------------------------------------------------------------------- 286s > 286s > all.equal(diffobj:::c.factor(), factor(character())) 286s [1] TRUE 286s > 286s > # - strip_hz ------------------------------------------------------------------- 286s > 286s > # Can't trigger this directly because wrapper doesn't let this case through 286s > diffobj:::strip_hz_c_int(character(), 8L, TRUE) 286s character(0) 286s > 286s > 286s > 286s PASS 286s Begin testing test-pager.R 286s 286s R version 4.4.3 (2025-02-28) -- "Trophy Case" 286s Copyright (C) 2025 The R Foundation for Statistical Computing 286s Platform: aarch64-unknown-linux-gnu 286s 286s R is free software and comes with ABSOLUTELY NO WARRANTY. 286s You are welcome to redistribute it under certain conditions. 286s Type 'license()' or 'licence()' for distribution details. 286s 286s R is a collaborative project with many contributors. 286s Type 'contributors()' for more information and 286s 'citation()' on how to cite R or R packages in publications. 286s 286s Type 'demo()' for some demos, 'help()' for on-line help, or 286s 'help.start()' for an HTML browser interface to help. 286s Type 'q()' to quit R. 286s 286s > NAME <- "pager" 286s > source(file.path('_helper', 'init.R')) 286s > source(file.path('_helper', 'tools.R')) 286s > 286s > # void pager, doesn't do anything, just to test side effect of writing to file 286s > 286s > void <- function(x) NULL 286s > 286s > # - Specifying pager ----------------------------------------------------------- 286s > 286s > style <- gdo("diffobj.style") 286s > if(is.null(style)) style <- StyleAnsi8NeutralYb() 286s > style@pager@file.ext <- "xyz" # make pager identifiable 286s > all.equal( 286s + diffChr( 286s + letters, LETTERS, style=style, pager="auto", interactive=TRUE 286s + )@etc@style@pager@file.ext, 286s + "xyz" 286s + ) 286s [1] TRUE 286s > all.equal( 286s + diffChr( 286s + letters, LETTERS, style=style, pager="off", interactive=TRUE 286s + )@etc@style@pager, 286s + PagerOff() 286s + ) 286s [1] TRUE 286s > identical( 286s + diffChr( 286s + letters, LETTERS, style=style, pager="auto", interactive=FALSE 286s + )@etc@style@pager, 286s + PagerOff() 286s + ) 286s [1] TRUE 286s > 286s > # - System Pagers -------------------------------------------------------------- 286s > 286s > less.orig <- Sys.getenv("LESS") 286s > pager_mock <- function(...) { 286s + warning(Sys.getenv("LESS")) 286s + 42 286s + } 286s > is(PagerSystem(), "PagerSystem") 286s [1] TRUE 286s > is( 286s + pg.less <- PagerSystemLess(pager=pager_mock, flags="VWF"), 286s + "PagerSystemLess" 286s + ) 286s [1] TRUE 286s > res <- pg.less@pager() # warning: "VWF$" 286s Warning message: 286s In pager.old(x) : -VWF 286s > all.equal(res, 42) 286s [1] TRUE 286s > all.equal(less.orig, Sys.getenv("LESS")) 286s [1] TRUE 286s > all.equal(PagerSystemLess(pager=pager_mock)@flags, "R") 286s [1] TRUE 286s > 286s > try(PagerSystemLess(pager=pager_mock, flags=letters)) 286s Error in initialize(value, ...) : 286s Argument `flags` must be character(1L) and not NA 286s > 286s > # - use_pager ------------------------------------------------------------------ 286s > 286s > local({ 286s + suppressMessages(mock(diffobj:::console_lines, 10L)) 286s + on.exit(suppressMessages(untrace(diffobj:::console_lines))) 286s + c( 286s + isTRUE(diffobj:::use_pager(PagerSystem(threshold=0L), 1L)), 286s + identical(diffobj:::use_pager(PagerSystem(threshold=50L), 25L), FALSE), 286s + isTRUE(diffobj:::use_pager(PagerSystem(threshold=-1L), 25L)) 286s + ) 286s + }) 286s [1] TRUE TRUE TRUE 286s > 286s > # - Setting LESS var ----------------------------------------------------------- 286s > 286s > local({ 286s + less.orig <- Sys.getenv("LESS", unset=NA) 286s + old.opt <- options(crayon.enabled=FALSE) # problems with crayon and LESS 286s + on.exit({ 286s + diffobj:::reset_less_var(less.orig) # should be tested..., but super simple 286s + options(old.opt) 286s + }) 286s + 286s + # Here we change the LESS variable even though we're mocking getenv 286s + 286s + Sys.unsetenv("LESS") 286s + a0 <- isTRUE(is.na(diffobj:::set_less_var("XF"))) 286s + a <- all.equal(Sys.getenv("LESS"), "-XF") 286s + Sys.setenv(LESS="-X -F") 286s + b <- all.equal(diffobj:::set_less_var("VP"), "-X -F") 286s + c <- all.equal(Sys.getenv("LESS"), "-X -FVP") 286s + diffobj:::reset_less_var("-XF") 286s + d <- all.equal(Sys.getenv("LESS"), "-XF") 286s + diffobj:::reset_less_var(NA_character_) 286s + e <- all.equal(Sys.getenv("LESS"), "") 286s + Sys.setenv(LESS="-XF") 286s + f <- all.equal(diffobj:::set_less_var("V"), "-XF") 286s + g <- all.equal(Sys.getenv("LESS"), "-XFV") 286s + c(a0, a, b, c, d, e, f, g) 286s + }) 286s [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 286s > 286s > # - viewer vs browser ---------------------------------------------------------- 286s > 286s > local({ 286s + viewer <- function(x) "viewer" 286s + old.external <- options(viewer=viewer, browser=function(url) "browser") 286s + on.exit(options(old.external)) 286s + suppressMessages(mock(diffobj::make_blocking, quote(fun))) 286s + on.exit(suppressMessages(untrace(diffobj::make_blocking)), add=TRUE) 286s + pager <- PagerBrowser() 286s + a <- all.equal(pager@pager("blah"), "viewer") 286s + options(viewer=NULL) 286s + b <- all.equal(pager@pager("blah"), "browser") 286s + options(viewer=function(x) stop("viewer error")) 286s + res <- pager@pager("blah") # warning: "IDE viewer" 286s + c <- all.equal(res, "browser") 286s + c(a, b, c) 286s + }) 286s [1] TRUE TRUE TRUE 286s Warning message: 286s In pager@pager("blah") : 286s IDE viewer failed with error viewer error; falling back to `browseURL` 286s > 286s > # - blocking ------------------------------------------------------------------- 286s > 286s > # Note that readline just proceeds in non-interactive mode, which is why we 286s > # need the mock here 286s > 286s > local({ 286s + suppressMessages(mock(diffobj:::interactive, FALSE)) 286s + on.exit(suppressMessages(untrace(diffobj:::interactive))) 286s + suppressMessages(mock(diffobj:::readline, quote(warning("readline")))) 286s + on.exit(suppressMessages(untrace(diffobj:::readline)), add=TRUE) 286s + try(make_blocking("hello")) # "must be a function" 286s + try(make_blocking(identity, letters)) # "must be character\\(1L") 286s + try(make_blocking(identity, "a", "a")) # "must be TRUE" 286s + 286s + res <- make_blocking(sum)(1:10) # warn: "readline" 286s + a <- all.equal(sum(1:10), res) 286s + b <- isTRUE( 286s + withVisible( 286s + suppressWarnings(make_blocking(sum, invisible=FALSE)(1:10)) 286s + )[['visible']] 286s + ) 286s + c(a, b) 286s + }) 286s Error in make_blocking("hello") : Argument `fun` must be a function 286s Error in make_blocking(identity, letters) : 286s Argument `msg` must be character(1L) and not NA 286s Error in make_blocking(identity, "a", "a") : 286s Argument `invisible.res` must be TRUE or FALSE 286s [1] TRUE TRUE 286s Warning message: 286s In readline(msg) : readline 286s > local({ 286s + suppressMessages(mock(diffobj:::interactive, TRUE)) 286s + on.exit(suppressMessages(untrace(diffobj:::interactive))) 286s + suppressMessages(mock(diffobj:::readline, quote(warning("readline")))) 286s + on.exit(suppressMessages(untrace(diffobj:::readline)), add=TRUE) 286s + show( # warn "readline" 286s + diffChr( 286s + "a", "b", format='raw', 286s + pager=list(pager=void, make.blocking=TRUE, threshold=0) 286s + ) 286s + ) 286s + show( # warn "readline" 286s + diffChr( 286s + "a", "b", format='html', 286s + pager=list(pager=void, make.blocking=NA, threshold=0) 286s + ) ) 286s + show(diffChr("a", "b", format='html', pager=list(pager=void))) 286s + }) 286s Warning messages: 286s 1: In readline(msg) : readline 286s 2: In readline(msg) : readline 286s 3: In readline(msg) : readline 286s > # There should be no warnings in this lot 286s > 286s > local({ 286s + suppressMessages(mock(diffobj:::interactive, TRUE)) 286s + on.exit(suppressMessages(untrace(diffobj:::interactive))) 286s + suppressMessages(mock(diffobj:::readline, quote(warning("readline")))) 286s + on.exit(suppressMessages(untrace(diffobj:::readline)), add=TRUE) 286s + f <- tempfile() 286s + on.exit(unlink(f), add=TRUE) 286s + show( # no warning 286s + diffChr( 286s + "a", "b", format='html', 286s + pager=list(pager=void, make.blocking=NA, file.path=f) 286s + ) ) 286s + show( # no warning 286s + diffChr( 286s + "a", "b", format='html', 286s + pager=list(pager=void, make.blocking=FALSE, file.path=f) 286s + ) ) 286s + show( # no warning 286s + diffChr("a", "b", format='html', pager=list(pager=void, file.path=f)) 286s + ) 286s + }) 287s > 287s > # - html page output ----------------------------------------------------------- 287s > 287s > pager <- PagerBrowser( 287s + pager=function(x) cat(readLines(x), sep="\n"), make.blocking=FALSE 287s + ) 287s > all.equal( 287s + capture.output(show(diffChr("A", "B", pager=pager, style=StyleRaw()))), 287s + c("< \"A\" > \"B\" ", "@@ 1 @@ @@ 1 @@ ", "< A > B ") 287s + ) 287s [1] TRUE 287s > pager.warn <- PagerBrowser( 287s + pager=function(x) cat(readLines(x), sep="\n"), make.blocking=FALSE 287s + ) 287s > try( # "Unable to instantiate `Style` object: Argument `js` .* is not a file" 287s + diffChr( 287s + "A", "B", pager=pager.warn, format="html", style=list(js="notafile") 287s + ) ) 287s Error in diffChr(target = "A", current = "B", pager = pager.warn, format = "html", : 287s Unable to instantiate `Style` object: Argument `js` ("notafile") is not a file 287s > try( # "Unable to instantiate `Style` object: Argument `css` .* is not a file" 287s + diffChr( 287s + "A", "B", pager=pager.warn, format="html", style=list(css="notafile") 287s + ) 287s + ) 287s Error in diffChr(target = "A", current = "B", pager = pager.warn, format = "html", : 287s Unable to instantiate `Style` object: Argument `css` ("notafile") is not a file 287s > # Create objects that bypass the validation 287s > 287s > style.obj.1 <- style.obj.2 <- StyleHtmlLightYb() 287s > style.obj.1@css <- "notafile" 287s > style.obj.2@js <- "notafile" 287s > 287s > invisible( 287s + capture.output( # warn: "Unable to read provided css file" 287s + show(diffChr("A", "B", pager=pager.warn, style=style.obj.1)) 287s + ) ) 287s Warning messages: 287s 1: In file(con, "r") : 287s cannot open file 'notafile': No such file or directory 287s 2: In .local(x, ...) : 287s Unable to read provided css file "notafile" (error: cannot open the connection). 287s > invisible( 287s + capture.output( # "Unable to read provided js file" 287s + show(diffChr("A", "B", pager=pager.warn, style=style.obj.2)) 287s + ) ) 287s Warning messages: 287s 1: In file(con, "r") : 287s cannot open file 'notafile': No such file or directory 287s 2: In .local(x, ...) : 287s Unable to read provided js file "notafile" (error: cannot open the connection). 287s > # - pager_is_less -------------------------------------------------------------- 287s > 287s > is.less <- pager_is_less() 287s > isTRUE(diffobj:::is.TF(is.less)) 287s [1] TRUE 287s > 287s > less <- tryCatch( 287s + system2("which", "less", stdout=TRUE, stderr=TRUE), 287s + error=function(e) NULL, warning=function(e) NULL 287s + ) 287s > sys.cat <- tryCatch( 287s + system2("which", "cat", stdout=TRUE, stderr=TRUE), 287s + error=function(e) NULL, warning=function(e) NULL 287s + ) 287s > if(diffobj:::is.chr.1L(less) && file_test("-x", less)) { 287s + local({ 287s + old.opt <- options(pager=less) 287s + on.exit(options(old.opt)) 287s + 287s + # has to be stopifnot as we can't return TRUE for systems that don't 287s + # meet these requirements 287s + stopifnot( 287s + identical(diffobj:::pager_opt_default(), FALSE), 287s + isTRUE(pager_is_less()) 287s + ) 287s + }) 287s + } 287s > if(diffobj:::is.chr.1L(sys.cat) && file_test("-x", sys.cat)) { 287s + local({ 287s + old.opt <- options(pager=sys.cat) 287s + on.exit(options(old.opt)) 287s + 287s + # has to be stopifnot as we can't return TRUE for systems that don't 287s + # meet these requirements 287s + stopifnot( 287s + identical(diffobj:::pager_opt_default(), FALSE), 287s + identical(pager_is_less(), FALSE) 287s + ) 287s + }) 287s + } 287s > ## force some checks 287s > 287s > local({ 287s + old.opt <- options(pager=NULL) 287s + on.exit(options(old.opt)) 287s + identical(pager_is_less(), FALSE) 287s + }) 287s [1] TRUE 287s > identical(diffobj:::file_is_less(tempfile()), FALSE) 287s [1] TRUE 287s > 287s > # - file.path ------------------------------------------------------------------ 287s > 287s > f <- tempfile() 287s > show( 287s + diffChr( 287s + "A", "B", format='raw', 287s + pager=list(pager=void, file.path=f, threshold=0L) 287s + ) ) 287s > all.equal( 287s + readLines(f), 287s + c("< \"A\" > \"B\" ", "@@ 1 @@ @@ 1 @@ ", 287s + "< A > B ") 287s + ) 287s [1] TRUE 287s > show( # No error on this one 287s + diffChr( 287s + "A", "B", format='raw', 287s + pager=list(pager=void, file.path=NA, threshold=0L) 287s + ) ) 287s > try(Pager(file.path=letters)) # "must be length 1" 287s Error in initialize(value, ...) : Argument `file.path` must be length 1. 287s > try(Pager(file.path=1)) # "must be character" 287s Error in initialize(value, ...) : Argument `file.path` must be character. 287s > 287s > # - basic pager ---------------------------------------------------------------- 287s > 287s > local({ 287s + f <- tempfile() 287s + on.exit(unlink(f)) 287s + c( 287s + all.equal( 287s + capture.output( 287s + show( 287s + diffChr( 287s + 1, 2, pager=Pager(file.path=f, threshold=0L), 287s + format='raw' 287s + ) 287s + ) ), 287s + txtf(100) 287s + ), 287s + all.equal(txtf(100), readLines(f)) 287s + ) 287s + }) 287s [1] TRUE TRUE 287s > 287s > # - format-pager interaction --------------------------------------------------- 287s > 287s > local({ 287s + old.opt <- options(crayon.colors=7) 287s + crayon::num_colors(TRUE) 287s + on.exit({ 287s + options(old.opt) 287s + crayon::num_colors(TRUE) 287s + }) 287s + c( 287s + is( 287s + diffChr(1, 2, format='auto', pager="on", interactive=TRUE)@etc@style, 287s + "StyleHtml" 287s + ), 287s + is( 287s + diffChr(1, 2, format='auto', pager="on", interactive=FALSE)@etc@style, 287s + "StyleRaw" 287s + ), 287s + is( 287s + diffChr( 287s + 1, 2, format='auto', pager=PagerBrowser(), interactive=FALSE 287s + )@etc@style, 287s + "StyleHtml" 287s + ) 287s + ) 287s + }) 287s [1] TRUE TRUE TRUE 287s > # - format-pager interaction 2 ------------------------------------------------- 287s > 287s > local({ 287s + old.rs <- Sys.getenv('RSTUDIO', unset=NA) 287s + old.rsterm <- Sys.getenv('RSTUDIO_TERM', unset=NA) 287s + on.exit({ 287s + if(is.na(old.rs)) { 287s + Sys.unsetenv('RSTUDIO') 287s + } else Sys.setenv('RSTUDIO'=old.rs) 287s + 287s + if(is.na(old.rsterm)) { 287s + Sys.unsetenv('RSTUDIO_TERM') 287s + } else Sys.setenv('RSTUDIO_TERM'=old.rsterm) 287s + }) 287s + Sys.unsetenv('RSTUDIO') 287s + Sys.unsetenv('RSTUDIO_TERM') 287s + old.opt <- options(crayon.colors=8) 287s + crayon::num_colors(TRUE) 287s + on.exit({options(old.opt); crayon::num_colors(TRUE)}, add=TRUE) 287s + 287s + Sys.setenv(RSTUDIO='1') 287s + 287s + a <- c( 287s + is( 287s + diffChr(1, 2, format='auto', pager='on', interactive=TRUE)@etc@style, 287s + "StyleHtml" 287s + ), 287s + is( 287s + diffChr(1, 2, format='auto', interactive=FALSE)@etc@style, 287s + "StyleAnsi" 287s + ) ) 287s + Sys.setenv(RSTUDIO_TERM='HELLO') 287s + crayon::num_colors(TRUE) 287s + 287s + c( 287s + a, 287s + is( 287s + diffChr(1, 2, format='auto', pager='on', interactive=TRUE)@etc@style, 287s + "StyleAnsi" 287s + ) ) 287s + }) 287s [1] TRUE TRUE TRUE 287s > 287s > # - format-pager interaction 3 ------------------------------------------------- 287s > 287s > is( 287s + diffPrint(1:3, 3:1, format='auto', interactive=FALSE, term.colors=1)@etc@style, 287s + "StyleRaw" 287s + ) 287s [1] TRUE 287s > is( 287s + diffPrint(1:3, 3:1, format='auto', interactive=FALSE, term.colors=8)@etc@style, 287s + "StyleAnsi" 287s + ) 287s [1] TRUE 287s > 287s > # - Default pager writes to screen --------------------------------------------- 287s > 287s > # issue132 thanks Bill Dunlap 287s > 287s > local({ 287s + f <- tempfile() 287s + on.exit(unlink(f)) 287s + writeLines("hello world", f) 287s + 287s + all.equal(capture.output(new("Pager")@pager(f)), "hello world") 287s + }) 287s [1] TRUE 287s > 287s > 287s PASS 287s Begin testing test-rdiff.R 287s 287s R version 4.4.3 (2025-02-28) -- "Trophy Case" 287s Copyright (C) 2025 The R Foundation for Statistical Computing 287s Platform: aarch64-unknown-linux-gnu 287s 287s R is free software and comes with ABSOLUTELY NO WARRANTY. 287s You are welcome to redistribute it under certain conditions. 287s Type 'license()' or 'licence()' for distribution details. 287s 287s R is a collaborative project with many contributors. 287s Type 'contributors()' for more information and 287s 'citation()' on how to cite R or R packages in publications. 287s 287s Type 'demo()' for some demos, 'help()' for on-line help, or 287s 'help.start()' for an HTML browser interface to help. 287s Type 'q()' to quit R. 287s 287s > NAME <- "rdiff" 287s > source(file.path('_helper', 'init.R')) 287s > 287s > # - diff util detection -------------------------------------------------------- 287s > 287s > identical(has_Rdiff(function(...) warning("test warning")), FALSE) 287s [1] TRUE 287s > isTRUE(has_Rdiff(function(...) NULL)) 287s [1] TRUE 287s > 287s > # - errors --------------------------------------------------------------------- 287s > 287s > try(Rdiff_chr(stop('hello'), 'goodbye')) # "Unable to coerce" 287s Error in try(as.character(from)) : hello 287s Error in Rdiff_chr(stop("hello"), "goodbye") : 287s Unable to coerce `target` to character. 287s > try(Rdiff_chr('hello', stop('goodbye'))) # "Unable to coerce" 287s Error in try(as.character(to)) : goodbye 287s Error in Rdiff_chr("hello", stop("goodbye")) : 287s Unable to coerce `current` to character. 287s > try(Rdiff_obj(stop('hello'), 'goodbye')) # "Unable to store" 287s Error in vapply(list(from, to), function(x) { : hello 287s Error in Rdiff_obj(stop("hello"), "goodbye") : 287s Unable to store text representation of objects 287s > 287s > # - Rdiff_chr/obj -------------------------------------------------------------- 287s > 287s > # Only run tests on machines that are likely to have diff utility 287s > 287s > if(identical(.Platform$OS.type, "unix") && has_Rdiff()) { 287s + local({ 287s + A2 <- c("A", "B", "C") 287s + B2 <- c("X", "A", "Y", "C") 287s + A3 <- 1:3 287s + B3 <- c(100L, 1L, 200L, 3L) 287s + 287s + # Rdiff_chr 287s + 287s + ref.res <- c("0a1", "2c3") 287s + ref.res.1 <- c("0a1", "> X", "2c3", "< B", "---", "> Y") 287s + 287s + a <- identical(Rdiff_chr(A2, B2, silent=TRUE, minimal=TRUE), ref.res) 287s + capt <- capture.output(res <- Rdiff_chr(A2, B2, silent=FALSE, minimal=TRUE)) 287s + b <- identical(res, ref.res) 287s + c <- identical(capt, res) 287s + capt.1 <- capture.output( 287s + res.1 <- Rdiff_chr(A2, B2, silent=FALSE, minimal=FALSE) 287s + ) 287s + d <- identical(capt.1, ref.res.1) 287s + e <- identical(res.1, ref.res.1) 287s + 287s + # test coersion 287s + f <- identical(Rdiff_chr(A3, B3, minimal=TRUE, silent=TRUE), ref.res) 287s + 287s + # Rdiff_obj 287s + 287s + ref.res2 <- c("1c1", "< [1] \"A\" \"B\" \"C\"", "---", "> [1] \"X\" \"A\" \"Y\" \"C\"" ) 287s + ref.res3 <- c("1c1") 287s + 287s + g <- identical(Rdiff_obj(A2, B2, silent=TRUE), ref.res2) 287s + h <- identical(Rdiff_obj(A2, B2, minimal=TRUE, silent=TRUE), ref.res3) 287s + 287s + # with rds 287s + f1 <- tempfile() 287s + f2 <- tempfile() 287s + saveRDS(A2, f1) 287s + saveRDS(B2, f2) 287s + on.exit(unlink(c(f1, f2))) 287s + 287s + i <- identical(Rdiff_obj(f1, B2, silent=TRUE), ref.res2) 287s + j <- identical(Rdiff_obj(A2, f2, silent=TRUE), ref.res2) 287s + k <- identical(Rdiff_obj(f1, f2, silent=TRUE), ref.res2) 287s + 287s + res <- c(a, b, c, d, e, f, g, h, i, k) 287s + if(!all(res)) stop("Failed: ", deparse(which(!res))) 287s + }) 287s + } 287s > 287s PASS 287s Begin testing test-s4.R 287s 287s R version 4.4.3 (2025-02-28) -- "Trophy Case" 287s Copyright (C) 2025 The R Foundation for Statistical Computing 287s Platform: aarch64-unknown-linux-gnu 287s 287s R is free software and comes with ABSOLUTELY NO WARRANTY. 287s You are welcome to redistribute it under certain conditions. 287s Type 'license()' or 'licence()' for distribution details. 287s 287s R is a collaborative project with many contributors. 287s Type 'contributors()' for more information and 287s 'citation()' on how to cite R or R packages in publications. 287s 287s Type 'demo()' for some demos, 'help()' for on-line help, or 287s 'help.start()' for an HTML browser interface to help. 287s Type 'q()' to quit R. 287s 287s > NAME <- "s4" 287s > source(file.path('_helper', 'init.R')) 288s > 288s > # - diff data validation works 288s > # 288s > # These are not currently in use 288s > # expect_match(diffobj:::valid_dat("hello"), "should be a list") 288s > # D0 <- D1 <- D2 <- D3 <- D4 <- D5 <- D6 <- D7 <- 288s > # diffPrint(letters, LETTERS)@tar.dat 288s > 288s > # expect_match(diffobj:::valid_dat(unname(D0)), "should have names") 288s > 288s > # length(D1[[1L]]) <- 1L 288s > # expect_match(diffobj:::valid_dat(D1), "should have equal length") 288s > 288s > # D2$orig <- integer(length(D2$orig)) 288s > # expect_match(diffobj:::valid_dat(D2), "should be character") 288s > 288s > # D3$trim.ind.start <- character(length(D3$trim.ind.start)) 288s > # expect_match(diffobj:::valid_dat(D3), "should be integer") 288s > 288s > # D4$word.ind <- integer(length(D4$word.ind)) 288s > # expect_match(diffobj:::valid_dat(D4), "should be list") 288s > 288s > # D5$word.ind <- vector("list", length(D5$word.ind)) 288s > # expect_match(diffobj:::valid_dat(D5), "not in expected format") 288s > 288s > # D6$tok.rat <- D6$tok.rat + 2 288s > # expect_match(diffobj:::valid_dat(D6), "with all values between") 288s > 288s > # D7$fill <- integer(length(D7$fill)) 288s > # expect_match(diffobj:::valid_dat(D7), "should be logical") 288s > 288s > # - any ------------------------------------------------------------------------ 288s > 288s > isTRUE(any(diffChr('a', 'b'))) 288s [1] TRUE 288s > identical(any(diffChr('a', 'a')), FALSE) 288s [1] TRUE 288s > try(any(diffChr('a', 'a'), 2)) # "supports only one argument" 288s Error : `any` method for `Diff` supports only one argument 288s > 288s PASS 288s Begin testing test-scaling.R 288s 288s R version 4.4.3 (2025-02-28) -- "Trophy Case" 288s Copyright (C) 2025 The R Foundation for Statistical Computing 288s Platform: aarch64-unknown-linux-gnu 288s 288s R is free software and comes with ABSOLUTELY NO WARRANTY. 288s You are welcome to redistribute it under certain conditions. 288s Type 'license()' or 'licence()' for distribution details. 288s 288s R is a collaborative project with many contributors. 288s Type 'contributors()' for more information and 288s 'citation()' on how to cite R or R packages in publications. 288s 288s Type 'demo()' for some demos, 'help()' for on-line help, or 288s 'help.start()' for an HTML browser interface to help. 288s Type 'q()' to quit R. 288s 288s > NAME <- "scaling" 288s > source(file.path('_helper', 'init.R')) 288s > 288s > # These tests are not actually run since they require manual intervention to 288s > # check for browser rendering 288s > 288s > # These tests should be run on as many browsers as possible as well as in 288s > # RStudio, and consist of running the code and resizing the windows to see 288s > # what happens 288s > 288s > if(FALSE) { # prevent running 288s + # Text should be allowed to unfurl beyond native width 288s + 288s + diffStr(mdl1, mdl2, format="html") 288s + diffStr(mdl1, mdl2, format="html", style=list(scale=FALSE)) 288s + 288s + diffPrint(c(mdl1), c(mdl2), format="html") 288s + 288s + # Revealed problems with pixel rounding in scaling 288s + 288s + diffPrint(letters[1:6], LETTERS[1:6], format="html") 288s + diffPrint(letters[1:6], LETTERS[1:6], format="html", style=list(scale=FALSE)) 288s + 288s + # Revealed problems with gutter width computations; and scaling 288s + 288s + mx.2 <- matrix(1:100, ncol=4) 288s + mx.4 <- mx.3 <- mx.2 288s + mx.3[15, 2] <- 111L 288s + mx.3a <- mx.3[-5, ] 288s + diffPrint(mx.2, mx.3a, format="html") 288s + 288s + # summary stuff 288s + 288s + summary(diffPrint(letters, LETTERS, format="html")) 288s + summary(diffStr(mdl1, mdl2, format="html")) 288s + summary(diffPrint(c(mdl1), c(mdl2), format="html")) 288s + 288s + # Long banners 288s + 288s + diffPrint( 288s + 1:20 + 100 + 100 + 100 + 100 + 100 + 100 + 100, 288s + 2:20 + 100 + 100 + 100 + 100 + 100 + 100 + 100, 288s + format="html", style=list(scale=FALSE) 288s + ) 288s + diffPrint( 288s + 1:20 + 100 + 100 + 100 + 100 + 100 + 100 + 100, 288s + 2:20 + 100 + 100 + 100 + 100 + 100 + 100 + 100, 288s + format="html" 288s + ) 288s + # context 288s + 288s + diffPrint( 288s + 1:20 + 100 + 100 + 100 + 100 + 100 + 100 + 100, 288s + 2:20 + 100 + 100 + 100 + 100 + 100 + 100 + 100, 288s + format="html", mode="context" 288s + ) 288s + } 288s > 288s PASS 288s Begin testing test-ses.R 288s 288s R version 4.4.3 (2025-02-28) -- "Trophy Case" 288s Copyright (C) 2025 The R Foundation for Statistical Computing 288s Platform: aarch64-unknown-linux-gnu 288s 288s R is free software and comes with ABSOLUTELY NO WARRANTY. 288s You are welcome to redistribute it under certain conditions. 288s Type 'license()' or 'licence()' for distribution details. 288s 288s R is a collaborative project with many contributors. 288s Type 'contributors()' for more information and 288s 'citation()' on how to cite R or R packages in publications. 288s 288s Type 'demo()' for some demos, 'help()' for on-line help, or 288s 'help.start()' for an HTML browser interface to help. 288s Type 'q()' to quit R. 288s 288s > NAME <- "ses" 288s > source(file.path('_helper', 'init.R')) 288s > 288s > # Any tests added here should also be added to the valgrind test file 288s > 288s > # - basic ---------------------------------------------------------------------- 288s > 288s > all.equal(ses(letters[1:10], letters[1:10]), character()) 288s [1] TRUE 288s > all.equal(ses(letters[1:10], LETTERS[1:10]), "1,10c1,10") 288s [1] TRUE 288s > all.equal(ses(letters[1:5], LETTERS[1:10]), "1,5c1,10") 288s [1] TRUE 288s > all.equal(ses(letters[1:10], LETTERS[1:5]), "1,10c1,5") 288s [1] TRUE 288s > all.equal(ses(letters[2:10], letters[1:7]), c("0a1", "7,9d7")) 288s [1] TRUE 288s > all.equal( 288s + ses(letters[c(1:5, 1:5, 1:5)], c("e", "d", "a", "b", "c")), 288s + c("1,4d0", "6,8d1", "10d2", "14,15d5") 288s + ) 288s [1] TRUE 288s > all.equal( 288s + ses(c("e", "d", "a", "b", "c"), letters[c(1:5, 1:5, 1:5)]), 288s + c("0a1,4", "1a6,8", "2a10", "5a14,15") 288s + ) 288s [1] TRUE 288s > # edit distance = 1 288s > 288s > # - trigger edit distance 1 branches ------------------------------------------- 288s > 288s > all.equal(ses("a", c("a", "b")), "1a2") 288s [1] TRUE 288s > all.equal(ses(c("a", "b"), "a"), "2d1") 288s [1] TRUE 288s > all.equal(ses("c", c("b", "c")), "0a1") 288s [1] TRUE 288s > all.equal(ses(c("b", "c"), "c"), "1d0") 288s [1] TRUE 288s > 288s > all.equal(ses("a", character()), "1d0") 288s [1] TRUE 288s > all.equal(ses(character(), "a"), "0a1") 288s [1] TRUE 288s > all.equal(ses(character(), character()), character()) 288s [1] TRUE 288s > 288s > ## this is from the atomic tests, haven't dug into why they actually trigger 288s > ## the desired branches, but it is fairly complex 288s > set.seed(2) 288s > w1 <- sample( 288s + c( 288s + "carrot", "cat", "cake", "eat", "rabbit", "holes", "the", "a", "pasta", 288s + "boom", "noon", "sky", "hat", "blah", "paris", "dog", "snake" 288s + ), 25, replace=TRUE 288s + ) 288s > w4 <- w3 <- w2 <- w1 288s > w2[sample(seq_along(w1), 5)] <- LETTERS[1:5] 288s > w3 <- w1[8:15] 288s > w4 <- c(w1[1:5], toupper(w1[1:5]), w1[6:15], toupper(w1[1:5])) 288s > 288s > all.equal(ses(w1, w4), c("5a6,10", "15,21d19", "23,25c21,25")) 288s [1] TRUE 288s > 288s > # - longer strings ------------------------------------------------------------- 288s > 288s > # A bigger string 288s > 288s > string <- do.call(paste0, expand.grid(LETTERS, LETTERS, LETTERS)) 288s > 288s > all.equal( 288s + ses(string, c("hello", string[-c(5, 500, 1000)], "goodbye")), 288s + c("0a1", "5d5", "500d499", "1000d998", "17576a17575") 288s + ) 289s [1] TRUE 289s > all.equal( 289s + ses(c(string[200:500], "hello", string[-(1:400)][-c(5, 500, 1000)]), string), 289s + c("0a1,199", "207,306d405", "800a900", "1299a1400") 289s + ) 289s [1] TRUE 289s > 289s > # - max diffs ------------------------------------------------------------------ 289s > 289s > ses(letters[1:10], LETTERS[1:10], max.diffs=5) # "Exceeded `max.diffs`" 289s [1] "1,10c1,10" 289s Warning message: 289s In diff_myers(args[["a"]], args[["b"]], max.diffs = args[["max.diffs"]], : 289s Exceeded `max.diffs`: 20 vs 5 allowed. Diff is probably suboptimal. 289s > all.equal( 289s + ses(letters[1:10], LETTERS[1:10], max.diffs=5, warn=FALSE), 289s + "1,10c1,10" 289s + ) 289s [1] TRUE 289s > all.equal( 289s + ses( 289s + letters[1:10], 289s + c(letters[1], LETTERS[2:5], letters[6:10]), max.diffs=5, warn=FALSE 289s + ), 289s + "2,5c2,5" 289s + ) 289s [1] TRUE 289s > all.equal( 289s + ses( 289s + letters[1:10], 289s + c(letters[1], LETTERS[2:5], letters[6:8], LETTERS[9], letters[10]), 289s + max.diffs=5, warn=FALSE 289s + ), 289s + c("2,5c2,5", "9c9") 289s + ) 289s [1] TRUE 289s > # - Issue 152 -------------------------------------------------------------- 289s > 289s > # h/t @hadley, used to error, now warns 289s > 289s > all.equal(ses(letters[1:4], letters[1:3]), "4d3") 289s [1] TRUE 289s > all.equal(ses(letters[1:3], letters[1:4]), "3a4") 289s [1] TRUE 289s > ses(1, 2:9, max.diffs = 8) 289s [1] "1c1,8" 289s Warning message: 289s In diff_myers(args[["a"]], args[["b"]], max.diffs = args[["max.diffs"]], : 289s Exceeded `max.diffs`: 9 vs 8 allowed. Diff is probably suboptimal. 289s > 289s > # h/t @gadenbui, data is extracted from palmerpenguins@0.1.0::penguins 289s > # 289s > # comparison <- subset(penguins, year == 2007 | flipper_length_mm > 220) 289s > # test <- subset(penguins, year == 2008) 289s > # a <- test$bill_length_mm 289s > # b <- comparison$bill_length_mm 289s > 289s > a <- c(39.6, 40.1, 35, 42, 34.5, 41.4, 39, 40.6, 36.5, 37.6, 35.7, 289s + 41.3, 37.6, 41.1, 36.4, 41.6, 35.5, 41.1, 35.9, 41.8, 33.5, 39.7, 289s + 39.6, 45.8, 35.5, 42.8, 40.9, 37.2, 36.2, 42.1, 34.6, 42.9, 36.7, 289s + 35.1, 37.3, 41.3, 36.3, 36.9, 38.3, 38.9, 35.7, 41.1, 34, 39.6, 289s + 36.2, 40.8, 38.1, 40.3, 33.1, 43.2, 49.1, 48.4, 42.6, 44.4, 44, 289s + 48.7, 42.7, 49.6, 45.3, 49.6, 50.5, 43.6, 45.5, 50.5, 44.9, 45.2, 289s + 46.6, 48.5, 45.1, 50.1, 46.5, 45, 43.8, 45.5, 43.2, 50.4, 45.3, 289s + 46.2, 45.7, 54.3, 45.8, 49.8, 46.2, 49.5, 43.5, 50.7, 47.7, 46.4, 289s + 48.2, 46.5, 46.4, 48.6, 47.5, 51.1, 45.2, 45.2, 50.5, 49.5, 46.4, 289s + 52.8, 40.9, 54.2, 42.5, 51, 49.7, 47.5, 47.6, 52, 46.9, 53.5, 289s + 49, 46.2, 50.9, 45.5) 289s > b <- c(39.1, 39.5, 40.3, NA, 36.7, 39.3, 38.9, 39.2, 34.1, 42, 37.8, 289s + 37.8, 41.1, 38.6, 34.6, 36.6, 38.7, 42.5, 34.4, 46, 37.8, 37.7, 289s + 35.9, 38.2, 38.8, 35.3, 40.6, 40.5, 37.9, 40.5, 39.5, 37.2, 39.5, 289s + 40.9, 36.4, 39.2, 38.8, 42.2, 37.6, 39.8, 36.5, 40.8, 36, 44.1, 289s + 37, 39.6, 41.1, 37.5, 36, 42.3, 46.1, 50, 48.7, 50, 47.6, 46.5, 289s + 45.4, 46.7, 43.3, 46.8, 40.9, 49, 45.5, 48.4, 45.8, 49.3, 42, 289s + 49.2, 46.2, 48.7, 50.2, 45.1, 46.5, 46.3, 42.9, 46.1, 44.5, 47.8, 289s + 48.2, 50, 47.3, 42.8, 45.1, 59.6, 49.6, 50.5, 50.5, 50.1, 50.4, 289s + 46.2, 54.3, 49.8, 49.5, 50.7, 46.4, 48.2, 48.6, 45.2, 52.5, 50, 289s + 50.8, 52.1, 52.2, 49.5, 50.8, 46.9, 51.1, 55.9, 49.1, 49.8, 51.5, 289s + 55.1, 48.8, 50.4, 46.5, 50, 51.3, 45.4, 52.7, 45.2, 46.1, 51.3, 289s + 46, 51.3, 46.6, 51.7, 47, 52, 45.9, 50.5, 50.3, 58, 46.4, 49.2, 289s + 42.4, 48.5, 43.2, 50.6, 46.7, 52) 289s > 289s > # In <0.3.4: Exceeded buffer for finding fake snake 289s > ses(a[-c(15:38, 50:90)], b[-c(40:85, 100:125)], max.diffs=80) 289s [1] "1,3c1,9" "5,13c11,12" "15,25c14,48" "26a50" "28,29d51" 289s [6] "31c53,57" "33c59,60" "35,42c62,67" "44,49d68" 289s Warning message: 289s In diff_myers(args[["a"]], args[["b"]], max.diffs = args[["max.diffs"]], : 289s Exceeded `max.diffs`: 101 vs 80 allowed. Diff is probably suboptimal. 289s > 289s > # In <0.3.4: Faux Snake Process Failed 289s > ses(a[-(18:38)], b[-(50:80)], max.diffs=115) 289s [1] "1,3c1,9" "5,7c11,26" "9,12c28,38" "13a40,46" 289s [5] "15,54c48,82" "56,68d83" "70,74c85,88" "75a90,98" 289s [9] "77c100,101" "79,86c103,108" "88,93d109" 289s Warning message: 289s In diff_myers(args[["a"]], args[["b"]], max.diffs = args[["max.diffs"]], : 289s Exceeded `max.diffs`: 182 vs 115 allowed. Diff is probably suboptimal. 289s > 289s > # - issue 157 ------------------------------------------------------------------ 289s > 289s > # Arguably could match on 'A' instead of 'X' and be more compact 289s > a <- c('a', 'b', 'c', 'A', 'X', 'Y', 'Z', 'W') 289s > b <- c('X', 'C', 'A', 'U', 1, 2, 3) 289s > ses(a, b, max.diffs=13) 289s [1] "1,4d0" "6,8c2,7" 289s > 289s > # segfault (but may have beend debugging code) 289s > ses(letters[1:2], LETTERS[1:2], max.diffs = 4) 289s [1] "1,2c1,2" 289s > 289s > # snake overrun 289s > ses(c("G", "C", "T", "C", "A", "C", "G", "C"), c("T", "G"), max.diffs=2) 289s [1] "0a1" "2,8d2" 289s Warning message: 289s In diff_myers(args[["a"]], args[["b"]], max.diffs = args[["max.diffs"]], : 289s Exceeded `max.diffs`: 8 vs 2 allowed. Diff is probably suboptimal. 289s > 289s > # effect of max.diffs on compactness (waldo logical comparison) 289s > ses(c('A','A','A','A','A'), c('B','A','B','A','B'), max.diffs=0) 289s [1] "1c1" "3c3" "5c5" 289s Warning message: 289s In diff_myers(args[["a"]], args[["b"]], max.diffs = args[["max.diffs"]], : 289s Exceeded `max.diffs`: 6 vs 0 allowed. Diff is probably suboptimal. 289s > ses(c('A','A','A','A','A'), c('B','A','B','A','B'), max.diffs=1) 289s [1] "0a1" "2c3" "4,5c5" 289s Warning message: 289s In diff_myers(args[["a"]], args[["b"]], max.diffs = args[["max.diffs"]], : 289s Exceeded `max.diffs`: 6 vs 1 allowed. Diff is probably suboptimal. 289s > ses(c('A','A','A','A','A'), c('B','A','B','A','B'), max.diffs=2) 289s [1] "0a1" "2,4c3" "5a5" 289s Warning message: 289s In diff_myers(args[["a"]], args[["b"]], max.diffs = args[["max.diffs"]], : 289s Exceeded `max.diffs`: 6 vs 2 allowed. Diff is probably suboptimal. 289s > 289s > # back snake all matches before faux snake triggered 289s > ses_dat( 289s + a=c("T", "A", "A", "C", "C", "A"), 289s + b=c("A", "G", "A", "A"), max.diffs = 0 289s + ) 289s "ses_dat" object (Match: 3, Delete: 3, Insert: 1): 289s 289s D: T C C 289s M: A A A 289s I: G 289s Warning message: 289s In diff_myers(args[["a"]], args[["b"]], max.diffs = args[["max.diffs"]], : 289s Exceeded `max.diffs`: 4 vs 0 allowed. Diff is probably suboptimal. 289s > 289s > # - errors --------------------------------------------------------------------- 289s > 289s > try(ses('a', 'b', max.diffs='hello')) # "must be scalar integer" 289s Error in ses_prep(a = a, b = b, max.diffs = max.diffs, warn = warn) : 289s Argument `max.diffs` must be scalar integer. 289s > try(ses('a', 'b', warn='hello')) # "must be TRUE or FALSE" 289s Error in ses_prep(a = a, b = b, max.diffs = max.diffs, warn = warn) : 289s Argument `warn` must be TRUE or FALSE. 289s > 289s > a <- structure(1, class='diffobj_ogewlhgiadfl2') 289s > try(ses(a, 1)) # "could not be coerced") 289s Error in as.character.diffobj_ogewlhgiadfl2(a) : failure2 289s Error in ses_prep(a = a, b = b, max.diffs = max.diffs, warn = warn) : 289s Argument `a` is not character and could not be coerced to such 289s > try(ses(1, a)) # "could not be coerced" 289s Error in as.character.diffobj_ogewlhgiadfl2(b) : failure2 289s Error in ses_prep(a = a, b = b, max.diffs = max.diffs, warn = warn) : 289s Argument `b` is not character and could not be coerced to such 289s > 289s > # We want to have a test file that fully covers the C code in order to run 289s > # valgrind with just that one. We were unable to isolate simple diffs that 289s > # triggered all the code, but we were able to do it with the below in addition 289s > # to the above. 289s > 289s > # - Repeat tests for full coverage in SES file --------------------------------- 289s > # From test.diffStr.R 289s > # formula display changed 289s > if( 289s + R.Version()$major >= 3 && R.Version()$minor >= "3.1" || 289s + R.Version()$major >= 4) { 289s + rdsf1 <- function(x) 289s + readRDS(file.path("_helper", "objs", "diffStr", sprintf("%s.rds", x))) 289s + all.equal( 289s + as.character( 289s + diffStr(mdl1, mdl2, extra=list(strict.width="wrap"), line.limit=30) 289s + ), 289s + rdsf1(500) 289s + ) 289s + } 289s [1] TRUE 289s > # from testthat.warnings.R 289s > 289s > A3 <- c("a b c", "d e f A B C D", "g h i", "f") 289s > B3 <- c("a b c", "xd e f E Q L S", "g h i", "q") 289s > 289s > diffChr(A3, B3, max.diffs=2) # warn: "Exceeded diff" 289s < A3 > B3 289s @@ 1,4 @@  @@ 1,4 @@  289s a b c a b c 289s < d e f A B C D > xd e f E Q L S 289s < g h i > g h i 289s < f > q 289s Warning message: 289s Exceeded diff limit during diff computation (6 vs. 2 allowed); overall diff is likely not optimal 289s > 289s > # - ses_dat -------------------------------------------------------------------- 289s > 289s > a <- b <- do.call(paste0, expand.grid(LETTERS, LETTERS)) 289s > set.seed(2) 289s > b <- b[-sample(length(b), 100)] 289s > a <- a[-sample(length(b), 100)] 289s > 289s > dat <- ses_dat(a, b) 289s > all.equal(dat[['val']][dat[['op']] != 'Delete'], b) 289s [1] TRUE 289s > all.equal(dat[['val']][dat[['op']] != 'Insert'], a) 289s [1] TRUE 289s > all.equal(a[dat[['id.a']][!is.na(dat[['id.a']])]], a) 289s [1] TRUE 289s > 289s > dat2 <- ses_dat(a, b, extra=FALSE) 289s > all.equal(dat[1:2], dat2) 289s [1] TRUE 289s > all.equal(length(dat2), 2L) 289s [1] TRUE 289s > 289s > try(ses_dat(a, b, extra=NA)) # 'TRUE or FALSE' 289s Error in ses_dat(a, b, extra = NA) : 289s Argument `extra` must be TRUE or FALSE. 289s > 289s > # - encoding agnostic #144 ----------------------------------------------------- 289s > 289s > # h/t @hadley, these are different in string cache, but should compare equal 289s > # as per ?identical 289s > x <- c("fa\xE7ile", "fa\ue7ile") 289s > Encoding(x) <- c("latin1", "UTF-8") 289s > y <- rev(x) 289s > all.equal(diffobj::ses(x, y), character()) 289s [1] TRUE 289s > 289s PASS 289s Begin testing test-style.R 289s 289s R version 4.4.3 (2025-02-28) -- "Trophy Case" 289s Copyright (C) 2025 The R Foundation for Statistical Computing 289s Platform: aarch64-unknown-linux-gnu 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 > NAME <- "style" 289s > source(file.path('_helper', 'init.R')) 289s > 289s > ## - Style Palette ------------------------------------------------------------ 289s > 289s > all.equal( 289s + capture.output(diffobj:::display_ansi_256_styles()), 289s + rdsf(100) 289s + ) 290s [1] TRUE 290s > ## - crayon settings ----------------------------------------------------------- 290s > 290s > # make sure crayon options are appropriately overriden 290s > local({ 290s + old.opt <- options(crayon.enabled=FALSE) 290s + on.exit(options(old.opt)) 290s + print(identical(crayon::green("green"), "green")) 290s + # should have ANSI coloring despite crayon disabled 290s + print( 290s + all.equal( 290s + as.character(diffChr(letters[1:3], LETTERS[1:3])), rdsf(200) 290s + ) 290s + ) 290s + identical(crayon::green("green"), "green") 290s + }) 290s [1] TRUE 290s [1] TRUE 290s [1] TRUE 290s > ## - Palette of Styles --------------------------------------------------------- 290s > 290s > pos <- PaletteOfStyles() 290s > identical( 290s + pos[["ansi256", "light", "rgb"]], 290s + getClassDef("StyleAnsi256LightRgb", package="diffobj", inherits=FALSE) 290s + ) 290s [1] TRUE 290s > all.equal( 290s + capture.output(show(pos)), rdsf(300) 290s + ) 291s [1] TRUE 291s > all.equal( 291s + capture.output(summary(pos)), rdsf(400) 291s + ) 291s [1] TRUE 291s > 291s > pos["ansi256", "light", "yb"] <- list(StyleRaw()) 291s > all.equal( 291s + c(pos["ansi256", "light", "yb"]@data), list(StyleRaw()), 291s + check.environment=FALSE 291s + ) 291s [1] TRUE 291s > all.equal( 291s + pos[["ansi256", "light", "yb"]], StyleRaw(), 291s + check.environment=FALSE 291s + ) 291s [1] TRUE 291s > 291s > ## - Auto Styles --------------------------------------------------------------- 291s > 291s > try(diffChr(letters, LETTERS, style="auto", format="xml")) 291s Error in diffChr(target = letters, current = LETTERS, style = "auto", : 291s Argument `format` must be one of `c("auto", "raw", "ansi8", "ansi256", "html")`. 291s > is( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="auto", brightness="light", 291s + term.colors=256 291s + )@etc@style, 291s + "StyleAnsi256LightYb" 291s + ) 291s [1] TRUE 291s > is( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="auto", brightness="light", 291s + term.colors=8 291s + )@etc@style, 291s + "StyleAnsi8NeutralYb" 291s + ) 291s [1] TRUE 291s > is( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="auto", interactive=FALSE, 291s + term.colors=1 291s + )@etc@style, 291s + "StyleRaw" 291s + ) 291s [1] TRUE 291s > is( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="auto", interactive=TRUE, 291s + term.colors=1 # note pager off by default in tests 291s + )@etc@style, 291s + "StyleRaw" 291s + ) 291s [1] TRUE 291s > is( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="auto", interactive=TRUE, 291s + pager="auto", term.colors=1 291s + )@etc@style, 291s + "StyleHtml" 291s + ) 291s [1] TRUE 291s > is( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="auto", interactive=TRUE, 291s + pager="auto", term.colors=9 291s + )@etc@style, 291s + "StyleAnsi8NeutralYb" 291s + ) 291s [1] TRUE 291s > is( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="auto", interactive=TRUE, 291s + pager="auto", brightness='light', term.colors=500 291s + )@etc@style, 291s + "StyleAnsi256LightYb" 291s + ) 291s [1] TRUE 291s > is( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="html", interactive=TRUE, 291s + pager="auto", color.mode=c("rgb", ansi8="yb") 291s + )@etc@style, 291s + "StyleHtmlLightRgb" 291s + ) 291s [1] TRUE 291s > is( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="html", interactive=TRUE, 291s + pager="auto", color.mode=c("rgb", html="yb") 291s + )@etc@style, 291s + "StyleHtmlLightYb" 291s + ) 291s [1] TRUE 291s > ## - Palette Params ------------------------------------------------------------ 291s > 291s > all.equal( 291s + as.character( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="ansi256", 291s + brightness=c("light", ansi256="dark") 291s + ) ), 291s + rdsf(500) 291s + ) 291s [1] TRUE 291s > all.equal( 291s + as.character( 291s + diffChr( 291s + letters, LETTERS, style="auto", format="ansi256", brightness=c("dark") 291s + ) ), 291s + rdsf(500) 291s + ) 291s [1] TRUE 291s > ## - Style Validation ---------------------------------------------------------- 291s > 291s > s.f <- StyleFuns() 291s > isTRUE(validObject(s.f)) 291s [1] TRUE 291s > s.f@word.insert <- function(x, y) NULL 291s > try(validObject(s.f)) # word.insert 291s Error in validObject(s.f) : 291s invalid class "StyleFuns" object: Argument `word.insert` may not have non-default formals argument after the first. 291s > 291s > try(diffChr(1,2, format='html', style=list(scale=1:3))) 291s Error in diffChr(target = 1, current = 2, format = "html", style = list(scale = 1:3)) : 291s Unable to instantiate `Style` object: Argument `scale` must be TRUE or FALSE 291s > try(diffChr(1,2, format='html', style=list(html.output="a"))) 291s Error in diffChr(target = 1, current = 2, format = "html", style = list(html.output = "a")) : 291s Unable to instantiate `Style` object: Argument `html.output` must be in `c("auto", "page", "diff.only", "diff.w.style")`. 291s > 291s > ## - Pallette w/ Objs ---------------------------------------------------------- 291s > 291s > pal <- PaletteOfStyles() 291s > pal["raw", "neutral", "rgb"] <- list(new(pal[["raw", "neutral", "rgb"]])) 291s > 291s > suppressWarnings( 291s + withCallingHandlers( 291s + invisible(diffChr( 291s + letters, LETTERS, format="raw", brightness="neutral", color.mode="rgb", 291s + palette.of.styles=pal, style=list(na.sub="NA") 291s + )), 291s + warning=function(e) writeLines(conditionMessage(e)) 291s + ) 291s + ) 291s Extra `style` arguments cannot be applied because selected object `palette.of.styles` is a `Style` instance rather than a `Style` "classRepresentation". See documentation for the `style` parameter for details. 291s > ## - External Files ------------------------------------------------------------ 291s > 291s > isTRUE(file_test("-f", diffobj_css())) 291s [1] TRUE 291s > isTRUE(file_test("-f", diffobj_js())) 291s [1] TRUE 291s > 291s PASS 291s Begin testing test-subset.R 291s 291s R version 4.4.3 (2025-02-28) -- "Trophy Case" 291s Copyright (C) 2025 The R Foundation for Statistical Computing 291s Platform: aarch64-unknown-linux-gnu 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 > NAME <- "subset" 291s > source(file.path('_helper', 'init.R')) 291s > 291s > A <- B <- letters[1:5] 291s > B[2] <- "B" 291s > B[6] <- "F" 291s > 291s > # - subset --------------------------------------------------------------------- 291s > 291s > local({ 291s + old.opt <- options(diffobj.style=StyleRaw()) 291s + on.exit(options(old.opt)) 291s + a0 <- all.equal( 291s + c(as.character(diffChr(A, B)[1:3])), 291s + c("< A > B ", "@@ 1,5 @@ @@ 1,6 @@ ", " a a ") 291s + 291s + ) 291s + a <- all.equal( 291s + c(as.character(diffChr(A, B)[1])), c(as.character(head(diffChr(A, B), 1))) 291s + ) 291s + b <- all.equal( 291s + c(as.character(diffChr(A, B)[7:8])), c(as.character(tail(diffChr(A, B), 2))) 291s + ) 291s + c(a0, a, b) 291s + }) 292s [1] TRUE TRUE TRUE 292s > # - subset errors -------------------------------------------------------------- 292s > 292s > diff <- diffChr(A, B) 292s > try(diff[NA_real_]) # "contain NAs or both positive" 292s Error in .local(x, i, ...) : 292s `i` may not contain NAs or both positive and negative indices 292s > try(diff[c(-1, 1)]) # "contain NAs or both positive" 292s Error in .local(x, i, ...) : 292s `i` may not contain NAs or both positive and negative indices 292s > try(head(diff, 1, 2)) # "does not support arguments" 292s Error in .local(x, ...) : 292s This method does not support arguments other than `x` or `n` 292s > try(head(diff, NA)) # "must be integer" 292s Error in .local(x, ...) : `n` must be integer(1L) and not NA 292s > try(head(diff, 1:3)) # "must be integer" 292s Error in .local(x, ...) : `n` must be integer(1L) and not NA 292s > try(tail(diff, 1:3)) # "must be integer" 292s Error in .local(x, ...) : `n` must be integer(1L) and not NA 292s > try(tail(diff, 1, 2)) # "does not support arguments" 292s Error in .local(x, ...) : 292s This method does not support arguments other than `x` or `n` 292s > 292s > 292s > 292s PASS 292s Begin testing test-summary.R 292s 292s R version 4.4.3 (2025-02-28) -- "Trophy Case" 292s Copyright (C) 2025 The R Foundation for Statistical Computing 292s Platform: aarch64-unknown-linux-gnu 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 > NAME <- "summary" 292s > source(file.path('_helper', 'init.R')) 292s > 292s > # Note, atomic prints happen in different test file 292s > 292s > # - Any ------------------------------------------------------------------------ 292s > 292s > identical(any(diffPrint(iris.s, iris.s)), FALSE) 292s [1] TRUE 292s > res <- any(diffPrint(iris.s, iris.c)) # warn: "objects are NOT" 292s Warning message: 292s No visible differences, but objects are NOT `all.equal`. 292s > identical(res, FALSE) 292s [1] TRUE 292s > isTRUE(any(diffPrint(iris.s, iris.4))) 292s [1] TRUE 292s > 292s > 292s > # - Small Summary -------------------------------------------------------------- 292s > 292s > all.equal( 292s + as.character(summary(diffPrint(iris.s, iris.4))), rdsf(100) 292s + ) 292s [1] TRUE 292s > all.equal( 292s + as.character(summary(diffPrint(iris.s, iris.2))), rdsf(200) 292s + ) 292s [1] TRUE 292s > all.equal( 292s + as.character(summary(diffPrint(iris.s, iris.3))), rdsf(300) 292s + ) 292s [1] TRUE 292s > all.equal( 292s + as.character(summary(diffPrint(iris.s, iris.c))), rdsf(400) 292s + ) 292s [1] TRUE 292s > # All equal 292s > 292s > all.equal( 292s + as.character(summary(diffChr(letters, letters))), rdsf(450) 292s + ) 292s [1] TRUE 292s > 292s > # - Big Summary ---------------------------------------------------------------- 292s > 292s > # Make sure we test summary reduction, wrapping 292s > 292s > all.equal( 292s + as.character(summary(diffChr(chr.7, chr.8))), rdsf(500) 292s + ) 292s [1] TRUE 292s > all.equal( 292s + as.character(summary(diffChr(chr.7, chr.8), scale.threshold=1)), rdsf(600) 292s + ) 293s [1] TRUE 293s > all.equal( 293s + as.character(summary(diffChr(chr.7, chr.8), scale.threshold=0)), rdsf(700) 293s + ) 293s [1] TRUE 293s > # Force truncation of summary 293s > all.equal( 293s + as.character( 293s + summary(diffChr(chr.7, chr.8), scale.threshold=0, max.lines=2) 293s + ), 293s + rdsf(800) 293s + ) 293s [1] TRUE 293s > 293s > # - Show ----------------------------------------------------------------------- 293s > 293s > isTRUE( 293s + paste0(capture.output(summary(diffChr(chr.7, chr.8))), collapse="\n") == 293s + as.character(summary(diffChr(chr.7, chr.8))) 293s + ) 293s [1] TRUE 293s > 293s > # - HTML summary --------------------------------------------------------------- 293s > 293s > all.equal( 293s + as.character( 293s + summary( 293s + diffPrint( 293s + iris.s, iris.4, format="html", style=list(html.output="page") 293s + ) ) ), 293s + rdsf(900) 293s + ) 293s [1] TRUE 293s > 293s > # - errors --------------------------------------------------------------------- 293s > 293s > diff <- diffChr("hello green world", "hello red world") 293s > try(summary(diff, max.lines=0)) # "strictly positive" 293s Error in .local(object, ...) : 293s Argument `max.lines` must be integer(1L) and strictly positive 293s > try(summary(diff, width=1:3)) # "integer\\(1L\\)" 293s Error in .local(object, ...) : 293s Argument `width` must be integer(1L) and positive 293s > try(summary(diff, scale.threshold=5)) # "between 0 and 1" 293s Error in .local(object, ...) : 293s Argument `scale.threshold` must be numeric(1L) between 0 and 1 293s > 293s > # - width wrap ----------------------------------------------------------------- 293s > 293s > diff <- diffChr("hello green world", "hello red world", format='raw') 293s > all.equal(capture.output(show(summary(diff, width=5))), txtf(100)) 293s [1] TRUE 293s > 293s > 293s PASS 293s Begin testing test-text.R 293s 293s R version 4.4.3 (2025-02-28) -- "Trophy Case" 293s Copyright (C) 2025 The R Foundation for Statistical Computing 293s Platform: aarch64-unknown-linux-gnu 293s 293s R is free software and comes with ABSOLUTELY NO WARRANTY. 293s You are welcome to redistribute it under certain conditions. 293s Type 'license()' or 'licence()' for distribution details. 293s 293s R is a collaborative project with many contributors. 293s Type 'contributors()' for more information and 293s 'citation()' on how to cite R or R packages in publications. 293s 293s Type 'demo()' for some demos, 'help()' for on-line help, or 293s 'help.start()' for an HTML browser interface to help. 293s Type 'q()' to quit R. 293s 293s > NAME <- "text" 293s > source(file.path('_helper', 'init.R')) 294s > 294s > # - simple wrap 294s > 294s > txt1 <- c( 294s + "humpty dumpty sat on a wall and had a big fall", 294s + "humpty sat on a wall and dumped a big fall" 294s + ) 294s > res1 <- diffobj:::wrap(txt1, 10, TRUE, sgr.supported=TRUE) 294s > 294s > identical( 294s + gsub(" *$", "", vapply(res1, paste0, character(1L), collapse="")), txt1 294s + ) 294s [1] TRUE 294s > all.equal(lapply(res1, nchar), list(rep(10L, 5L), rep(10L, 5L))) 294s [1] TRUE 294s > 294s > txt2 <- "hello world!" 294s > identical( 294s + unlist(diffobj:::wrap(txt2, nchar(txt2), TRUE, sgr.supported=TRUE)), 294s + txt2 294s + ) 294s [1] TRUE 294s > identical( 294s + paste0( 294s + unlist(diffobj:::wrap(txt2, nchar(txt2) / 2, TRUE, sgr.supported=TRUE)), 294s + collapse="" 294s + ), 294s + txt2 294s + ) 294s [1] TRUE 294s > 294s > # - wrap with escape sequences 294s > 294s > txt3 <- c( 294s + paste0( 294s + "humpty dumpty ", crayon::style("sat on a wall", "red"), 294s + " and had a big fall", 294s + crayon::style( 294s + crayon::style( 294s + "humpty sat on a wall and dumped a big fall", 294s + "green" 294s + ), 294s + "bgRed" 294s + ), "woohoo" 294s + ), 294s + paste0( 294s + crayon::style("hello ", "inverse"), "beautiful ", 294s + crayon::style("world", "blue") 294s + ) 294s + ) 294s > res3 <- diffobj:::wrap(txt3, 10, TRUE, sgr.supported=TRUE) 294s > 294s > identical( 294s + crayon::strip_style( 294s + gsub(" *$", "", vapply(res3, paste0, character(1L), collapse="")) 294s + ), 294s + crayon::strip_style(txt3) 294s + ) 294s [1] TRUE 294s > all.equal( 294s + lapply(res3, crayon::col_nchar), 294s + list(rep(10L, 10L), rep(10L, 3L)) 294s + ) 294s [1] TRUE 294s > 294s > # - strip hz whitespace 294s > 294s > options(crayon.enabled=FALSE) 294s > all.equal( 294s + diffobj:::strip_hz_control("a\tb", stops=4L, sgr.supported=TRUE), "a b") 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_hz_control("ab\t", stops=4L, sgr.supported=TRUE), "ab ") 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_hz_control("a\tb\t", stops=4L, sgr.supported=TRUE), "a b ") 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_hz_control("\ta\tb\t", stops=4L, sgr.supported=TRUE), 294s + " a b " 294s + ) 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_hz_control("\ta\tb\t", stops=c(2L, 4L), sgr.supported=TRUE), 294s + " a b " 294s + ) 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_hz_control( 294s + c("ab\t", "\ta\tb\t"), sgr.supported=TRUE, stops=4L 294s + ), 294s + c("ab ", " a b ") 294s + ) 294s [1] TRUE 294s > # recall that nchar("\033") == 1 294s > all.equal( 294s + diffobj:::strip_hz_control( 294s + "\033[31ma\t\033[39mhello\tb", stops=10L, sgr.supported=FALSE 294s + ), 294s + "\033[31ma \033[39mhello b" 294s + ) 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_hz_control( 294s + "\033[31ma\t\033[39mhello\tb", stops=10L, sgr.supported=TRUE 294s + ), 294s + "\033[31ma\033[39m \033[31m\033[39mhello \033[31m\033[39mb" 294s + ) 294s [1] TRUE 294s > # carriage returns 294s > 294s > all.equal( 294s + diffobj:::strip_hz_control("hellothere\rHELLO", sgr.supported=TRUE), 294s + "HELLOthere" 294s + ) 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_hz_control( 294s + c("hellothere\rHELLO", "000\r12345678\rabcdef\rABC"), sgr.supported=TRUE 294s + ), 294s + c("HELLOthere", "ABCdef78") 294s + ) 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_hz_control("hellothere\r", sgr.supported=TRUE), 294s + "hellothere" 294s + ) 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_hz_control(character(), sgr.supported=TRUE), character() 294s + ) 294s [1] TRUE 294s > # newlines 294s > 294s > all.equal( 294s + diffobj:::strip_hz_control(c("a", "", "\n", "a\nb"), sgr.supported=TRUE), 294s + c("a", "", "", "a", "b") 294s + ) 294s [1] TRUE 294s > # with colors 294s > 294s > options(crayon.enabled=TRUE) 294s > 294s > all.equal( 294s + crayon::strip_style( 294s + diffobj:::strip_hz_control( 294s + "\033[31ma\t\033[39mhello\tb", stops=10L, sgr.supported=TRUE) 294s + ), 294s + "a hello b" 294s + ) 294s [1] TRUE 294s > test.chr <- paste0( 294s + crayon::red(crayon::`%+%`("000", crayon::bgBlue("\r12345678"))), 294s + "\rabcdef", crayon::green("\rABC") 294s + ) 294s > # visually inspect these 294s > 294s > # cat("\n") 294s > # cat(test.chr, sep="\n") 294s > res <- diffobj:::strip_hz_control(test.chr, sgr.supported=TRUE) 294s > # cat(res, sep="\n") 294s > all.equal(crayon::strip_style(res), "ABCdef78") 294s [1] TRUE 294s > 294s > # Mix tabs and carriage returns, visual inspection assumes terminal tab 294s > # stops at 8L; note output not exactly the same since it seems tabs don't 294s > # ovewrite prior screen state whereas spaces do 294s > 294s > test.chr.2 <- paste0( 294s + crayon::red(crayon::`%+%`("000", crayon::bgBlue("\r123\t456\t78"))), 294s + "\rab\tcd f", crayon::green("\rABC") 294s + ) 294s > # cat("\n") 294s > # cat(test.chr.2, sep="\n") 294s > res.2 <- diffobj:::strip_hz_control(test.chr.2, stops=8L, sgr.supported=TRUE) 294s > # cat(res.2, sep="\n") 294s > 294s > all.equal(crayon::strip_style(res.2), "ABC cd f 78") 294s [1] TRUE 294s > 294s > # multi line 294s > 294s > test.chr.3 <- c(test.chr, test.chr.2) 294s > # cat("\n") 294s > res.3 <- diffobj:::strip_hz_control(test.chr.3, sgr.supported=TRUE) 294s > # cat(res.3, sep="\n") 294s > # cat(test.chr.3, sep="\n") 294s > 294s > all.equal(crayon::strip_style(res.3), c("ABCdef78", "ABC cd f 78")) 294s [1] TRUE 294s > 294s > 294s PASS 294s Begin testing test-trim.R 294s 294s R version 4.4.3 (2025-02-28) -- "Trophy Case" 294s Copyright (C) 2025 The R Foundation for Statistical Computing 294s Platform: aarch64-unknown-linux-gnu 294s 294s R is free software and comes with ABSOLUTELY NO WARRANTY. 294s You are welcome to redistribute it under certain conditions. 294s Type 'license()' or 'licence()' for distribution details. 294s 294s R is a collaborative project with many contributors. 294s Type 'contributors()' for more information and 294s 'citation()' on how to cite R or R packages in publications. 294s 294s Type 'demo()' for some demos, 'help()' for on-line help, or 294s 'help.start()' for an HTML browser interface to help. 294s Type 'q()' to quit R. 294s 294s > NAME <- "trim" 294s > source(file.path('_helper', 'init.R')) 294s > 294s > .mx.base <- matrix( 294s + c( 294s + "averylongwordthatcanlahblah", "causeasinglewidecolumnblah", 294s + "matrixtowrapseveraltimes", "inarrowscreen", "onceuponatime", 294s + "agreenduckflew", "overthemountains", "inalongofantelopes", 294s + "ineedthreemore", "entriesactually", "nowonlytwomore", "iwaswrongearlier" 294s + ), 294s + nrow=3, ncol=4 294s + ) 294s > 294s > # - Atomic --------------------------------------------------------------------- 294s > 294s > set.seed(1) 294s > x <- capture.output(1:50) 294s > y <- capture.output(factor(sample(letters, 50, replace=TRUE))) 294s > 294s > all.equal( 294s + diffobj:::strip_atomic_rh(x), 294s + c(" 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25", "26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50") 294s + ) 294s [1] TRUE 294s > all.equal( 294s + diffobj:::strip_atomic_rh(y), 294s + c("g j o x f x y r q b f e r j u m s z j u y f q d g k a j w i m p m e v r u c", "s k v q u o n u a m t s", "Levels: a b c d e f g i j k m n o p q r s t u v w x y z") 294s + ) 294s [1] TRUE 294s > all.equal(diffobj:::which_atomic_rh(capture.output(1:5)), 1) 294s [1] TRUE 294s > 294s > all.equal(as.character(diffPrint(1:3, 2:6, trim=FALSE)), rdsf(50)) 294s [1] TRUE 294s > 294s > # bad headers 294s > 294s > bh <- c("[1] a b c", "[4] d e f", "[5] h") 294s > all.equal(diffobj:::which_atomic_rh(bh), integer()) 294s [1] TRUE 294s > 294s > # - Matrix 294s > mx1 <- mx2 <- matrix(1:3, 3) 294s > all.equal( 294s + diffobj:::strip_matrix_rh(capture.output(mx1), dimnames(mx1)), 294s + c(" [,1]", " 1", " 2", " 3") 294s + ) 294s [1] TRUE 294s > # shouldn't strip headers from attributes 294s > attr(mx2, "blah") <- matrix(1:2, 2) 294s > all.equal( 294s + diffobj:::strip_matrix_rh(capture.output(mx2), dimnames(mx2)), 294s + c(" [,1]", " 1", " 2", " 3", "attr(,\"blah\")", " [,1]", "[1,] 1", "[2,] 2") 294s + ) 294s [1] TRUE 294s > # Matrices that wrap 294s > 294s > mx3 <- mx4 <- mx5 <- mx6 <- .mx.base 294s > old.opt <- options(width=30) 294s > 294s > all.equal( 294s + diffobj:::strip_matrix_rh(capture.output(mx3), dimnames(mx3)), 294s + c(" [,1] ", "\"averylongwordthatcanlahblah\"", "\"causeasinglewidecolumnblah\" ", "\"matrixtowrapseveraltimes\" ", " [,2] ", "\"inarrowscreen\" ", "\"onceuponatime\" ", "\"agreenduckflew\"", " [,3] ", "\"overthemountains\" ", "\"inalongofantelopes\"", "\"ineedthreemore\" ", " [,4] ", "\"entriesactually\" ", "\"nowonlytwomore\" ", "\"iwaswrongearlier\"") 294s + ) 294s [1] TRUE 294s > # Add rownames; should no longer strip 294s > 294s > rownames(mx4) <- 2:4 294s > all.equal( 294s + diffobj:::strip_matrix_rh(capture.output(mx4), dimnames(mx4)), 294s + capture.output(mx4) 294s + ) 294s [1] TRUE 294s > # Attributes don't have stuff stripped 294s > 294s > attr(mx6, "blah") <- letters[1:15] 294s > 294s > all.equal( 294s + diffobj:::strip_matrix_rh(capture.output(mx6), dimnames(mx6)), 294s + c(" [,1] ", "\"averylongwordthatcanlahblah\"", "\"causeasinglewidecolumnblah\" ", "\"matrixtowrapseveraltimes\" ", " [,2] ", "\"inarrowscreen\" ", "\"onceuponatime\" ", "\"agreenduckflew\"", " [,3] ", "\"overthemountains\" ", "\"inalongofantelopes\"", "\"ineedthreemore\" ", " [,4] ", "\"entriesactually\" ", "\"nowonlytwomore\" ", "\"iwaswrongearlier\"", "attr(,\"blah\")", " [1] \"a\" \"b\" \"c\" \"d\" \"e\" \"f\"", " [7] \"g\" \"h\" \"i\" \"j\" \"k\" \"l\"", "[13] \"m\" \"n\" \"o\"") 294s + ) 294s [1] TRUE 294s > # Single row matrix 294s > 294s > all.equal( 294s + diffobj:::which_matrix_rh(capture.output(matrix(1:2, nrow=1)), NULL), 2 294s + ) 294s [1] TRUE 294s > options(width=80) 294s > 294s > # - Table ---------------------------------------------------------------------- 294s > 294s > old.opt <- options(width=30) 294s > 294s > # Data frames 294s > 294s > df1 <- as.data.frame(.mx.base) 294s > all.equal( 294s + diffobj:::strip_table_rh(capture.output(df1)), 294s + c(" V1", "averylongwordthatcanlahblah", " causeasinglewidecolumnblah", " matrixtowrapseveraltimes", " V2", " inarrowscreen", " onceuponatime", "agreenduckflew", " V3", " overthemountains", "inalongofantelopes", " ineedthreemore", " V4", " entriesactually", " nowonlytwomore", "iwaswrongearlier") 294s + ) 294s [1] TRUE 294s > df2 <- df1[c(2, 1, 3), ] 294s > 294s > all.equal( 294s + diffobj:::strip_table_rh(capture.output(df2)), 294s + capture.output(df2) 294s + ) 294s [1] TRUE 294s > # Rownames that start from one and sequential, should get stripped; also, 294s > # colon allowed 294s > 294s > df3 <- df1 294s > rownames(df3) <- paste0(1:3, ":") 294s > all.equal( 294s + diffobj:::strip_table_rh(capture.output(df3)), 294s + c(" V1", "averylongwordthatcanlahblah", " causeasinglewidecolumnblah", " matrixtowrapseveraltimes", " V2", " inarrowscreen", " onceuponatime", "agreenduckflew", " V3", " overthemountains", "inalongofantelopes", " ineedthreemore", " V4", " entriesactually", " nowonlytwomore", "iwaswrongearlier") 294s + ) 294s [1] TRUE 294s > # Try ts 294s > 294s > all.equal( 294s + diffobj:::strip_table_rh(capture.output(USAccDeaths)), 294s + capture.output(USAccDeaths) 294s + ) 294s [1] TRUE 294s > # Set it so first year is 1 294s > 294s > USAD2 <- USAccDeaths 294s > tsp(USAD2)[1:2] <- tsp(USAD2)[1:2] - 1972 294s > 294s > all.equal( 294s + diffobj:::strip_table_rh(capture.output(USAD2)), 294s + c(" Jan Feb Mar Apr", " 9007 8106 8928 9137", " 7750 6981 8038 8422", " 8162 7306 8124 7870", " 7717 7461 7767 7925", " 7792 6957 7726 8106", " 7836 6892 7791 8192", " May Jun Jul Aug", "10017 10826 11317 10744", " 8714 9512 10120 9823", " 9387 9556 10093 9620", " 8623 8945 10078 9179", " 8890 9299 10625 9302", " 9115 9434 10484 9827", " Sep Oct Nov Dec", " 9713 9938 9161 8927", " 8743 9129 8710 8680", " 8285 8466 8160 8034", " 8037 8488 7874 8647", " 8314 8850 8265 8796", " 9110 9070 8633 9240") 294s + ) 294s [1] TRUE 294s > # single row data frame 294s > 294s > all.equal(c(diffobj:::which_table_rh(capture.output(data.frame(1, 2)))), 2) 294s [1] TRUE 294s > 294s > # More than 10 rows data.frame 294s > 294s > all.equal( 294s + c(diffobj:::which_table_rh(capture.output(head(Puromycin, 10L)))), 294s + 2:11 294s + ) 294s [1] TRUE 294s > # Bad wrap 294s > 294s > bw <- c( 294s + " bad", "1 123", "2 456", 294s + " dab", "1 123", "2 456", 294s + " abd", "1 123") 294s > 294s > all.equal( 294s + diffobj:::wtr_help(bw, diffobj:::.pat.tbl), 294s + c(2L, 3L, 5L, 6L) 294s + ) 294s [1] TRUE 294s > 294s > # - Array 294s > a <- array(1:6, c(3, 1, 2)) 294s > a.c <- capture.output(a) 294s > all.equal( 294s + diffobj:::strip_array_rh(a.c, dimnames(a)), 294s + c(", , 1", "", " [,1]", " 1", " 2", " 3", "", ", , 2", "", " [,1]", " 4", " 5", " 6", "") 294s + ) 294s [1] TRUE 294s > viz_sarh <- function(capt, obj) 294s + cbind( 294s + capt, 294s + as.integer( 294s + seq_along(capt) %in% diffobj:::which_array_rh(capt, dimnames(obj)) 294s + ) 294s + ) 294s > a1 <- a2 <- a3 <- a4 <- array( 294s + "averylongphrasethatwillforcemytwocolumnarraytowrapblahblah", c(2, 2, 2) 294s + ) 294s > ca1 <- capture.output(a1) 294s > viz_sarh(ca1, a1) 294s capt 294s [1,] ", , 1" 294s [2,] "" 294s [3,] " [,1] " 294s [4,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [5,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [6,] " [,2] " 294s [7,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [8,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [9,] "" 294s [10,] ", , 2" 294s [11,] "" 294s [12,] " [,1] " 294s [13,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [14,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [15,] " [,2] " 294s [16,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [17,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [18,] "" 294s 294s [1,] "0" 294s [2,] "0" 294s [3,] "0" 294s [4,] "1" 294s [5,] "1" 294s [6,] "0" 294s [7,] "1" 294s [8,] "1" 294s [9,] "0" 294s [10,] "0" 294s [11,] "0" 294s [12,] "0" 294s [13,] "1" 294s [14,] "1" 294s [15,] "0" 294s [16,] "1" 294s [17,] "1" 294s [18,] "0" 294s > all.equal( 294s + diffobj:::which_array_rh(ca1, dimnames(a1)), 294s + c(4L, 5L, 7L, 8L, 13L, 14L, 16L, 17L) 294s + ) 294s [1] TRUE 294s > colnames(a2) <- c("ABC", "DEF") 294s > ca2 <- capture.output(a2) 294s > viz_sarh(ca2, a2) 294s capt 294s [1,] ", , 1" 294s [2,] "" 294s [3,] " ABC " 294s [4,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [5,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [6,] " DEF " 294s [7,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [8,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [9,] "" 294s [10,] ", , 2" 294s [11,] "" 294s [12,] " ABC " 294s [13,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [14,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [15,] " DEF " 294s [16,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [17,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [18,] "" 294s 294s [1,] "0" 294s [2,] "0" 294s [3,] "0" 294s [4,] "1" 294s [5,] "1" 294s [6,] "0" 294s [7,] "1" 294s [8,] "1" 294s [9,] "0" 294s [10,] "0" 294s [11,] "0" 294s [12,] "0" 294s [13,] "1" 294s [14,] "1" 294s [15,] "0" 294s [16,] "1" 294s [17,] "1" 294s [18,] "0" 294s > all.equal( 294s + diffobj:::which_array_rh(ca2, dimnames(a2)), 294s + c(4L, 5L, 7L, 8L, 13L, 14L, 16L, 17L) 294s + ) 294s [1] TRUE 294s > rownames(a3) <- 1:2 294s > ca3 <- capture.output(a3) 294s > viz_sarh(ca3, a3) 294s capt 294s [1,] ", , 1" 294s [2,] "" 294s [3,] " [,1] " 294s [4,] "1 \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [5,] "2 \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [6,] " [,2] " 294s [7,] "1 \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [8,] "2 \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [9,] "" 294s [10,] ", , 2" 294s [11,] "" 294s [12,] " [,1] " 294s [13,] "1 \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [14,] "2 \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [15,] " [,2] " 294s [16,] "1 \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [17,] "2 \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [18,] "" 294s 294s [1,] "0" 294s [2,] "0" 294s [3,] "0" 294s [4,] "0" 294s [5,] "0" 294s [6,] "0" 294s [7,] "0" 294s [8,] "0" 294s [9,] "0" 294s [10,] "0" 294s [11,] "0" 294s [12,] "0" 294s [13,] "0" 294s [14,] "0" 294s [15,] "0" 294s [16,] "0" 294s [17,] "0" 294s [18,] "0" 294s > all.equal(diffobj:::which_array_rh(ca3, dimnames(a3)), integer(0L)) 294s [1] TRUE 294s > 294s > attr(a4, "blahblah") <- matrix(1:4, 2) 294s > ca4 <- capture.output(a4) 294s > viz_sarh(ca4, a4) 294s capt 294s [1,] ", , 1" 294s [2,] "" 294s [3,] " [,1] " 294s [4,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [5,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [6,] " [,2] " 294s [7,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [8,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [9,] "" 294s [10,] ", , 2" 294s [11,] "" 294s [12,] " [,1] " 294s [13,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [14,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [15,] " [,2] " 294s [16,] "[1,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [17,] "[2,] \"averylongphrasethatwillforcemytwocolumnarraytowrapblahblah\"" 294s [18,] "" 294s [19,] "attr(,\"blahblah\")" 294s [20,] " [,1] [,2]" 294s [21,] "[1,] 1 3" 294s [22,] "[2,] 2 4" 294s 294s [1,] "0" 294s [2,] "0" 294s [3,] "0" 294s [4,] "1" 294s [5,] "1" 294s [6,] "0" 294s [7,] "1" 294s [8,] "1" 294s [9,] "0" 294s [10,] "0" 294s [11,] "0" 294s [12,] "0" 294s [13,] "1" 294s [14,] "1" 294s [15,] "0" 294s [16,] "1" 294s [17,] "1" 294s [18,] "0" 294s [19,] "0" 294s [20,] "0" 294s [21,] "0" 294s [22,] "0" 294s > all.equal( 294s + diffobj:::which_array_rh(ca4, dimnames(a4)), 294s + c(4L, 5L, 7L, 8L, 13L, 14L, 16L, 17L) 294s + ) 294s [1] TRUE 294s > options(width=80) 294s > 294s > # - List ----------------------------------------------------------------------- 294s > 294s > l1 <- list( 294s + matrix(1:4, 2), b=list(abc=c(letters, LETTERS), list(matrix(4:1, 2))) 294s + ) 294s > l1.c <- capture.output(l1) 294s > all.equal( 294s + diffobj:::strip_list_rh(l1.c, l1), 294s + c("[[1]]", " [,1] [,2]", " 1 3", " 2 4", "", "$b", "$b$abc", "\"a\" \"b\" \"c\" \"d\" \"e\" \"f\" \"g\" \"h\" \"i\" \"j\" \"k\" \"l\" \"m\" \"n\" \"o\" \"p\" \"q\" \"r\" \"s\"", "\"t\" \"u\" \"v\" \"w\" \"x\" \"y\" \"z\" \"A\" \"B\" \"C\" \"D\" \"E\" \"F\" \"G\" \"H\" \"I\" \"J\" \"K\" \"L\"", "\"M\" \"N\" \"O\" \"P\" \"Q\" \"R\" \"S\" \"T\" \"U\" \"V\" \"W\" \"X\" \"Y\" \"Z\"", "", "$b[[2]]", "$b[[2]][[1]]", " [,1] [,2]", " 4 2", " 3 1", "", "", "") 294s + ) 294s [1] TRUE 294s > 294s > a <- list(list()) 294s > aa <- list(list(), "a") 294s > b <- list("a", list()) 294s > c <- list(list("a"), "b") 294s > d <- list("a", "b", "c") 294s > 294s > identical( 294s + diffobj:::strip_list_rh(capture.output(d), d), 294s + c("[[1]]", "\"a\"", "", "[[2]]", "\"b\"", "", "[[3]]", "\"c\"", "") 294s + ) 294s [1] TRUE 294s > identical( 294s + diffobj:::strip_list_rh(capture.output(a), a), 294s + c("[[1]]", "list()", "") 294s + ) 294s [1] TRUE 294s > identical( 294s + diffobj:::strip_list_rh(capture.output(aa), aa), 294s + c("[[1]]", "list()", "", "[[2]]", "\"a\"", "") 294s + ) 294s [1] TRUE 294s > identical( 294s + diffobj:::strip_list_rh(capture.output(b), b), 294s + c("[[1]]", "\"a\"", "", "[[2]]", "list()", "") 294s + ) 294s [1] TRUE 294s > identical( 294s + diffobj:::strip_list_rh(capture.output(c), c), 294s + c("[[1]]", "[[1]][[1]]", "\"a\"", "", "", "[[2]]", "\"b\"", "") 294s + ) 294s [1] TRUE 294s > 294s > # - custom trim fun ------------------------------------------------------------ 294s > 294s > a <- matrix(100:102) 294s > b <- matrix(101:103) 294s > fun1 <- function(x, y) cbind(rep(1L, 4), rep(5L, 4)) 294s > 294s > all.equal(as.character(diffPrint(a, b, trim=fun1)), rdsf(100)) 294s [1] TRUE 294s > if(getRversion() >= "3.2.2") { 294s + capture.output( 294s + trim.err <- as.character(diffPrint(a, b, trim=function(x, y) stop("boom"))), 294s + type="message" 294s + ) # warn: "If you did not specify a `trim`" 294s + all.equal(trim.err, rdsf(200)) 294s + } 294s [1] TRUE 294s Warning message: 294s In apply_trim(current, cur.capt.p, etc@trim) : 294s `trim*` method produced an error when attempting to trim ; If you did not specify a `trim` function or define custom `trim*` methods contact maintainer (see `?trim`). Proceeding without trimming. 294s > # purposefully bad trim fun 294s > 294s > try( # "method return value must be a two " 294s + diffPrint(1:100, 2:100, trim=function(x, y) TRUE) 294s + ) 294s Error in apply_trim(target, tar.capt.p, etc@trim) : 294s `trim*` method return value must be a two column integer matrix with no NAs; If you did not specify a `trim` function or define custom `trim*` methods contact maintainer (see `?trim`). Proceeding without trimming. 294s > try( # "Invalid trim function" 294s + diffobj:::apply_trim(letters, letters, function(x) TRUE), 294s + ) 294s Error in diffobj:::apply_trim(letters, letters, function(x) TRUE) : 294s Invalid trim function (does not have at least two arguments). If you did not customize the trim function contact maintainer; see `?trim` 294s > try(# "must have as many rows" 294s + diffobj:::apply_trim( 294s + letters, letters, function(x, y) cbind(1:25, 1:25) 294s + ) 294s + ) 294s Error in diffobj:::apply_trim(letters, letters, function(x, y) cbind(1:25, : 294s `trim*` method output matrix must have as many rows as object character representation has elements; If you did not specify a `trim` function or define custom `trim*` methods contact maintainer (see `?trim`). Proceeding without trimming. 294s > 294s > # - s4 ------------------------------------------------------------------------- 294s > 294s > setClass("DOTrimTest", slots=c(a="numeric", b="list", c="matrix")) 294s > obj <- new( 294s + "DOTrimTest", a=1:40, b=list(a=1, letters, NULL), c=matrix(1:9, 3) 294s + ) 294s > all.equal( 294s + diffobj:::strip_s4_rh(capture.output(obj), obj), rdsf(300) 294s + ) 294s [1] TRUE 294s > 294s > 294s PASS 294s Begin testing test-warnings.R 294s 294s R version 4.4.3 (2025-02-28) -- "Trophy Case" 294s Copyright (C) 2025 The R Foundation for Statistical Computing 294s Platform: aarch64-unknown-linux-gnu 294s 294s R is free software and comes with ABSOLUTELY NO WARRANTY. 294s You are welcome to redistribute it under certain conditions. 294s Type 'license()' or 'licence()' for distribution details. 294s 294s R is a collaborative project with many contributors. 294s Type 'contributors()' for more information and 294s 'citation()' on how to cite R or R packages in publications. 294s 294s Type 'demo()' for some demos, 'help()' for on-line help, or 294s 'help.start()' for an HTML browser interface to help. 294s Type 'q()' to quit R. 294s 295s > NAME <- "warnings" 295s > source(file.path('_helper', 'init.R')) 295s > 295s > # tests designed to produce warnings 295s > 295s > # - Extra args for `str` ------------------------------------------------------- 295s > 295s > a <- "hello" 295s > b <- "goodbye" 295s > 295s > invisible(diffStr(a, b, extra=list(comp.str="^"))) # "Specifying" 295s Warning message: 295s In capt_fun(target, current, etc = etc.proc, err = err, extra) : 295s Specifying `comp.str` may cause `str` output level folding to be incorrect 295s > invisible(diffStr(a, b, extra=list(comp="^"))) # "Specifying") 295s Warning messages: 295s 1: In match.call(definition, call, expand.dots, envir) : 295s partial argument match of 'comp' to 'comp.str' 295s 2: In capt_fun(target, current, etc = etc.proc, err = err, extra) : 295s Specifying `comp.str` may cause `str` output level folding to be incorrect 295s > invisible(diffStr(a, b, extra=list(indent.str="..."))) # "Specifying" 295s Warning message: 295s In capt_fun(target, current, etc = etc.proc, err = err, extra) : 295s Specifying `indent.str` may cause `str` output level folding to be incorrect 295s > invisible(diffStr(a, b, extra=list(indent="..."))) # "Specifying" 295s Warning messages: 295s 1: In match.call(definition, call, expand.dots, envir) : 295s partial argument match of 'indent' to 'indent.str' 295s 2: In capt_fun(target, current, etc = etc.proc, err = err, extra) : 295s Specifying `indent.str` may cause `str` output level folding to be incorrect 295s > 295s > # - Max diffs ------------------------------------------------------------------ 295s > 295s > # Max limit warnings work properly; these are not fully fleshed out 295s > 295s > A3 <- c("a b c", "d e f A B C D", "g h i", "f") 295s > B3 <- c("a b c", "xd e f E Q L S", "g h i", "q") 295s > 295s > invisible(diffChr(A3, B3, max.diffs=2)) # warn: "Exceeded diff" 295s Warning message: 295s Exceeded diff limit during diff computation (6 vs. 2 allowed); overall diff is likely not optimal 295s > 295s > # - Overriden formals ---------------------------------------------------------- 295s > 295s > # warn "Provided `style` argument will override the provided `format` argument" 295s > invisible(diffChr(letters, LETTERS, style=StyleRaw(), format="ansi8")) 295s Warning message: 295s In diffChr(target = letters, current = LETTERS, style = StyleRaw(), : 295s Provided `style` argument will override the provided `format` argument 295s > 295s > # warn: "Provided `style` .* `format` and `color.mode` arguments" 295s > invisible( 295s + diffChr(letters, LETTERS, style=StyleRaw(), format="ansi8", color.mode="rgb") 295s + ) 295s Warning message: 295s In diffChr(target = letters, current = LETTERS, style = StyleRaw(), : 295s Provided `style` argument will override the provided `format` and `color.mode` arguments. 295s > 295s > 295s PASS 295s autopkgtest [15:28:38]: test run-unit-test: -----------------------] 296s run-unit-test PASS 296s autopkgtest [15:28:39]: test run-unit-test: - - - - - - - - - - results - - - - - - - - - - 296s autopkgtest [15:28:39]: test pkg-r-autopkgtest: preparing testbed 476s autopkgtest [15:31:39]: testbed dpkg architecture: arm64 477s autopkgtest [15:31:40]: testbed apt version: 2.9.33 477s autopkgtest [15:31:40]: @@@@@@@@@@@@@@@@@@@@ test bed setup 477s autopkgtest [15:31:40]: testbed release detected to be: plucky 478s autopkgtest [15:31:41]: updating testbed package index (apt update) 479s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed InRelease [126 kB] 479s Hit:2 http://ftpmaster.internal/ubuntu plucky InRelease 479s Hit:3 http://ftpmaster.internal/ubuntu plucky-updates InRelease 479s Hit:4 http://ftpmaster.internal/ubuntu plucky-security InRelease 479s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse Sources [15.8 kB] 479s Get:6 http://ftpmaster.internal/ubuntu plucky-proposed/universe Sources [404 kB] 480s Get:7 http://ftpmaster.internal/ubuntu plucky-proposed/main Sources [101 kB] 480s Get:8 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 Packages [78.2 kB] 480s Get:9 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 c-n-f Metadata [1976 B] 480s Get:10 http://ftpmaster.internal/ubuntu plucky-proposed/restricted arm64 c-n-f Metadata [116 B] 480s Get:11 http://ftpmaster.internal/ubuntu plucky-proposed/universe arm64 Packages [346 kB] 480s Get:12 http://ftpmaster.internal/ubuntu plucky-proposed/universe arm64 c-n-f Metadata [15.8 kB] 480s Get:13 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse arm64 Packages [4948 B] 480s Get:14 http://ftpmaster.internal/ubuntu plucky-proposed/multiverse arm64 c-n-f Metadata [572 B] 481s Fetched 1094 kB in 2s (590 kB/s) 482s Reading package lists... 482s + lsb_release --codename --short 482s + RELEASE=plucky 482s + cat 482s + [ plucky != trusty ] 482s + DEBIAN_FRONTEND=noninteractive eatmydata apt-get -y --allow-downgrades -o Dpkg::Options::=--force-confnew dist-upgrade 482s Reading package lists... 483s Building dependency tree... 483s Reading state information... 483s Calculating upgrade... 484s Calculating upgrade... 484s The following packages will be upgraded: 484s python3-jinja2 strace 484s 2 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 484s Need to get 608 kB of archives. 484s After this operation, 11.3 kB of additional disk space will be used. 484s Get:1 http://ftpmaster.internal/ubuntu plucky/main arm64 strace arm64 6.13+ds-1ubuntu1 [499 kB] 485s Get:2 http://ftpmaster.internal/ubuntu plucky/main arm64 python3-jinja2 all 3.1.5-2ubuntu1 [109 kB] 486s Fetched 608 kB in 1s (640 kB/s) 486s (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 ... 117701 files and directories currently installed.) 486s Preparing to unpack .../strace_6.13+ds-1ubuntu1_arm64.deb ... 486s Unpacking strace (6.13+ds-1ubuntu1) over (6.11-0ubuntu1) ... 486s Preparing to unpack .../python3-jinja2_3.1.5-2ubuntu1_all.deb ... 486s Unpacking python3-jinja2 (3.1.5-2ubuntu1) over (3.1.5-2) ... 486s Setting up python3-jinja2 (3.1.5-2ubuntu1) ... 487s Setting up strace (6.13+ds-1ubuntu1) ... 487s Processing triggers for man-db (2.13.0-1) ... 488s + rm /etc/apt/preferences.d/force-downgrade-to-release.pref 488s + /usr/lib/apt/apt-helper analyze-pattern ?true 488s + uname -r 488s + sed s/\./\\./g 488s + running_kernel_pattern=^linux-.*6\.14\.0-10-generic.* 488s + + tail -n+2 488s apt list ?obsolete 488s + cut -d/ -f1 488s + grep -v ^linux-.*6\.14\.0-10-generic.* 488s + obsolete_pkgs=linux-headers-6.11.0-8-generic 488s linux-headers-6.11.0-8 488s linux-image-6.11.0-8-generic 488s linux-modules-6.11.0-8-generic 488s linux-tools-6.11.0-8-generic 488s linux-tools-6.11.0-8 488s + DEBIAN_FRONTEND=noninteractive eatmydata apt-get -y purge --autoremove linux-headers-6.11.0-8-generic linux-headers-6.11.0-8 linux-image-6.11.0-8-generic linux-modules-6.11.0-8-generic linux-tools-6.11.0-8-generic linux-tools-6.11.0-8 488s Reading package lists... 489s Building dependency tree... 489s Reading state information... 490s Solving dependencies... 491s The following packages will be REMOVED: 491s libnsl2* libpython3.12-minimal* libpython3.12-stdlib* libpython3.12t64* 491s libunwind8* linux-headers-6.11.0-8* linux-headers-6.11.0-8-generic* 491s linux-image-6.11.0-8-generic* linux-modules-6.11.0-8-generic* 491s linux-tools-6.11.0-8* linux-tools-6.11.0-8-generic* 492s 0 upgraded, 0 newly installed, 11 to remove and 5 not upgraded. 492s After this operation, 267 MB disk space will be freed. 492s (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 ... 117701 files and directories currently installed.) 492s Removing linux-tools-6.11.0-8-generic (6.11.0-8.8) ... 492s Removing linux-tools-6.11.0-8 (6.11.0-8.8) ... 492s Removing libpython3.12t64:arm64 (3.12.9-1) ... 492s Removing libpython3.12-stdlib:arm64 (3.12.9-1) ... 492s Removing libnsl2:arm64 (1.3.0-3build3) ... 492s Removing libpython3.12-minimal:arm64 (3.12.9-1) ... 492s Removing libunwind8:arm64 (1.6.2-3.1) ... 492s Removing linux-headers-6.11.0-8-generic (6.11.0-8.8) ... 493s Removing linux-headers-6.11.0-8 (6.11.0-8.8) ... 495s Removing linux-image-6.11.0-8-generic (6.11.0-8.8) ... 495s I: /boot/vmlinuz.old is now a symlink to vmlinuz-6.14.0-10-generic 495s I: /boot/initrd.img.old is now a symlink to initrd.img-6.14.0-10-generic 495s /etc/kernel/postrm.d/initramfs-tools: 495s update-initramfs: Deleting /boot/initrd.img-6.11.0-8-generic 495s /etc/kernel/postrm.d/zz-flash-kernel: 495s flash-kernel: Kernel 6.11.0-8-generic has been removed. 495s flash-kernel: A higher version (6.14.0-10-generic) is still installed, no reflashing required. 496s /etc/kernel/postrm.d/zz-update-grub: 496s Sourcing file `/etc/default/grub' 496s Sourcing file `/etc/default/grub.d/50-cloudimg-settings.cfg' 496s Generating grub configuration file ... 496s Found linux image: /boot/vmlinuz-6.14.0-10-generic 496s Found initrd image: /boot/initrd.img-6.14.0-10-generic 496s Warning: os-prober will not be executed to detect other bootable partitions. 496s Systems on them will not be added to the GRUB boot configuration. 496s Check GRUB_DISABLE_OS_PROBER documentation entry. 496s Adding boot menu entry for UEFI Firmware Settings ... 496s done 496s Removing linux-modules-6.11.0-8-generic (6.11.0-8.8) ... 497s Processing triggers for libc-bin (2.41-1ubuntu1) ... 497s (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 ... 81650 files and directories currently installed.) 497s Purging configuration files for linux-image-6.11.0-8-generic (6.11.0-8.8) ... 497s Purging configuration files for libpython3.12-minimal:arm64 (3.12.9-1) ... 497s Purging configuration files for linux-modules-6.11.0-8-generic (6.11.0-8.8) ... 497s + grep -q trusty /etc/lsb-release 497s + [ ! -d /usr/share/doc/unattended-upgrades ] 497s + [ ! -d /usr/share/doc/lxd ] 497s + [ ! -d /usr/share/doc/lxd-client ] 497s + [ ! -d /usr/share/doc/snapd ] 497s + type iptables 497s + cat 497s + chmod 755 /etc/rc.local 497s + . /etc/rc.local 497s + iptables -w -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu 497s + iptables -A OUTPUT -d 10.255.255.1/32 -p tcp -j DROP 497s + iptables -A OUTPUT -d 10.255.255.2/32 -p tcp -j DROP 497s + uname -m 497s + [ aarch64 = ppc64le ] 497s + [ -d /run/systemd/system ] 497s + systemd-detect-virt --quiet --vm 497s + mkdir -p /etc/systemd/system/systemd-random-seed.service.d/ 497s + cat 497s + grep -q lz4 /etc/initramfs-tools/initramfs.conf 497s + echo COMPRESS=lz4 497s autopkgtest [15:32:00]: upgrading testbed (apt dist-upgrade and autopurge) 498s Reading package lists... 498s Building dependency tree... 498s Reading state information... 499s Calculating upgrade...Starting pkgProblemResolver with broken count: 0 499s Starting 2 pkgProblemResolver with broken count: 0 499s Done 500s Entering ResolveByKeep 500s 500s Calculating upgrade... 501s The following packages will be upgraded: 501s libc-bin libc-dev-bin libc6 libc6-dev locales 501s 5 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 501s Need to get 9530 kB of archives. 501s After this operation, 0 B of additional disk space will be used. 501s Get:1 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libc6-dev arm64 2.41-1ubuntu2 [1750 kB] 503s Get:2 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libc-dev-bin arm64 2.41-1ubuntu2 [24.0 kB] 503s Get:3 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libc6 arm64 2.41-1ubuntu2 [2910 kB] 506s Get:4 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 libc-bin arm64 2.41-1ubuntu2 [600 kB] 507s Get:5 http://ftpmaster.internal/ubuntu plucky-proposed/main arm64 locales all 2.41-1ubuntu2 [4246 kB] 512s Preconfiguring packages ... 512s Fetched 9530 kB in 11s (869 kB/s) 513s (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 ... 81647 files and directories currently installed.) 513s Preparing to unpack .../libc6-dev_2.41-1ubuntu2_arm64.deb ... 513s Unpacking libc6-dev:arm64 (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 513s Preparing to unpack .../libc-dev-bin_2.41-1ubuntu2_arm64.deb ... 513s Unpacking libc-dev-bin (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 513s Preparing to unpack .../libc6_2.41-1ubuntu2_arm64.deb ... 513s Unpacking libc6:arm64 (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 513s Setting up libc6:arm64 (2.41-1ubuntu2) ... 513s (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 ... 81647 files and directories currently installed.) 513s Preparing to unpack .../libc-bin_2.41-1ubuntu2_arm64.deb ... 513s Unpacking libc-bin (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 513s Setting up libc-bin (2.41-1ubuntu2) ... 514s (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 ... 81647 files and directories currently installed.) 514s Preparing to unpack .../locales_2.41-1ubuntu2_all.deb ... 514s Unpacking locales (2.41-1ubuntu2) over (2.41-1ubuntu1) ... 514s Setting up locales (2.41-1ubuntu2) ... 515s Generating locales (this might take a while)... 517s en_US.UTF-8... done 517s Generation complete. 517s Setting up libc-dev-bin (2.41-1ubuntu2) ... 517s Setting up libc6-dev:arm64 (2.41-1ubuntu2) ... 517s Processing triggers for man-db (2.13.0-1) ... 518s Processing triggers for systemd (257.3-1ubuntu3) ... 519s Reading package lists... 519s Building dependency tree... 519s Reading state information... 519s Starting pkgProblemResolver with broken count: 0 520s Starting 2 pkgProblemResolver with broken count: 0 520s Done 520s Solving dependencies... 521s 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 521s autopkgtest [15:32:24]: rebooting testbed after setup commands that affected boot 549s Reading package lists... 550s Building dependency tree... 550s Reading state information... 550s Starting pkgProblemResolver with broken count: 0 550s Starting 2 pkgProblemResolver with broken count: 0 550s Done 551s The following NEW packages will be installed: 551s build-essential cpp cpp-14 cpp-14-aarch64-linux-gnu cpp-aarch64-linux-gnu 551s dctrl-tools fontconfig fontconfig-config fonts-dejavu-core fonts-dejavu-mono 551s fonts-font-awesome fonts-glyphicons-halflings fonts-mathjax g++ g++-14 551s g++-14-aarch64-linux-gnu g++-aarch64-linux-gnu gcc gcc-14 551s gcc-14-aarch64-linux-gnu gcc-aarch64-linux-gnu gfortran gfortran-14 551s gfortran-14-aarch64-linux-gnu gfortran-aarch64-linux-gnu icu-devtools 551s javascript-common libasan8 libblas-dev libblas3 libbz2-dev libcairo2 551s libcc1-0 libdatrie1 libdeflate-dev libdeflate0 libfontconfig1 libgcc-14-dev 551s libgfortran-14-dev libgfortran5 libgomp1 libgraphite2-3 libharfbuzz0b 551s libhwasan0 libice6 libicu-dev libisl23 libitm1 libjbig0 libjpeg-dev 551s libjpeg-turbo8 libjpeg-turbo8-dev libjpeg8 libjpeg8-dev libjs-bootstrap 551s libjs-bootstrap4 libjs-d3 libjs-es5-shim libjs-highlight.js libjs-jquery 551s libjs-jquery-datatables libjs-jquery-selectize.js libjs-jquery-ui libjs-json 551s libjs-mathjax libjs-microplugin.js libjs-modernizr libjs-popper.js 551s libjs-prettify libjs-sifter.js libjs-twitter-bootstrap-datepicker 551s liblapack-dev liblapack3 liblerc4 liblsan0 liblua5.4-0 liblzma-dev libmpc3 551s libncurses-dev libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0 551s libpaper-utils libpaper2 libpcre2-16-0 libpcre2-32-0 libpcre2-dev 551s libpcre2-posix3 libpixman-1-0 libpkgconf3 libpng-dev libreadline-dev 551s libsharpyuv0 libsm6 libstdc++-14-dev libtcl8.6 libthai-data libthai0 551s libtiff6 libtirpc-dev libtk8.6 libtsan2 libubsan1 libwebp7 libxcb-render0 551s libxcb-shm0 libxft2 libxrender1 libxss1 libxt6t64 littler 551s node-bootstrap-sass node-html5shiv node-normalize.css pandoc pandoc-data 551s pkg-r-autopkgtest pkgconf pkgconf-bin r-base-core r-base-dev 551s r-cran-base64enc r-cran-bslib r-cran-cachem r-cran-cli r-cran-commonmark 551s r-cran-crayon r-cran-diffobj r-cran-digest r-cran-evaluate r-cran-fastmap 551s r-cran-fontawesome r-cran-fs r-cran-glue r-cran-highr r-cran-htmltools 551s r-cran-httpuv r-cran-jquerylib r-cran-jsonlite r-cran-knitr r-cran-later 551s r-cran-lifecycle r-cran-littler r-cran-magrittr r-cran-memoise r-cran-mime 551s r-cran-pkgkitten r-cran-promises r-cran-r6 r-cran-rappdirs r-cran-rcpp 551s r-cran-rlang r-cran-rmarkdown r-cran-sass r-cran-shiny r-cran-sourcetools 551s r-cran-tinytex r-cran-withr r-cran-xfun r-cran-xtable r-cran-yaml unzip 551s x11-common xdg-utils zip zlib1g-dev 551s 0 upgraded, 166 newly installed, 0 to remove and 0 not upgraded. 551s Need to get 194 MB of archives. 551s After this operation, 749 MB of additional disk space will be used. 551s Get:1 http://ftpmaster.internal/ubuntu plucky/main arm64 libisl23 arm64 0.27-1 [676 kB] 552s Get:2 http://ftpmaster.internal/ubuntu plucky/main arm64 libmpc3 arm64 1.3.1-1build2 [56.8 kB] 552s Get:3 http://ftpmaster.internal/ubuntu plucky/main arm64 cpp-14-aarch64-linux-gnu arm64 14.2.0-17ubuntu3 [10.6 MB] 564s Get:4 http://ftpmaster.internal/ubuntu plucky/main arm64 cpp-14 arm64 14.2.0-17ubuntu3 [1028 B] 564s Get:5 http://ftpmaster.internal/ubuntu plucky/main arm64 cpp-aarch64-linux-gnu arm64 4:14.2.0-1ubuntu1 [5558 B] 564s Get:6 http://ftpmaster.internal/ubuntu plucky/main arm64 cpp arm64 4:14.2.0-1ubuntu1 [22.4 kB] 564s Get:7 http://ftpmaster.internal/ubuntu plucky/main arm64 libcc1-0 arm64 15-20250222-0ubuntu1 [44.2 kB] 564s Get:8 http://ftpmaster.internal/ubuntu plucky/main arm64 libgomp1 arm64 15-20250222-0ubuntu1 [146 kB] 564s Get:9 http://ftpmaster.internal/ubuntu plucky/main arm64 libitm1 arm64 15-20250222-0ubuntu1 [28.0 kB] 564s Get:10 http://ftpmaster.internal/ubuntu plucky/main arm64 libasan8 arm64 15-20250222-0ubuntu1 [2924 kB] 568s Get:11 http://ftpmaster.internal/ubuntu plucky/main arm64 liblsan0 arm64 15-20250222-0ubuntu1 [1319 kB] 569s Get:12 http://ftpmaster.internal/ubuntu plucky/main arm64 libtsan2 arm64 15-20250222-0ubuntu1 [2694 kB] 572s Get:13 http://ftpmaster.internal/ubuntu plucky/main arm64 libubsan1 arm64 15-20250222-0ubuntu1 [1178 kB] 573s Get:14 http://ftpmaster.internal/ubuntu plucky/main arm64 libhwasan0 arm64 15-20250222-0ubuntu1 [1642 kB] 575s Get:15 http://ftpmaster.internal/ubuntu plucky/main arm64 libgcc-14-dev arm64 14.2.0-17ubuntu3 [2593 kB] 578s Get:16 http://ftpmaster.internal/ubuntu plucky/main arm64 gcc-14-aarch64-linux-gnu arm64 14.2.0-17ubuntu3 [20.9 MB] 601s Get:17 http://ftpmaster.internal/ubuntu plucky/main arm64 gcc-14 arm64 14.2.0-17ubuntu3 [526 kB] 602s Get:18 http://ftpmaster.internal/ubuntu plucky/main arm64 gcc-aarch64-linux-gnu arm64 4:14.2.0-1ubuntu1 [1200 B] 602s Get:19 http://ftpmaster.internal/ubuntu plucky/main arm64 gcc arm64 4:14.2.0-1ubuntu1 [4998 B] 602s Get:20 http://ftpmaster.internal/ubuntu plucky/main arm64 libstdc++-14-dev arm64 14.2.0-17ubuntu3 [2499 kB] 605s Get:21 http://ftpmaster.internal/ubuntu plucky/main arm64 g++-14-aarch64-linux-gnu arm64 14.2.0-17ubuntu3 [12.1 MB] 618s Get:22 http://ftpmaster.internal/ubuntu plucky/main arm64 g++-14 arm64 14.2.0-17ubuntu3 [21.8 kB] 618s Get:23 http://ftpmaster.internal/ubuntu plucky/main arm64 g++-aarch64-linux-gnu arm64 4:14.2.0-1ubuntu1 [956 B] 618s Get:24 http://ftpmaster.internal/ubuntu plucky/main arm64 g++ arm64 4:14.2.0-1ubuntu1 [1080 B] 618s Get:25 http://ftpmaster.internal/ubuntu plucky/main arm64 build-essential arm64 12.10ubuntu1 [4932 B] 618s Get:26 http://ftpmaster.internal/ubuntu plucky/main arm64 dctrl-tools arm64 2.24-3build3 [103 kB] 618s Get:27 http://ftpmaster.internal/ubuntu plucky/main arm64 fonts-dejavu-mono all 2.37-8 [502 kB] 619s Get:28 http://ftpmaster.internal/ubuntu plucky/main arm64 fonts-dejavu-core all 2.37-8 [835 kB] 620s Get:29 http://ftpmaster.internal/ubuntu plucky/main arm64 fontconfig-config arm64 2.15.0-2ubuntu1 [37.5 kB] 620s Get:30 http://ftpmaster.internal/ubuntu plucky/main arm64 libfontconfig1 arm64 2.15.0-2ubuntu1 [144 kB] 620s Get:31 http://ftpmaster.internal/ubuntu plucky/main arm64 fontconfig arm64 2.15.0-2ubuntu1 [191 kB] 621s Get:32 http://ftpmaster.internal/ubuntu plucky/main arm64 fonts-font-awesome all 5.0.10+really4.7.0~dfsg-4.1 [516 kB] 621s Get:33 http://ftpmaster.internal/ubuntu plucky/universe arm64 fonts-glyphicons-halflings all 1.009~3.4.1+dfsg-3 [118 kB] 621s Get:34 http://ftpmaster.internal/ubuntu plucky/main arm64 fonts-mathjax all 2.7.9+dfsg-1 [2208 kB] 624s Get:35 http://ftpmaster.internal/ubuntu plucky/main arm64 libgfortran5 arm64 15-20250222-0ubuntu1 [444 kB] 624s Get:36 http://ftpmaster.internal/ubuntu plucky/main arm64 libgfortran-14-dev arm64 14.2.0-17ubuntu3 [498 kB] 625s Get:37 http://ftpmaster.internal/ubuntu plucky/main arm64 gfortran-14-aarch64-linux-gnu arm64 14.2.0-17ubuntu3 [11.4 MB] 638s Get:38 http://ftpmaster.internal/ubuntu plucky/main arm64 gfortran-14 arm64 14.2.0-17ubuntu3 [13.6 kB] 638s Get:39 http://ftpmaster.internal/ubuntu plucky/main arm64 gfortran-aarch64-linux-gnu arm64 4:14.2.0-1ubuntu1 [1022 B] 638s Get:40 http://ftpmaster.internal/ubuntu plucky/main arm64 gfortran arm64 4:14.2.0-1ubuntu1 [1166 B] 638s Get:41 http://ftpmaster.internal/ubuntu plucky/main arm64 icu-devtools arm64 76.1-1ubuntu2 [213 kB] 639s Get:42 http://ftpmaster.internal/ubuntu plucky/main arm64 javascript-common all 12 [5216 B] 639s Get:43 http://ftpmaster.internal/ubuntu plucky/main arm64 libblas3 arm64 3.12.1-2 [161 kB] 639s Get:44 http://ftpmaster.internal/ubuntu plucky/main arm64 libblas-dev arm64 3.12.1-2 [126 kB] 639s Get:45 http://ftpmaster.internal/ubuntu plucky/main arm64 libbz2-dev arm64 1.0.8-6 [36.1 kB] 639s Get:46 http://ftpmaster.internal/ubuntu plucky/main arm64 libpixman-1-0 arm64 0.44.0-3 [197 kB] 639s Get:47 http://ftpmaster.internal/ubuntu plucky/main arm64 libxcb-render0 arm64 1.17.0-2 [16.6 kB] 639s Get:48 http://ftpmaster.internal/ubuntu plucky/main arm64 libxcb-shm0 arm64 1.17.0-2 [5884 B] 639s Get:49 http://ftpmaster.internal/ubuntu plucky/main arm64 libxrender1 arm64 1:0.9.10-1.1build1 [18.8 kB] 639s Get:50 http://ftpmaster.internal/ubuntu plucky/main arm64 libcairo2 arm64 1.18.2-2 [560 kB] 640s Get:51 http://ftpmaster.internal/ubuntu plucky/main arm64 libdatrie1 arm64 0.2.13-3build1 [19.2 kB] 640s Get:52 http://ftpmaster.internal/ubuntu plucky/main arm64 libdeflate0 arm64 1.23-1 [46.2 kB] 640s Get:53 http://ftpmaster.internal/ubuntu plucky/main arm64 libdeflate-dev arm64 1.23-1 [53.7 kB] 640s Get:54 http://ftpmaster.internal/ubuntu plucky/main arm64 libgraphite2-3 arm64 1.3.14-2ubuntu1 [70.6 kB] 640s Get:55 http://ftpmaster.internal/ubuntu plucky/main arm64 libharfbuzz0b arm64 10.2.0-1 [490 kB] 641s Get:56 http://ftpmaster.internal/ubuntu plucky/main arm64 x11-common all 1:7.7+23ubuntu3 [21.7 kB] 641s Get:57 http://ftpmaster.internal/ubuntu plucky/main arm64 libice6 arm64 2:1.1.1-1 [42.3 kB] 641s Get:58 http://ftpmaster.internal/ubuntu plucky/main arm64 libicu-dev arm64 76.1-1ubuntu2 [12.2 MB] 655s Get:59 http://ftpmaster.internal/ubuntu plucky/main arm64 libjpeg-turbo8 arm64 2.1.5-3ubuntu2 [165 kB] 655s Get:60 http://ftpmaster.internal/ubuntu plucky/main arm64 libjpeg-turbo8-dev arm64 2.1.5-3ubuntu2 [306 kB] 655s Get:61 http://ftpmaster.internal/ubuntu plucky/main arm64 libjpeg8 arm64 8c-2ubuntu11 [2148 B] 655s Get:62 http://ftpmaster.internal/ubuntu plucky/main arm64 libjpeg8-dev arm64 8c-2ubuntu11 [1484 B] 655s Get:63 http://ftpmaster.internal/ubuntu plucky/main arm64 libjpeg-dev arm64 8c-2ubuntu11 [1482 B] 655s Get:64 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-bootstrap all 3.4.1+dfsg-3 [129 kB] 655s Get:65 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-popper.js all 1.16.1+ds-6 [54.1 kB] 655s Get:66 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-bootstrap4 all 4.6.1+dfsg1-4 [537 kB] 656s Get:67 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-d3 all 3.5.17-4 [132 kB] 656s Get:68 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-es5-shim all 4.6.7-2 [39.8 kB] 656s Get:69 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-highlight.js all 9.18.5+dfsg1-2 [385 kB] 657s Get:70 http://ftpmaster.internal/ubuntu plucky/main arm64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [328 kB] 657s Get:71 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-jquery-datatables all 1.11.5+dfsg-2 [146 kB] 657s Get:72 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-sifter.js all 0.6.0+dfsg-3 [12.6 kB] 657s Get:73 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-microplugin.js all 0.0.3+dfsg-1.1 [3712 B] 657s Get:74 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-jquery-selectize.js all 0.12.6+dfsg-1.1 [51.0 kB] 657s Get:75 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-jquery-ui all 1.13.2+dfsg-1 [252 kB] 657s Get:76 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-json all 0~20221030+~1.0.8-1 [20.6 kB] 657s Get:77 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-prettify all 2015.12.04+dfsg-1.1 [39.3 kB] 657s Get:78 http://ftpmaster.internal/ubuntu plucky/main arm64 liblapack3 arm64 3.12.1-2 [2307 kB] 660s Get:79 http://ftpmaster.internal/ubuntu plucky/main arm64 liblapack-dev arm64 3.12.1-2 [4439 kB] 665s Get:80 http://ftpmaster.internal/ubuntu plucky/main arm64 liblerc4 arm64 4.0.0+ds-5ubuntu1 [167 kB] 665s Get:81 http://ftpmaster.internal/ubuntu plucky/main arm64 liblua5.4-0 arm64 5.4.7-1 [158 kB] 665s Get:82 http://ftpmaster.internal/ubuntu plucky/main arm64 libncurses-dev arm64 6.5+20250216-2 [389 kB] 666s Get:83 http://ftpmaster.internal/ubuntu plucky/main arm64 libthai-data all 0.1.29-2build1 [158 kB] 666s Get:84 http://ftpmaster.internal/ubuntu plucky/main arm64 libthai0 arm64 0.1.29-2build1 [18.2 kB] 666s Get:85 http://ftpmaster.internal/ubuntu plucky/main arm64 libpango-1.0-0 arm64 1.56.2-1 [237 kB] 666s Get:86 http://ftpmaster.internal/ubuntu plucky/main arm64 libpangoft2-1.0-0 arm64 1.56.2-1 [49.5 kB] 666s Get:87 http://ftpmaster.internal/ubuntu plucky/main arm64 libpangocairo-1.0-0 arm64 1.56.2-1 [27.6 kB] 666s Get:88 http://ftpmaster.internal/ubuntu plucky/main arm64 libpaper2 arm64 2.2.5-0.3 [17.3 kB] 666s Get:89 http://ftpmaster.internal/ubuntu plucky/main arm64 libpaper-utils arm64 2.2.5-0.3 [15.4 kB] 666s Get:90 http://ftpmaster.internal/ubuntu plucky/main arm64 libpcre2-16-0 arm64 10.45-1 [222 kB] 667s Get:91 http://ftpmaster.internal/ubuntu plucky/main arm64 libpcre2-32-0 arm64 10.45-1 [210 kB] 667s Get:92 http://ftpmaster.internal/ubuntu plucky/main arm64 libpcre2-posix3 arm64 10.45-1 [7084 B] 667s Get:93 http://ftpmaster.internal/ubuntu plucky/main arm64 libpcre2-dev arm64 10.45-1 [768 kB] 668s Get:94 http://ftpmaster.internal/ubuntu plucky/main arm64 libpkgconf3 arm64 1.8.1-4 [31.4 kB] 668s Get:95 http://ftpmaster.internal/ubuntu plucky/main arm64 zlib1g-dev arm64 1:1.3.dfsg+really1.3.1-1ubuntu1 [894 kB] 669s Get:96 http://ftpmaster.internal/ubuntu plucky/main arm64 libpng-dev arm64 1.6.47-1 [269 kB] 669s Get:97 http://ftpmaster.internal/ubuntu plucky/main arm64 libreadline-dev arm64 8.2-6 [179 kB] 669s Get:98 http://ftpmaster.internal/ubuntu plucky/main arm64 libsharpyuv0 arm64 1.5.0-0.1 [16.9 kB] 669s Get:99 http://ftpmaster.internal/ubuntu plucky/main arm64 libsm6 arm64 2:1.2.4-1 [16.4 kB] 669s Get:100 http://ftpmaster.internal/ubuntu plucky/main arm64 libtcl8.6 arm64 8.6.16+dfsg-1 [987 kB] 671s Get:101 http://ftpmaster.internal/ubuntu plucky/main arm64 libjbig0 arm64 2.1-6.1ubuntu2 [29.3 kB] 671s Get:102 http://ftpmaster.internal/ubuntu plucky/main arm64 libwebp7 arm64 1.5.0-0.1 [194 kB] 671s Get:103 http://ftpmaster.internal/ubuntu plucky/main arm64 libtiff6 arm64 4.5.1+git230720-4ubuntu4 [193 kB] 671s Get:104 http://ftpmaster.internal/ubuntu plucky/main arm64 libxft2 arm64 2.3.6-1build1 [44.1 kB] 671s Get:105 http://ftpmaster.internal/ubuntu plucky/main arm64 libxss1 arm64 1:1.2.3-1build3 [7244 B] 671s Get:106 http://ftpmaster.internal/ubuntu plucky/main arm64 libtk8.6 arm64 8.6.16-1 [776 kB] 672s Get:107 http://ftpmaster.internal/ubuntu plucky/main arm64 libxt6t64 arm64 1:1.2.1-1.2build1 [168 kB] 672s Get:108 http://ftpmaster.internal/ubuntu plucky/main arm64 zip arm64 3.0-14ubuntu2 [173 kB] 673s Get:109 http://ftpmaster.internal/ubuntu plucky/main arm64 unzip arm64 6.0-28ubuntu6 [178 kB] 673s Get:110 http://ftpmaster.internal/ubuntu plucky/main arm64 xdg-utils all 1.2.1-2ubuntu1 [66.0 kB] 673s Get:111 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-base-core arm64 4.4.3-1 [28.4 MB] 704s Get:112 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-littler arm64 0.3.20-2 [96.1 kB] 704s Get:113 http://ftpmaster.internal/ubuntu plucky/universe arm64 littler all 0.3.20-2 [2554 B] 704s Get:114 http://ftpmaster.internal/ubuntu plucky/universe arm64 node-bootstrap-sass all 3.4.3-2 [187 kB] 704s Get:115 http://ftpmaster.internal/ubuntu plucky/universe arm64 node-html5shiv all 3.7.3+dfsg-5 [13.5 kB] 704s Get:116 http://ftpmaster.internal/ubuntu plucky/universe arm64 node-normalize.css all 8.0.1-5 [10.8 kB] 704s Get:117 http://ftpmaster.internal/ubuntu plucky/universe arm64 pandoc-data all 3.1.11.1-3build1 [78.8 kB] 704s Get:118 http://ftpmaster.internal/ubuntu plucky/universe arm64 pandoc arm64 3.1.11.1+ds-2 [28.1 MB] 740s Get:119 http://ftpmaster.internal/ubuntu plucky/main arm64 liblzma-dev arm64 5.6.4-1 [180 kB] 740s Get:120 http://ftpmaster.internal/ubuntu plucky/main arm64 pkgconf-bin arm64 1.8.1-4 [20.9 kB] 740s Get:121 http://ftpmaster.internal/ubuntu plucky/main arm64 pkgconf arm64 1.8.1-4 [16.7 kB] 740s Get:122 http://ftpmaster.internal/ubuntu plucky/main arm64 libtirpc-dev arm64 1.3.4+ds-1.3 [201 kB] 740s Get:123 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-base-dev all 4.4.3-1 [4176 B] 740s Get:124 http://ftpmaster.internal/ubuntu plucky/universe arm64 pkg-r-autopkgtest all 20231212ubuntu1 [6448 B] 740s Get:125 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-base64enc arm64 0.1-3-3 [27.4 kB] 740s Get:126 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-rlang arm64 1.1.5-1 [1707 kB] 742s Get:127 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-fastmap arm64 1.2.0-1 [70.6 kB] 743s Get:128 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-cachem arm64 1.1.0-1 [74.1 kB] 743s Get:129 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-digest arm64 0.6.37-1 [200 kB] 743s Get:130 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-htmltools arm64 0.5.8.1-1 [373 kB] 743s Get:131 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-jquerylib all 0.1.4+dfsg-4 [13.5 kB] 743s Get:132 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-jsonlite arm64 1.9.1+dfsg-1 [445 kB] 744s Get:133 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-cli arm64 3.6.4-1 [1374 kB] 745s Get:134 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-glue arm64 1.8.0-1 [163 kB] 746s Get:135 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-lifecycle all 1.0.4+dfsg-1 [110 kB] 746s Get:136 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-memoise all 2.0.1-1 [53.9 kB] 746s Get:137 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-mime arm64 0.12-2 [35.8 kB] 746s Get:138 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-fs arm64 1.6.5+dfsg-1 [244 kB] 746s Get:139 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-r6 all 2.6.1-1 [101 kB] 746s Get:140 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-rappdirs arm64 0.3.3-1 [47.5 kB] 746s Get:141 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-sass arm64 0.4.9+dfsg-1 [957 kB] 747s Get:142 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-bslib all 0.8.0+dfsg-1 [4294 kB] 752s Get:143 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-commonmark arm64 1.9.2-2 [129 kB] 752s Get:144 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-crayon all 1.5.3-1 [165 kB] 753s Get:145 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-diffobj arm64 0.3.5-1 [1116 kB] 754s Get:146 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-evaluate all 1.0.3-1 [114 kB] 754s Get:147 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-fontawesome all 0.5.3-1 [1331 kB] 755s Get:148 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-xfun arm64 0.51+dfsg-1 [573 kB] 756s Get:149 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-highr all 0.11+dfsg-1 [38.5 kB] 756s Get:150 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-pkgkitten all 0.2.4-1 [27.2 kB] 756s Get:151 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-rcpp arm64 1.0.14-1 [1978 kB] 758s Get:152 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-later arm64 1.4.1+dfsg-1 [141 kB] 758s Get:153 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-magrittr arm64 2.0.3-1 [154 kB] 759s Get:154 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-promises arm64 1.3.2+dfsg-1 [290 kB] 759s Get:155 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-httpuv arm64 1.6.15+dfsg-1 [489 kB] 760s Get:156 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-yaml arm64 2.3.10-1 [108 kB] 760s Get:157 http://ftpmaster.internal/ubuntu plucky/main arm64 libjs-mathjax all 2.7.9+dfsg-1 [5665 kB] 767s Get:158 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-knitr all 1.49+dfsg-1 [859 kB] 769s Get:159 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-tinytex all 0.56-1 [148 kB] 769s Get:160 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-modernizr all 3.13.0-0.1 [101 kB] 769s Get:161 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-xtable all 1:1.8-4-2 [689 kB] 770s Get:162 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-sourcetools arm64 0.1.7-1-1 [47.2 kB] 770s Get:163 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-withr all 3.0.2+dfsg-1 [214 kB] 770s Get:164 http://ftpmaster.internal/ubuntu plucky/universe arm64 libjs-twitter-bootstrap-datepicker all 1.3.1+dfsg1-4.1 [28.5 kB] 770s Get:165 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-shiny all 1.10.0+dfsg-2 [3124 kB] 775s Get:166 http://ftpmaster.internal/ubuntu plucky/universe arm64 r-cran-rmarkdown all 2.29+dfsg-1 [1501 kB] 778s Preconfiguring packages ... 778s Fetched 194 MB in 3min 46s (857 kB/s) 778s Selecting previously unselected package libisl23:arm64. 778s (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 ... 81647 files and directories currently installed.) 778s Preparing to unpack .../000-libisl23_0.27-1_arm64.deb ... 778s Unpacking libisl23:arm64 (0.27-1) ... 778s Selecting previously unselected package libmpc3:arm64. 778s Preparing to unpack .../001-libmpc3_1.3.1-1build2_arm64.deb ... 778s Unpacking libmpc3:arm64 (1.3.1-1build2) ... 778s Selecting previously unselected package cpp-14-aarch64-linux-gnu. 778s Preparing to unpack .../002-cpp-14-aarch64-linux-gnu_14.2.0-17ubuntu3_arm64.deb ... 778s Unpacking cpp-14-aarch64-linux-gnu (14.2.0-17ubuntu3) ... 779s Selecting previously unselected package cpp-14. 779s Preparing to unpack .../003-cpp-14_14.2.0-17ubuntu3_arm64.deb ... 779s Unpacking cpp-14 (14.2.0-17ubuntu3) ... 779s Selecting previously unselected package cpp-aarch64-linux-gnu. 779s Preparing to unpack .../004-cpp-aarch64-linux-gnu_4%3a14.2.0-1ubuntu1_arm64.deb ... 779s Unpacking cpp-aarch64-linux-gnu (4:14.2.0-1ubuntu1) ... 779s Selecting previously unselected package cpp. 779s Preparing to unpack .../005-cpp_4%3a14.2.0-1ubuntu1_arm64.deb ... 779s Unpacking cpp (4:14.2.0-1ubuntu1) ... 779s Selecting previously unselected package libcc1-0:arm64. 779s Preparing to unpack .../006-libcc1-0_15-20250222-0ubuntu1_arm64.deb ... 779s Unpacking libcc1-0:arm64 (15-20250222-0ubuntu1) ... 779s Selecting previously unselected package libgomp1:arm64. 779s Preparing to unpack .../007-libgomp1_15-20250222-0ubuntu1_arm64.deb ... 779s Unpacking libgomp1:arm64 (15-20250222-0ubuntu1) ... 779s Selecting previously unselected package libitm1:arm64. 779s Preparing to unpack .../008-libitm1_15-20250222-0ubuntu1_arm64.deb ... 779s Unpacking libitm1:arm64 (15-20250222-0ubuntu1) ... 779s Selecting previously unselected package libasan8:arm64. 779s Preparing to unpack .../009-libasan8_15-20250222-0ubuntu1_arm64.deb ... 779s Unpacking libasan8:arm64 (15-20250222-0ubuntu1) ... 779s Selecting previously unselected package liblsan0:arm64. 779s Preparing to unpack .../010-liblsan0_15-20250222-0ubuntu1_arm64.deb ... 779s Unpacking liblsan0:arm64 (15-20250222-0ubuntu1) ... 779s Selecting previously unselected package libtsan2:arm64. 779s Preparing to unpack .../011-libtsan2_15-20250222-0ubuntu1_arm64.deb ... 779s Unpacking libtsan2:arm64 (15-20250222-0ubuntu1) ... 779s Selecting previously unselected package libubsan1:arm64. 779s Preparing to unpack .../012-libubsan1_15-20250222-0ubuntu1_arm64.deb ... 779s Unpacking libubsan1:arm64 (15-20250222-0ubuntu1) ... 779s Selecting previously unselected package libhwasan0:arm64. 779s Preparing to unpack .../013-libhwasan0_15-20250222-0ubuntu1_arm64.deb ... 779s Unpacking libhwasan0:arm64 (15-20250222-0ubuntu1) ... 779s Selecting previously unselected package libgcc-14-dev:arm64. 779s Preparing to unpack .../014-libgcc-14-dev_14.2.0-17ubuntu3_arm64.deb ... 779s Unpacking libgcc-14-dev:arm64 (14.2.0-17ubuntu3) ... 779s Selecting previously unselected package gcc-14-aarch64-linux-gnu. 779s Preparing to unpack .../015-gcc-14-aarch64-linux-gnu_14.2.0-17ubuntu3_arm64.deb ... 779s Unpacking gcc-14-aarch64-linux-gnu (14.2.0-17ubuntu3) ... 780s Selecting previously unselected package gcc-14. 780s Preparing to unpack .../016-gcc-14_14.2.0-17ubuntu3_arm64.deb ... 780s Unpacking gcc-14 (14.2.0-17ubuntu3) ... 780s Selecting previously unselected package gcc-aarch64-linux-gnu. 780s Preparing to unpack .../017-gcc-aarch64-linux-gnu_4%3a14.2.0-1ubuntu1_arm64.deb ... 780s Unpacking gcc-aarch64-linux-gnu (4:14.2.0-1ubuntu1) ... 780s Selecting previously unselected package gcc. 780s Preparing to unpack .../018-gcc_4%3a14.2.0-1ubuntu1_arm64.deb ... 780s Unpacking gcc (4:14.2.0-1ubuntu1) ... 780s Selecting previously unselected package libstdc++-14-dev:arm64. 780s Preparing to unpack .../019-libstdc++-14-dev_14.2.0-17ubuntu3_arm64.deb ... 780s Unpacking libstdc++-14-dev:arm64 (14.2.0-17ubuntu3) ... 780s Selecting previously unselected package g++-14-aarch64-linux-gnu. 780s Preparing to unpack .../020-g++-14-aarch64-linux-gnu_14.2.0-17ubuntu3_arm64.deb ... 780s Unpacking g++-14-aarch64-linux-gnu (14.2.0-17ubuntu3) ... 780s Selecting previously unselected package g++-14. 780s Preparing to unpack .../021-g++-14_14.2.0-17ubuntu3_arm64.deb ... 780s Unpacking g++-14 (14.2.0-17ubuntu3) ... 780s Selecting previously unselected package g++-aarch64-linux-gnu. 780s Preparing to unpack .../022-g++-aarch64-linux-gnu_4%3a14.2.0-1ubuntu1_arm64.deb ... 780s Unpacking g++-aarch64-linux-gnu (4:14.2.0-1ubuntu1) ... 780s Selecting previously unselected package g++. 780s Preparing to unpack .../023-g++_4%3a14.2.0-1ubuntu1_arm64.deb ... 780s Unpacking g++ (4:14.2.0-1ubuntu1) ... 780s Selecting previously unselected package build-essential. 780s Preparing to unpack .../024-build-essential_12.10ubuntu1_arm64.deb ... 780s Unpacking build-essential (12.10ubuntu1) ... 780s Selecting previously unselected package dctrl-tools. 780s Preparing to unpack .../025-dctrl-tools_2.24-3build3_arm64.deb ... 780s Unpacking dctrl-tools (2.24-3build3) ... 780s Selecting previously unselected package fonts-dejavu-mono. 780s Preparing to unpack .../026-fonts-dejavu-mono_2.37-8_all.deb ... 780s Unpacking fonts-dejavu-mono (2.37-8) ... 781s Selecting previously unselected package fonts-dejavu-core. 781s Preparing to unpack .../027-fonts-dejavu-core_2.37-8_all.deb ... 781s Unpacking fonts-dejavu-core (2.37-8) ... 781s Selecting previously unselected package fontconfig-config. 781s Preparing to unpack .../028-fontconfig-config_2.15.0-2ubuntu1_arm64.deb ... 781s Unpacking fontconfig-config (2.15.0-2ubuntu1) ... 781s Selecting previously unselected package libfontconfig1:arm64. 781s Preparing to unpack .../029-libfontconfig1_2.15.0-2ubuntu1_arm64.deb ... 781s Unpacking libfontconfig1:arm64 (2.15.0-2ubuntu1) ... 781s Selecting previously unselected package fontconfig. 781s Preparing to unpack .../030-fontconfig_2.15.0-2ubuntu1_arm64.deb ... 781s Unpacking fontconfig (2.15.0-2ubuntu1) ... 781s Selecting previously unselected package fonts-font-awesome. 781s Preparing to unpack .../031-fonts-font-awesome_5.0.10+really4.7.0~dfsg-4.1_all.deb ... 781s Unpacking fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... 781s Selecting previously unselected package fonts-glyphicons-halflings. 781s Preparing to unpack .../032-fonts-glyphicons-halflings_1.009~3.4.1+dfsg-3_all.deb ... 781s Unpacking fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 781s Selecting previously unselected package fonts-mathjax. 781s Preparing to unpack .../033-fonts-mathjax_2.7.9+dfsg-1_all.deb ... 781s Unpacking fonts-mathjax (2.7.9+dfsg-1) ... 781s Selecting previously unselected package libgfortran5:arm64. 781s Preparing to unpack .../034-libgfortran5_15-20250222-0ubuntu1_arm64.deb ... 781s Unpacking libgfortran5:arm64 (15-20250222-0ubuntu1) ... 781s Selecting previously unselected package libgfortran-14-dev:arm64. 781s Preparing to unpack .../035-libgfortran-14-dev_14.2.0-17ubuntu3_arm64.deb ... 781s Unpacking libgfortran-14-dev:arm64 (14.2.0-17ubuntu3) ... 781s Selecting previously unselected package gfortran-14-aarch64-linux-gnu. 781s Preparing to unpack .../036-gfortran-14-aarch64-linux-gnu_14.2.0-17ubuntu3_arm64.deb ... 781s Unpacking gfortran-14-aarch64-linux-gnu (14.2.0-17ubuntu3) ... 782s Selecting previously unselected package gfortran-14. 782s Preparing to unpack .../037-gfortran-14_14.2.0-17ubuntu3_arm64.deb ... 782s Unpacking gfortran-14 (14.2.0-17ubuntu3) ... 782s Selecting previously unselected package gfortran-aarch64-linux-gnu. 782s Preparing to unpack .../038-gfortran-aarch64-linux-gnu_4%3a14.2.0-1ubuntu1_arm64.deb ... 782s Unpacking gfortran-aarch64-linux-gnu (4:14.2.0-1ubuntu1) ... 782s Selecting previously unselected package gfortran. 782s Preparing to unpack .../039-gfortran_4%3a14.2.0-1ubuntu1_arm64.deb ... 782s Unpacking gfortran (4:14.2.0-1ubuntu1) ... 782s Selecting previously unselected package icu-devtools. 782s Preparing to unpack .../040-icu-devtools_76.1-1ubuntu2_arm64.deb ... 782s Unpacking icu-devtools (76.1-1ubuntu2) ... 782s Selecting previously unselected package javascript-common. 782s Preparing to unpack .../041-javascript-common_12_all.deb ... 782s Unpacking javascript-common (12) ... 782s Selecting previously unselected package libblas3:arm64. 782s Preparing to unpack .../042-libblas3_3.12.1-2_arm64.deb ... 782s Unpacking libblas3:arm64 (3.12.1-2) ... 782s Selecting previously unselected package libblas-dev:arm64. 782s Preparing to unpack .../043-libblas-dev_3.12.1-2_arm64.deb ... 782s Unpacking libblas-dev:arm64 (3.12.1-2) ... 782s Selecting previously unselected package libbz2-dev:arm64. 782s Preparing to unpack .../044-libbz2-dev_1.0.8-6_arm64.deb ... 782s Unpacking libbz2-dev:arm64 (1.0.8-6) ... 782s Selecting previously unselected package libpixman-1-0:arm64. 782s Preparing to unpack .../045-libpixman-1-0_0.44.0-3_arm64.deb ... 782s Unpacking libpixman-1-0:arm64 (0.44.0-3) ... 782s Selecting previously unselected package libxcb-render0:arm64. 782s Preparing to unpack .../046-libxcb-render0_1.17.0-2_arm64.deb ... 782s Unpacking libxcb-render0:arm64 (1.17.0-2) ... 782s Selecting previously unselected package libxcb-shm0:arm64. 782s Preparing to unpack .../047-libxcb-shm0_1.17.0-2_arm64.deb ... 782s Unpacking libxcb-shm0:arm64 (1.17.0-2) ... 782s Selecting previously unselected package libxrender1:arm64. 782s Preparing to unpack .../048-libxrender1_1%3a0.9.10-1.1build1_arm64.deb ... 782s Unpacking libxrender1:arm64 (1:0.9.10-1.1build1) ... 782s Selecting previously unselected package libcairo2:arm64. 782s Preparing to unpack .../049-libcairo2_1.18.2-2_arm64.deb ... 782s Unpacking libcairo2:arm64 (1.18.2-2) ... 782s Selecting previously unselected package libdatrie1:arm64. 782s Preparing to unpack .../050-libdatrie1_0.2.13-3build1_arm64.deb ... 782s Unpacking libdatrie1:arm64 (0.2.13-3build1) ... 782s Selecting previously unselected package libdeflate0:arm64. 782s Preparing to unpack .../051-libdeflate0_1.23-1_arm64.deb ... 782s Unpacking libdeflate0:arm64 (1.23-1) ... 782s Selecting previously unselected package libdeflate-dev:arm64. 782s Preparing to unpack .../052-libdeflate-dev_1.23-1_arm64.deb ... 782s Unpacking libdeflate-dev:arm64 (1.23-1) ... 782s Selecting previously unselected package libgraphite2-3:arm64. 782s Preparing to unpack .../053-libgraphite2-3_1.3.14-2ubuntu1_arm64.deb ... 782s Unpacking libgraphite2-3:arm64 (1.3.14-2ubuntu1) ... 782s Selecting previously unselected package libharfbuzz0b:arm64. 782s Preparing to unpack .../054-libharfbuzz0b_10.2.0-1_arm64.deb ... 782s Unpacking libharfbuzz0b:arm64 (10.2.0-1) ... 782s Selecting previously unselected package x11-common. 782s Preparing to unpack .../055-x11-common_1%3a7.7+23ubuntu3_all.deb ... 782s Unpacking x11-common (1:7.7+23ubuntu3) ... 782s Selecting previously unselected package libice6:arm64. 782s Preparing to unpack .../056-libice6_2%3a1.1.1-1_arm64.deb ... 782s Unpacking libice6:arm64 (2:1.1.1-1) ... 782s Selecting previously unselected package libicu-dev:arm64. 782s Preparing to unpack .../057-libicu-dev_76.1-1ubuntu2_arm64.deb ... 782s Unpacking libicu-dev:arm64 (76.1-1ubuntu2) ... 783s Selecting previously unselected package libjpeg-turbo8:arm64. 783s Preparing to unpack .../058-libjpeg-turbo8_2.1.5-3ubuntu2_arm64.deb ... 783s Unpacking libjpeg-turbo8:arm64 (2.1.5-3ubuntu2) ... 783s Selecting previously unselected package libjpeg-turbo8-dev:arm64. 783s Preparing to unpack .../059-libjpeg-turbo8-dev_2.1.5-3ubuntu2_arm64.deb ... 783s Unpacking libjpeg-turbo8-dev:arm64 (2.1.5-3ubuntu2) ... 783s Selecting previously unselected package libjpeg8:arm64. 783s Preparing to unpack .../060-libjpeg8_8c-2ubuntu11_arm64.deb ... 783s Unpacking libjpeg8:arm64 (8c-2ubuntu11) ... 783s Selecting previously unselected package libjpeg8-dev:arm64. 783s Preparing to unpack .../061-libjpeg8-dev_8c-2ubuntu11_arm64.deb ... 783s Unpacking libjpeg8-dev:arm64 (8c-2ubuntu11) ... 783s Selecting previously unselected package libjpeg-dev:arm64. 783s Preparing to unpack .../062-libjpeg-dev_8c-2ubuntu11_arm64.deb ... 783s Unpacking libjpeg-dev:arm64 (8c-2ubuntu11) ... 783s Selecting previously unselected package libjs-bootstrap. 783s Preparing to unpack .../063-libjs-bootstrap_3.4.1+dfsg-3_all.deb ... 783s Unpacking libjs-bootstrap (3.4.1+dfsg-3) ... 783s Selecting previously unselected package libjs-popper.js. 783s Preparing to unpack .../064-libjs-popper.js_1.16.1+ds-6_all.deb ... 783s Unpacking libjs-popper.js (1.16.1+ds-6) ... 783s Selecting previously unselected package libjs-bootstrap4. 783s Preparing to unpack .../065-libjs-bootstrap4_4.6.1+dfsg1-4_all.deb ... 783s Unpacking libjs-bootstrap4 (4.6.1+dfsg1-4) ... 783s Selecting previously unselected package libjs-d3. 783s Preparing to unpack .../066-libjs-d3_3.5.17-4_all.deb ... 783s Unpacking libjs-d3 (3.5.17-4) ... 783s Selecting previously unselected package libjs-es5-shim. 783s Preparing to unpack .../067-libjs-es5-shim_4.6.7-2_all.deb ... 783s Unpacking libjs-es5-shim (4.6.7-2) ... 783s Selecting previously unselected package libjs-highlight.js. 783s Preparing to unpack .../068-libjs-highlight.js_9.18.5+dfsg1-2_all.deb ... 783s Unpacking libjs-highlight.js (9.18.5+dfsg1-2) ... 783s Selecting previously unselected package libjs-jquery. 783s Preparing to unpack .../069-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... 783s Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 783s Selecting previously unselected package libjs-jquery-datatables. 783s Preparing to unpack .../070-libjs-jquery-datatables_1.11.5+dfsg-2_all.deb ... 783s Unpacking libjs-jquery-datatables (1.11.5+dfsg-2) ... 783s Selecting previously unselected package libjs-sifter.js. 783s Preparing to unpack .../071-libjs-sifter.js_0.6.0+dfsg-3_all.deb ... 783s Unpacking libjs-sifter.js (0.6.0+dfsg-3) ... 783s Selecting previously unselected package libjs-microplugin.js. 783s Preparing to unpack .../072-libjs-microplugin.js_0.0.3+dfsg-1.1_all.deb ... 783s Unpacking libjs-microplugin.js (0.0.3+dfsg-1.1) ... 783s Selecting previously unselected package libjs-jquery-selectize.js. 783s Preparing to unpack .../073-libjs-jquery-selectize.js_0.12.6+dfsg-1.1_all.deb ... 783s Unpacking libjs-jquery-selectize.js (0.12.6+dfsg-1.1) ... 784s Selecting previously unselected package libjs-jquery-ui. 784s Preparing to unpack .../074-libjs-jquery-ui_1.13.2+dfsg-1_all.deb ... 784s Unpacking libjs-jquery-ui (1.13.2+dfsg-1) ... 784s Selecting previously unselected package libjs-json. 784s Preparing to unpack .../075-libjs-json_0~20221030+~1.0.8-1_all.deb ... 784s Unpacking libjs-json (0~20221030+~1.0.8-1) ... 784s Selecting previously unselected package libjs-prettify. 784s Preparing to unpack .../076-libjs-prettify_2015.12.04+dfsg-1.1_all.deb ... 784s Unpacking libjs-prettify (2015.12.04+dfsg-1.1) ... 784s Selecting previously unselected package liblapack3:arm64. 784s Preparing to unpack .../077-liblapack3_3.12.1-2_arm64.deb ... 784s Unpacking liblapack3:arm64 (3.12.1-2) ... 784s Selecting previously unselected package liblapack-dev:arm64. 784s Preparing to unpack .../078-liblapack-dev_3.12.1-2_arm64.deb ... 784s Unpacking liblapack-dev:arm64 (3.12.1-2) ... 784s Selecting previously unselected package liblerc4:arm64. 784s Preparing to unpack .../079-liblerc4_4.0.0+ds-5ubuntu1_arm64.deb ... 784s Unpacking liblerc4:arm64 (4.0.0+ds-5ubuntu1) ... 784s Selecting previously unselected package liblua5.4-0:arm64. 784s Preparing to unpack .../080-liblua5.4-0_5.4.7-1_arm64.deb ... 784s Unpacking liblua5.4-0:arm64 (5.4.7-1) ... 784s Selecting previously unselected package libncurses-dev:arm64. 784s Preparing to unpack .../081-libncurses-dev_6.5+20250216-2_arm64.deb ... 784s Unpacking libncurses-dev:arm64 (6.5+20250216-2) ... 784s Selecting previously unselected package libthai-data. 784s Preparing to unpack .../082-libthai-data_0.1.29-2build1_all.deb ... 784s Unpacking libthai-data (0.1.29-2build1) ... 784s Selecting previously unselected package libthai0:arm64. 784s Preparing to unpack .../083-libthai0_0.1.29-2build1_arm64.deb ... 784s Unpacking libthai0:arm64 (0.1.29-2build1) ... 784s Selecting previously unselected package libpango-1.0-0:arm64. 784s Preparing to unpack .../084-libpango-1.0-0_1.56.2-1_arm64.deb ... 784s Unpacking libpango-1.0-0:arm64 (1.56.2-1) ... 784s Selecting previously unselected package libpangoft2-1.0-0:arm64. 784s Preparing to unpack .../085-libpangoft2-1.0-0_1.56.2-1_arm64.deb ... 784s Unpacking libpangoft2-1.0-0:arm64 (1.56.2-1) ... 784s Selecting previously unselected package libpangocairo-1.0-0:arm64. 784s Preparing to unpack .../086-libpangocairo-1.0-0_1.56.2-1_arm64.deb ... 784s Unpacking libpangocairo-1.0-0:arm64 (1.56.2-1) ... 784s Selecting previously unselected package libpaper2:arm64. 784s Preparing to unpack .../087-libpaper2_2.2.5-0.3_arm64.deb ... 784s Unpacking libpaper2:arm64 (2.2.5-0.3) ... 784s Selecting previously unselected package libpaper-utils. 784s Preparing to unpack .../088-libpaper-utils_2.2.5-0.3_arm64.deb ... 784s Unpacking libpaper-utils (2.2.5-0.3) ... 784s Selecting previously unselected package libpcre2-16-0:arm64. 784s Preparing to unpack .../089-libpcre2-16-0_10.45-1_arm64.deb ... 784s Unpacking libpcre2-16-0:arm64 (10.45-1) ... 784s Selecting previously unselected package libpcre2-32-0:arm64. 784s Preparing to unpack .../090-libpcre2-32-0_10.45-1_arm64.deb ... 784s Unpacking libpcre2-32-0:arm64 (10.45-1) ... 784s Selecting previously unselected package libpcre2-posix3:arm64. 784s Preparing to unpack .../091-libpcre2-posix3_10.45-1_arm64.deb ... 784s Unpacking libpcre2-posix3:arm64 (10.45-1) ... 784s Selecting previously unselected package libpcre2-dev:arm64. 785s Preparing to unpack .../092-libpcre2-dev_10.45-1_arm64.deb ... 785s Unpacking libpcre2-dev:arm64 (10.45-1) ... 785s Selecting previously unselected package libpkgconf3:arm64. 785s Preparing to unpack .../093-libpkgconf3_1.8.1-4_arm64.deb ... 785s Unpacking libpkgconf3:arm64 (1.8.1-4) ... 785s Selecting previously unselected package zlib1g-dev:arm64. 785s Preparing to unpack .../094-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1ubuntu1_arm64.deb ... 785s Unpacking zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 785s Selecting previously unselected package libpng-dev:arm64. 785s Preparing to unpack .../095-libpng-dev_1.6.47-1_arm64.deb ... 785s Unpacking libpng-dev:arm64 (1.6.47-1) ... 785s Selecting previously unselected package libreadline-dev:arm64. 785s Preparing to unpack .../096-libreadline-dev_8.2-6_arm64.deb ... 785s Unpacking libreadline-dev:arm64 (8.2-6) ... 785s Selecting previously unselected package libsharpyuv0:arm64. 785s Preparing to unpack .../097-libsharpyuv0_1.5.0-0.1_arm64.deb ... 785s Unpacking libsharpyuv0:arm64 (1.5.0-0.1) ... 785s Selecting previously unselected package libsm6:arm64. 785s Preparing to unpack .../098-libsm6_2%3a1.2.4-1_arm64.deb ... 785s Unpacking libsm6:arm64 (2:1.2.4-1) ... 785s Selecting previously unselected package libtcl8.6:arm64. 785s Preparing to unpack .../099-libtcl8.6_8.6.16+dfsg-1_arm64.deb ... 785s Unpacking libtcl8.6:arm64 (8.6.16+dfsg-1) ... 785s Selecting previously unselected package libjbig0:arm64. 785s Preparing to unpack .../100-libjbig0_2.1-6.1ubuntu2_arm64.deb ... 785s Unpacking libjbig0:arm64 (2.1-6.1ubuntu2) ... 785s Selecting previously unselected package libwebp7:arm64. 785s Preparing to unpack .../101-libwebp7_1.5.0-0.1_arm64.deb ... 785s Unpacking libwebp7:arm64 (1.5.0-0.1) ... 785s Selecting previously unselected package libtiff6:arm64. 785s Preparing to unpack .../102-libtiff6_4.5.1+git230720-4ubuntu4_arm64.deb ... 785s Unpacking libtiff6:arm64 (4.5.1+git230720-4ubuntu4) ... 785s Selecting previously unselected package libxft2:arm64. 785s Preparing to unpack .../103-libxft2_2.3.6-1build1_arm64.deb ... 785s Unpacking libxft2:arm64 (2.3.6-1build1) ... 785s Selecting previously unselected package libxss1:arm64. 785s Preparing to unpack .../104-libxss1_1%3a1.2.3-1build3_arm64.deb ... 785s Unpacking libxss1:arm64 (1:1.2.3-1build3) ... 785s Selecting previously unselected package libtk8.6:arm64. 785s Preparing to unpack .../105-libtk8.6_8.6.16-1_arm64.deb ... 785s Unpacking libtk8.6:arm64 (8.6.16-1) ... 785s Selecting previously unselected package libxt6t64:arm64. 785s Preparing to unpack .../106-libxt6t64_1%3a1.2.1-1.2build1_arm64.deb ... 785s Unpacking libxt6t64:arm64 (1:1.2.1-1.2build1) ... 785s Selecting previously unselected package zip. 785s Preparing to unpack .../107-zip_3.0-14ubuntu2_arm64.deb ... 785s Unpacking zip (3.0-14ubuntu2) ... 785s Selecting previously unselected package unzip. 785s Preparing to unpack .../108-unzip_6.0-28ubuntu6_arm64.deb ... 785s Unpacking unzip (6.0-28ubuntu6) ... 785s Selecting previously unselected package xdg-utils. 785s Preparing to unpack .../109-xdg-utils_1.2.1-2ubuntu1_all.deb ... 785s Unpacking xdg-utils (1.2.1-2ubuntu1) ... 785s Selecting previously unselected package r-base-core. 785s Preparing to unpack .../110-r-base-core_4.4.3-1_arm64.deb ... 785s Unpacking r-base-core (4.4.3-1) ... 786s Selecting previously unselected package r-cran-littler. 786s Preparing to unpack .../111-r-cran-littler_0.3.20-2_arm64.deb ... 786s Unpacking r-cran-littler (0.3.20-2) ... 786s Selecting previously unselected package littler. 786s Preparing to unpack .../112-littler_0.3.20-2_all.deb ... 786s Unpacking littler (0.3.20-2) ... 786s Selecting previously unselected package node-bootstrap-sass. 786s Preparing to unpack .../113-node-bootstrap-sass_3.4.3-2_all.deb ... 786s Unpacking node-bootstrap-sass (3.4.3-2) ... 786s Selecting previously unselected package node-html5shiv. 786s Preparing to unpack .../114-node-html5shiv_3.7.3+dfsg-5_all.deb ... 786s Unpacking node-html5shiv (3.7.3+dfsg-5) ... 786s Selecting previously unselected package node-normalize.css. 786s Preparing to unpack .../115-node-normalize.css_8.0.1-5_all.deb ... 786s Unpacking node-normalize.css (8.0.1-5) ... 786s Selecting previously unselected package pandoc-data. 786s Preparing to unpack .../116-pandoc-data_3.1.11.1-3build1_all.deb ... 786s Unpacking pandoc-data (3.1.11.1-3build1) ... 786s Selecting previously unselected package pandoc. 786s Preparing to unpack .../117-pandoc_3.1.11.1+ds-2_arm64.deb ... 786s Unpacking pandoc (3.1.11.1+ds-2) ... 787s Selecting previously unselected package liblzma-dev:arm64. 787s Preparing to unpack .../118-liblzma-dev_5.6.4-1_arm64.deb ... 787s Unpacking liblzma-dev:arm64 (5.6.4-1) ... 787s Selecting previously unselected package pkgconf-bin. 787s Preparing to unpack .../119-pkgconf-bin_1.8.1-4_arm64.deb ... 787s Unpacking pkgconf-bin (1.8.1-4) ... 787s Selecting previously unselected package pkgconf:arm64. 787s Preparing to unpack .../120-pkgconf_1.8.1-4_arm64.deb ... 787s Unpacking pkgconf:arm64 (1.8.1-4) ... 787s Selecting previously unselected package libtirpc-dev:arm64. 787s Preparing to unpack .../121-libtirpc-dev_1.3.4+ds-1.3_arm64.deb ... 787s Unpacking libtirpc-dev:arm64 (1.3.4+ds-1.3) ... 787s Selecting previously unselected package r-base-dev. 787s Preparing to unpack .../122-r-base-dev_4.4.3-1_all.deb ... 787s Unpacking r-base-dev (4.4.3-1) ... 787s Selecting previously unselected package pkg-r-autopkgtest. 787s Preparing to unpack .../123-pkg-r-autopkgtest_20231212ubuntu1_all.deb ... 787s Unpacking pkg-r-autopkgtest (20231212ubuntu1) ... 787s Selecting previously unselected package r-cran-base64enc. 787s Preparing to unpack .../124-r-cran-base64enc_0.1-3-3_arm64.deb ... 787s Unpacking r-cran-base64enc (0.1-3-3) ... 787s Selecting previously unselected package r-cran-rlang. 787s Preparing to unpack .../125-r-cran-rlang_1.1.5-1_arm64.deb ... 787s Unpacking r-cran-rlang (1.1.5-1) ... 787s Selecting previously unselected package r-cran-fastmap. 787s Preparing to unpack .../126-r-cran-fastmap_1.2.0-1_arm64.deb ... 787s Unpacking r-cran-fastmap (1.2.0-1) ... 787s Selecting previously unselected package r-cran-cachem. 787s Preparing to unpack .../127-r-cran-cachem_1.1.0-1_arm64.deb ... 787s Unpacking r-cran-cachem (1.1.0-1) ... 787s Selecting previously unselected package r-cran-digest. 787s Preparing to unpack .../128-r-cran-digest_0.6.37-1_arm64.deb ... 787s Unpacking r-cran-digest (0.6.37-1) ... 788s Selecting previously unselected package r-cran-htmltools. 788s Preparing to unpack .../129-r-cran-htmltools_0.5.8.1-1_arm64.deb ... 788s Unpacking r-cran-htmltools (0.5.8.1-1) ... 788s Selecting previously unselected package r-cran-jquerylib. 788s Preparing to unpack .../130-r-cran-jquerylib_0.1.4+dfsg-4_all.deb ... 788s Unpacking r-cran-jquerylib (0.1.4+dfsg-4) ... 788s Selecting previously unselected package r-cran-jsonlite. 788s Preparing to unpack .../131-r-cran-jsonlite_1.9.1+dfsg-1_arm64.deb ... 788s Unpacking r-cran-jsonlite (1.9.1+dfsg-1) ... 788s Selecting previously unselected package r-cran-cli. 788s Preparing to unpack .../132-r-cran-cli_3.6.4-1_arm64.deb ... 788s Unpacking r-cran-cli (3.6.4-1) ... 788s Selecting previously unselected package r-cran-glue. 788s Preparing to unpack .../133-r-cran-glue_1.8.0-1_arm64.deb ... 788s Unpacking r-cran-glue (1.8.0-1) ... 788s Selecting previously unselected package r-cran-lifecycle. 788s Preparing to unpack .../134-r-cran-lifecycle_1.0.4+dfsg-1_all.deb ... 788s Unpacking r-cran-lifecycle (1.0.4+dfsg-1) ... 788s Selecting previously unselected package r-cran-memoise. 788s Preparing to unpack .../135-r-cran-memoise_2.0.1-1_all.deb ... 788s Unpacking r-cran-memoise (2.0.1-1) ... 788s Selecting previously unselected package r-cran-mime. 788s Preparing to unpack .../136-r-cran-mime_0.12-2_arm64.deb ... 788s Unpacking r-cran-mime (0.12-2) ... 788s Selecting previously unselected package r-cran-fs. 788s Preparing to unpack .../137-r-cran-fs_1.6.5+dfsg-1_arm64.deb ... 788s Unpacking r-cran-fs (1.6.5+dfsg-1) ... 788s Selecting previously unselected package r-cran-r6. 788s Preparing to unpack .../138-r-cran-r6_2.6.1-1_all.deb ... 788s Unpacking r-cran-r6 (2.6.1-1) ... 788s Selecting previously unselected package r-cran-rappdirs. 788s Preparing to unpack .../139-r-cran-rappdirs_0.3.3-1_arm64.deb ... 788s Unpacking r-cran-rappdirs (0.3.3-1) ... 788s Selecting previously unselected package r-cran-sass. 788s Preparing to unpack .../140-r-cran-sass_0.4.9+dfsg-1_arm64.deb ... 788s Unpacking r-cran-sass (0.4.9+dfsg-1) ... 788s Selecting previously unselected package r-cran-bslib. 788s Preparing to unpack .../141-r-cran-bslib_0.8.0+dfsg-1_all.deb ... 788s Unpacking r-cran-bslib (0.8.0+dfsg-1) ... 788s Selecting previously unselected package r-cran-commonmark. 788s Preparing to unpack .../142-r-cran-commonmark_1.9.2-2_arm64.deb ... 788s Unpacking r-cran-commonmark (1.9.2-2) ... 788s Selecting previously unselected package r-cran-crayon. 788s Preparing to unpack .../143-r-cran-crayon_1.5.3-1_all.deb ... 788s Unpacking r-cran-crayon (1.5.3-1) ... 788s Selecting previously unselected package r-cran-diffobj. 788s Preparing to unpack .../144-r-cran-diffobj_0.3.5-1_arm64.deb ... 788s Unpacking r-cran-diffobj (0.3.5-1) ... 788s Selecting previously unselected package r-cran-evaluate. 788s Preparing to unpack .../145-r-cran-evaluate_1.0.3-1_all.deb ... 788s Unpacking r-cran-evaluate (1.0.3-1) ... 789s Selecting previously unselected package r-cran-fontawesome. 789s Preparing to unpack .../146-r-cran-fontawesome_0.5.3-1_all.deb ... 789s Unpacking r-cran-fontawesome (0.5.3-1) ... 789s Selecting previously unselected package r-cran-xfun. 789s Preparing to unpack .../147-r-cran-xfun_0.51+dfsg-1_arm64.deb ... 789s Unpacking r-cran-xfun (0.51+dfsg-1) ... 789s Selecting previously unselected package r-cran-highr. 789s Preparing to unpack .../148-r-cran-highr_0.11+dfsg-1_all.deb ... 789s Unpacking r-cran-highr (0.11+dfsg-1) ... 789s Selecting previously unselected package r-cran-pkgkitten. 789s Preparing to unpack .../149-r-cran-pkgkitten_0.2.4-1_all.deb ... 789s Unpacking r-cran-pkgkitten (0.2.4-1) ... 789s Selecting previously unselected package r-cran-rcpp. 789s Preparing to unpack .../150-r-cran-rcpp_1.0.14-1_arm64.deb ... 789s Unpacking r-cran-rcpp (1.0.14-1) ... 789s Selecting previously unselected package r-cran-later. 789s Preparing to unpack .../151-r-cran-later_1.4.1+dfsg-1_arm64.deb ... 789s Unpacking r-cran-later (1.4.1+dfsg-1) ... 789s Selecting previously unselected package r-cran-magrittr. 789s Preparing to unpack .../152-r-cran-magrittr_2.0.3-1_arm64.deb ... 789s Unpacking r-cran-magrittr (2.0.3-1) ... 789s Selecting previously unselected package r-cran-promises. 789s Preparing to unpack .../153-r-cran-promises_1.3.2+dfsg-1_arm64.deb ... 789s Unpacking r-cran-promises (1.3.2+dfsg-1) ... 789s Selecting previously unselected package r-cran-httpuv. 789s Preparing to unpack .../154-r-cran-httpuv_1.6.15+dfsg-1_arm64.deb ... 789s Unpacking r-cran-httpuv (1.6.15+dfsg-1) ... 789s Selecting previously unselected package r-cran-yaml. 789s Preparing to unpack .../155-r-cran-yaml_2.3.10-1_arm64.deb ... 789s Unpacking r-cran-yaml (2.3.10-1) ... 789s Selecting previously unselected package libjs-mathjax. 789s Preparing to unpack .../156-libjs-mathjax_2.7.9+dfsg-1_all.deb ... 789s Unpacking libjs-mathjax (2.7.9+dfsg-1) ... 790s Selecting previously unselected package r-cran-knitr. 790s Preparing to unpack .../157-r-cran-knitr_1.49+dfsg-1_all.deb ... 790s Unpacking r-cran-knitr (1.49+dfsg-1) ... 790s Selecting previously unselected package r-cran-tinytex. 790s Preparing to unpack .../158-r-cran-tinytex_0.56-1_all.deb ... 790s Unpacking r-cran-tinytex (0.56-1) ... 790s Selecting previously unselected package libjs-modernizr. 790s Preparing to unpack .../159-libjs-modernizr_3.13.0-0.1_all.deb ... 790s Unpacking libjs-modernizr (3.13.0-0.1) ... 790s Selecting previously unselected package r-cran-xtable. 790s Preparing to unpack .../160-r-cran-xtable_1%3a1.8-4-2_all.deb ... 790s Unpacking r-cran-xtable (1:1.8-4-2) ... 790s Selecting previously unselected package r-cran-sourcetools. 790s Preparing to unpack .../161-r-cran-sourcetools_0.1.7-1-1_arm64.deb ... 790s Unpacking r-cran-sourcetools (0.1.7-1-1) ... 790s Selecting previously unselected package r-cran-withr. 790s Preparing to unpack .../162-r-cran-withr_3.0.2+dfsg-1_all.deb ... 790s Unpacking r-cran-withr (3.0.2+dfsg-1) ... 790s Selecting previously unselected package libjs-twitter-bootstrap-datepicker. 790s Preparing to unpack .../163-libjs-twitter-bootstrap-datepicker_1.3.1+dfsg1-4.1_all.deb ... 790s Unpacking libjs-twitter-bootstrap-datepicker (1.3.1+dfsg1-4.1) ... 790s Selecting previously unselected package r-cran-shiny. 790s Preparing to unpack .../164-r-cran-shiny_1.10.0+dfsg-2_all.deb ... 790s Unpacking r-cran-shiny (1.10.0+dfsg-2) ... 790s Selecting previously unselected package r-cran-rmarkdown. 790s Preparing to unpack .../165-r-cran-rmarkdown_2.29+dfsg-1_all.deb ... 790s Unpacking r-cran-rmarkdown (2.29+dfsg-1) ... 790s Setting up libjs-json (0~20221030+~1.0.8-1) ... 790s Setting up javascript-common (12) ... 790s Setting up libgraphite2-3:arm64 (1.3.14-2ubuntu1) ... 790s Setting up libpixman-1-0:arm64 (0.44.0-3) ... 790s Setting up libsharpyuv0:arm64 (1.5.0-0.1) ... 790s Setting up libncurses-dev:arm64 (6.5+20250216-2) ... 790s Setting up fonts-mathjax (2.7.9+dfsg-1) ... 790s Setting up liblerc4:arm64 (4.0.0+ds-5ubuntu1) ... 790s Setting up libjs-mathjax (2.7.9+dfsg-1) ... 790s Setting up libxrender1:arm64 (1:0.9.10-1.1build1) ... 790s Setting up libdatrie1:arm64 (0.2.13-3build1) ... 790s Setting up libjs-popper.js (1.16.1+ds-6) ... 790s Setting up libxcb-render0:arm64 (1.17.0-2) ... 790s Setting up libjs-sifter.js (0.6.0+dfsg-3) ... 790s Setting up fonts-glyphicons-halflings (1.009~3.4.1+dfsg-3) ... 790s Setting up unzip (6.0-28ubuntu6) ... 790s Setting up x11-common (1:7.7+23ubuntu3) ... 791s Setting up node-html5shiv (3.7.3+dfsg-5) ... 791s Setting up libdeflate0:arm64 (1.23-1) ... 791s Setting up libjs-microplugin.js (0.0.3+dfsg-1.1) ... 791s Setting up libxcb-shm0:arm64 (1.17.0-2) ... 791s Setting up libreadline-dev:arm64 (8.2-6) ... 791s Setting up libgomp1:arm64 (15-20250222-0ubuntu1) ... 791s Setting up libjs-modernizr (3.13.0-0.1) ... 791s Setting up libjbig0:arm64 (2.1-6.1ubuntu2) ... 791s Setting up libpcre2-16-0:arm64 (10.45-1) ... 791s Setting up libjs-es5-shim (4.6.7-2) ... 791s Setting up zip (3.0-14ubuntu2) ... 791s Setting up libpcre2-32-0:arm64 (10.45-1) ... 791s Setting up libblas3:arm64 (3.12.1-2) ... 791s update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so.3 to provide /usr/lib/aarch64-linux-gnu/libblas.so.3 (libblas.so.3-aarch64-linux-gnu) in auto mode 791s Setting up libtirpc-dev:arm64 (1.3.4+ds-1.3) ... 791s Setting up libpkgconf3:arm64 (1.8.1-4) ... 791s Setting up libjs-d3 (3.5.17-4) ... 791s Setting up fonts-dejavu-mono (2.37-8) ... 791s Setting up libmpc3:arm64 (1.3.1-1build2) ... 791s Setting up libtcl8.6:arm64 (8.6.16+dfsg-1) ... 791s Setting up icu-devtools (76.1-1ubuntu2) ... 791s Setting up fonts-dejavu-core (2.37-8) ... 791s Setting up pkgconf-bin (1.8.1-4) ... 791s Setting up libjpeg-turbo8:arm64 (2.1.5-3ubuntu2) ... 791s Setting up libgfortran5:arm64 (15-20250222-0ubuntu1) ... 791s Setting up libwebp7:arm64 (1.5.0-0.1) ... 791s Setting up liblzma-dev:arm64 (5.6.4-1) ... 791s Setting up libubsan1:arm64 (15-20250222-0ubuntu1) ... 791s Setting up zlib1g-dev:arm64 (1:1.3.dfsg+really1.3.1-1ubuntu1) ... 791s Setting up libpcre2-posix3:arm64 (10.45-1) ... 791s Setting up libjs-highlight.js (9.18.5+dfsg1-2) ... 791s Setting up libhwasan0:arm64 (15-20250222-0ubuntu1) ... 791s Setting up libasan8:arm64 (15-20250222-0ubuntu1) ... 791s Setting up liblua5.4-0:arm64 (5.4.7-1) ... 791s Setting up libharfbuzz0b:arm64 (10.2.0-1) ... 791s Setting up libthai-data (0.1.29-2build1) ... 791s Setting up node-bootstrap-sass (3.4.3-2) ... 791s Setting up libjs-prettify (2015.12.04+dfsg-1.1) ... 791s Setting up libxss1:arm64 (1:1.2.3-1build3) ... 791s Setting up libjs-bootstrap4 (4.6.1+dfsg1-4) ... 791s Setting up libpaper2:arm64 (2.2.5-0.3) ... 791s Setting up pandoc-data (3.1.11.1-3build1) ... 791s Setting up libtsan2:arm64 (15-20250222-0ubuntu1) ... 791s Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... 791s Setting up libisl23:arm64 (0.27-1) ... 791s Setting up libdeflate-dev:arm64 (1.23-1) ... 791s Setting up node-normalize.css (8.0.1-5) ... 791s Setting up libicu-dev:arm64 (76.1-1ubuntu2) ... 791s Setting up fonts-font-awesome (5.0.10+really4.7.0~dfsg-4.1) ... 791s Setting up xdg-utils (1.2.1-2ubuntu1) ... 791s update-alternatives: using /usr/bin/xdg-open to provide /usr/bin/open (open) in auto mode 791s Setting up libcc1-0:arm64 (15-20250222-0ubuntu1) ... 791s Setting up liblsan0:arm64 (15-20250222-0ubuntu1) ... 791s Setting up libblas-dev:arm64 (3.12.1-2) ... 791s update-alternatives: using /usr/lib/aarch64-linux-gnu/blas/libblas.so to provide /usr/lib/aarch64-linux-gnu/libblas.so (libblas.so-aarch64-linux-gnu) in auto mode 791s Setting up dctrl-tools (2.24-3build3) ... 791s Setting up libjs-bootstrap (3.4.1+dfsg-3) ... 791s Setting up libitm1:arm64 (15-20250222-0ubuntu1) ... 791s Setting up libbz2-dev:arm64 (1.0.8-6) ... 791s Setting up libjs-jquery-selectize.js (0.12.6+dfsg-1.1) ... 791s Setting up libjpeg8:arm64 (8c-2ubuntu11) ... 791s Setting up libice6:arm64 (2:1.1.1-1) ... 791s Setting up libjpeg-turbo8-dev:arm64 (2.1.5-3ubuntu2) ... 791s Setting up liblapack3:arm64 (3.12.1-2) ... 791s update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so.3 to provide /usr/lib/aarch64-linux-gnu/liblapack.so.3 (liblapack.so.3-aarch64-linux-gnu) in auto mode 791s Setting up libpcre2-dev:arm64 (10.45-1) ... 791s Setting up fontconfig-config (2.15.0-2ubuntu1) ... 791s Setting up libjs-twitter-bootstrap-datepicker (1.3.1+dfsg1-4.1) ... 791s Setting up libpng-dev:arm64 (1.6.47-1) ... 791s Setting up libpaper-utils (2.2.5-0.3) ... 791s Setting up libjs-jquery-datatables (1.11.5+dfsg-2) ... 791s Setting up pkgconf:arm64 (1.8.1-4) ... 791s Setting up libthai0:arm64 (0.1.29-2build1) ... 791s Setting up libjs-jquery-ui (1.13.2+dfsg-1) ... 791s Setting up pandoc (3.1.11.1+ds-2) ... 791s Setting up liblapack-dev:arm64 (3.12.1-2) ... 791s update-alternatives: using /usr/lib/aarch64-linux-gnu/lapack/liblapack.so to provide /usr/lib/aarch64-linux-gnu/liblapack.so (liblapack.so-aarch64-linux-gnu) in auto mode 791s Setting up cpp-14-aarch64-linux-gnu (14.2.0-17ubuntu3) ... 791s Setting up libtiff6:arm64 (4.5.1+git230720-4ubuntu4) ... 791s Setting up libfontconfig1:arm64 (2.15.0-2ubuntu1) ... 791s Setting up libgcc-14-dev:arm64 (14.2.0-17ubuntu3) ... 791s Setting up libjpeg8-dev:arm64 (8c-2ubuntu11) ... 791s Setting up libstdc++-14-dev:arm64 (14.2.0-17ubuntu3) ... 791s Setting up libsm6:arm64 (2:1.2.4-1) ... 791s Setting up libgfortran-14-dev:arm64 (14.2.0-17ubuntu3) ... 791s Setting up fontconfig (2.15.0-2ubuntu1) ... 793s Regenerating fonts cache... done. 793s Setting up libxft2:arm64 (2.3.6-1build1) ... 793s Setting up libtk8.6:arm64 (8.6.16-1) ... 793s Setting up libpango-1.0-0:arm64 (1.56.2-1) ... 793s Setting up libjpeg-dev:arm64 (8c-2ubuntu11) ... 793s Setting up libcairo2:arm64 (1.18.2-2) ... 793s Setting up cpp-aarch64-linux-gnu (4:14.2.0-1ubuntu1) ... 793s Setting up libxt6t64:arm64 (1:1.2.1-1.2build1) ... 793s Setting up cpp-14 (14.2.0-17ubuntu3) ... 793s Setting up cpp (4:14.2.0-1ubuntu1) ... 793s Setting up gcc-14-aarch64-linux-gnu (14.2.0-17ubuntu3) ... 793s Setting up libpangoft2-1.0-0:arm64 (1.56.2-1) ... 793s Setting up libpangocairo-1.0-0:arm64 (1.56.2-1) ... 793s Setting up gcc-aarch64-linux-gnu (4:14.2.0-1ubuntu1) ... 793s Setting up g++-14-aarch64-linux-gnu (14.2.0-17ubuntu3) ... 793s Setting up gcc-14 (14.2.0-17ubuntu3) ... 793s Setting up r-base-core (4.4.3-1) ... 793s Creating config file /etc/R/Renviron with new version 794s Setting up r-cran-crayon (1.5.3-1) ... 794s Setting up r-cran-sourcetools (0.1.7-1-1) ... 794s Setting up gfortran-14-aarch64-linux-gnu (14.2.0-17ubuntu3) ... 794s Setting up g++-aarch64-linux-gnu (4:14.2.0-1ubuntu1) ... 794s Setting up gfortran-aarch64-linux-gnu (4:14.2.0-1ubuntu1) ... 794s Setting up r-cran-commonmark (1.9.2-2) ... 794s Setting up g++-14 (14.2.0-17ubuntu3) ... 794s Setting up r-cran-r6 (2.6.1-1) ... 794s Setting up r-cran-pkgkitten (0.2.4-1) ... 794s Setting up gfortran-14 (14.2.0-17ubuntu3) ... 794s Setting up r-cran-magrittr (2.0.3-1) ... 794s Setting up r-cran-rappdirs (0.3.3-1) ... 794s Setting up r-cran-littler (0.3.20-2) ... 794s Setting up r-cran-fs (1.6.5+dfsg-1) ... 794s Setting up r-cran-rcpp (1.0.14-1) ... 794s Setting up r-cran-diffobj (0.3.5-1) ... 794s Setting up r-cran-rlang (1.1.5-1) ... 794s Setting up littler (0.3.20-2) ... 794s Setting up r-cran-xfun (0.51+dfsg-1) ... 794s Setting up r-cran-withr (3.0.2+dfsg-1) ... 794s Setting up r-cran-mime (0.12-2) ... 794s Setting up r-cran-base64enc (0.1-3-3) ... 794s Setting up r-cran-digest (0.6.37-1) ... 794s Setting up r-cran-yaml (2.3.10-1) ... 794s Setting up r-cran-evaluate (1.0.3-1) ... 794s Setting up r-cran-highr (0.11+dfsg-1) ... 794s Setting up r-cran-glue (1.8.0-1) ... 794s Setting up r-cran-xtable (1:1.8-4-2) ... 794s Setting up r-cran-cli (3.6.4-1) ... 794s Setting up r-cran-lifecycle (1.0.4+dfsg-1) ... 794s Setting up gcc (4:14.2.0-1ubuntu1) ... 794s Setting up r-cran-fastmap (1.2.0-1) ... 794s Setting up r-cran-jsonlite (1.9.1+dfsg-1) ... 794s Setting up r-cran-later (1.4.1+dfsg-1) ... 794s Setting up r-cran-htmltools (0.5.8.1-1) ... 794s Setting up r-cran-tinytex (0.56-1) ... 794s Setting up r-cran-knitr (1.49+dfsg-1) ... 794s Setting up g++ (4:14.2.0-1ubuntu1) ... 794s update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode 794s Setting up r-cran-cachem (1.1.0-1) ... 794s Setting up r-cran-sass (0.4.9+dfsg-1) ... 794s Setting up build-essential (12.10ubuntu1) ... 794s Setting up r-cran-fontawesome (0.5.3-1) ... 794s Setting up gfortran (4:14.2.0-1ubuntu1) ... 794s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f95 (f95) in auto mode 794s 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 794s update-alternatives: using /usr/bin/gfortran to provide /usr/bin/f77 (f77) in auto mode 794s 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 794s Setting up r-cran-jquerylib (0.1.4+dfsg-4) ... 794s Setting up r-cran-memoise (2.0.1-1) ... 794s Setting up r-cran-promises (1.3.2+dfsg-1) ... 794s Setting up r-base-dev (4.4.3-1) ... 794s Setting up r-cran-httpuv (1.6.15+dfsg-1) ... 794s Setting up r-cran-bslib (0.8.0+dfsg-1) ... 794s Setting up pkg-r-autopkgtest (20231212ubuntu1) ... 794s Setting up r-cran-shiny (1.10.0+dfsg-2) ... 794s Setting up r-cran-rmarkdown (2.29+dfsg-1) ... 794s Processing triggers for libc-bin (2.41-1ubuntu2) ... 794s Processing triggers for man-db (2.13.0-1) ... 796s Processing triggers for install-info (7.1.1-1) ... 799s autopkgtest [15:37:02]: test pkg-r-autopkgtest: /usr/share/dh-r/pkg-r-autopkgtest 799s autopkgtest [15:37:02]: test pkg-r-autopkgtest: [----------------------- 800s Test: Try to load the R library diffobj 800s 800s R version 4.4.3 (2025-02-28) -- "Trophy Case" 800s Copyright (C) 2025 The R Foundation for Statistical Computing 800s Platform: aarch64-unknown-linux-gnu 800s 800s R is free software and comes with ABSOLUTELY NO WARRANTY. 800s You are welcome to redistribute it under certain conditions. 800s Type 'license()' or 'licence()' for distribution details. 800s 800s R is a collaborative project with many contributors. 800s Type 'contributors()' for more information and 800s 'citation()' on how to cite R or R packages in publications. 800s 800s Type 'demo()' for some demos, 'help()' for on-line help, or 800s 'help.start()' for an HTML browser interface to help. 800s Type 'q()' to quit R. 800s 800s > library('diffobj') 800s > 800s > 800s Other tests are currently unsupported! 800s They will be progressively added. 800s autopkgtest [15:37:03]: test pkg-r-autopkgtest: -----------------------] 801s autopkgtest [15:37:04]: test pkg-r-autopkgtest: - - - - - - - - - - results - - - - - - - - - - 801s pkg-r-autopkgtest PASS 802s autopkgtest [15:37:05]: @@@@@@@@@@@@@@@@@@@@ summary 802s run-unit-test PASS 802s pkg-r-autopkgtest PASS 810s nova [W] Using flock in prodstack6-arm64 810s Creating nova instance adt-plucky-arm64-r-cran-diffobj-20250315-152342-juju-7f2275-prod-proposed-migration-environment-15-69a4a03a-e904-4c70-ae15-c91e93b20d4d from image adt/ubuntu-plucky-arm64-server-20250315.img (UUID bd6e766c-b51f-4b53-86d6-23aa4d18f524)... 810s nova [W] Timed out waiting for aca57b0f-efe0-41a8-9194-611c59e7231d to get deleted. 810s nova [W] Using flock in prodstack6-arm64 810s flock: timeout while waiting to get lock 810s Creating nova instance adt-plucky-arm64-r-cran-diffobj-20250315-152342-juju-7f2275-prod-proposed-migration-environment-15-69a4a03a-e904-4c70-ae15-c91e93b20d4d from image adt/ubuntu-plucky-arm64-server-20250315.img (UUID bd6e766c-b51f-4b53-86d6-23aa4d18f524)... 810s nova [W] Timed out waiting for d7713e29-2c51-44f2-a62a-a9f435fe5e8b to get deleted.