Input buildinfo: https://buildinfos.debian.net/buildinfo-pool/o/octave-io/octave-io_2.6.3-1+b1_amd64.buildinfo Use metasnap for getting required timestamps New buildinfo file: /tmp/octave-io-2.6.3-1+b112veytcm/octave-io_2.6.3-1+b1_amd64.buildinfo Get source package info: octave-io=2.6.3-1 Source URL: http://snapshot.notset.fr/mr/package/octave-io/2.6.3-1/srcfiles?fileinfo=1 env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin TMPDIR=/tmp mmdebstrap --arch=amd64 --include=aglfn=1.7+git20191031.4036a9c-2 autoconf=2.69-11.1 automake=1:1.16.3-1 autopoint=0.19.8.1-10 autotools-dev=20180224.1 base-files=11 base-passwd=3.5.48 bash=5.1~rc3-1 binutils=2.35.1-4 binutils-common=2.35.1-4 binutils-x86-64-linux-gnu=2.35.1-4 bsdextrautils=2.36.1-2 bsdutils=1:2.36.1-2 build-essential=12.8 bzip2=1.0.8-4 ca-certificates=20200601 cme=1.032-1 coreutils=8.32-4+b1 cpp=4:10.2.0-1 cpp-10=10.2.1-1 dash=0.5.11+git20200708+dd9ef66-2 debconf=1.5.74 debhelper=13.3 debianutils=4.11.2 dh-autoreconf=19 dh-octave=1.0.2 dh-octave-autopkgtest=1.0.2 dh-strip-nondeterminism=1.9.0-1 diffstat=1.63-1 diffutils=1:3.7-3 dpkg=1.20.5 dpkg-dev=1.20.5 dwz=0.13+20201015-2 file=1:5.39-3 findutils=4.7.0+git20201010-2 fontconfig=2.13.1-4.2 fontconfig-config=2.13.1-4.2 fonts-dejavu-core=2.37-2 fonts-freefont-otf=20120503-10 g++=4:10.2.0-1 g++-10=10.2.1-1 gcc=4:10.2.0-1 gcc-10=10.2.1-1 gcc-10-base=10.2.1-1 gettext=0.19.8.1-10 gettext-base=0.19.8.1-10 gfortran=4:10.2.0-1 gfortran-10=10.2.1-1 gnuplot-data=5.4.1+dfsg1-1 gnuplot-nox=5.4.1+dfsg1-1 gpg=2.2.20-1 gpgconf=2.2.20-1 grep=3.6-1 groff-base=1.22.4-5 gzip=1.10-2 hdf5-helpers=1.10.6+repack-2 hostname=3.23 init-system-helpers=1.59 intltool-debian=0.35.0+20060710.5 libacl1=2.2.53-8 libaec-dev=1.0.4-1 libaec0=1.0.4-1 libalgorithm-c3-perl=0.11-1 libaliased-perl=0.34-1 libamd2=1:5.8.1+dfsg-2 libapp-cmd-perl=0.331-1 libapt-pkg-perl=0.1.36+b4 libapt-pkg6.0=2.1.12 libarchive-zip-perl=1.68-1 libarpack2=3.8.0-1 libarray-intspan-perl=2.004-1 libasan6=10.2.1-1 libasound2=1.2.4-1 libasound2-data=1.2.4-1 libassuan0=2.5.3-7.1 libatomic1=10.2.1-1 libattr1=1:2.4.48-5 libaudit-common=1:2.8.5-3.1 libaudit1=1:2.8.5-3.1 libavahi-client3=0.8-3 libavahi-common-data=0.8-3 libavahi-common3=0.8-3 libb-hooks-endofscope-perl=0.24-1 libb-hooks-op-check-perl=0.22-1+b3 libbinutils=2.35.1-4 libblas-dev=3.9.0-3 libblas3=3.9.0-3 libblkid1=2.36.1-2 libboolean-perl=0.46-1 libbrotli1=1.0.9-2+b2 libbsd0=0.10.0-1 libbz2-1.0=1.0.8-4 libc-bin=2.31-5 libc-dev-bin=2.31-5 libc6=2.31-5 libc6-dev=2.31-5 libcairo2=1.16.0-4 libcamd2=1:5.8.1+dfsg-2 libcap-ng0=0.7.9-2.2+b1 libcapture-tiny-perl=0.48-1 libcarp-assert-more-perl=1.24-1 libcarp-assert-perl=0.21-1 libcc1-0=10.2.1-1 libccolamd2=1:5.8.1+dfsg-2 libcholmod3=1:5.8.1+dfsg-2 libclass-c3-perl=0.35-1 libclass-data-inheritable-perl=0.08-3 libclass-load-perl=0.25-1 libclass-method-modifiers-perl=2.13-1 libclass-xsaccessor-perl=1.19-3+b6 libclone-choose-perl=0.010-1 libclone-perl=0.45-1+b1 libcolamd2=1:5.8.1+dfsg-2 libcom-err2=1.45.6-1 libconfig-model-backend-yaml-perl=2.133-2 libconfig-model-dpkg-perl=2.139 libconfig-model-perl=2.140-1 libconfig-tiny-perl=2.24-1 libconvert-binhex-perl=1.125-1 libcpanel-json-xs-perl=4.25-1+b1 libcroco3=0.6.13-1 libcrypt-dev=1:4.4.17-1 libcrypt1=1:4.4.17-1 libctf-nobfd0=2.35.1-4 libctf0=2.35.1-4 libcups2=2.3.3op1-3 libcurl3-gnutls=7.72.0-1 libcxsparse3=1:5.8.1+dfsg-2 libdata-dpath-perl=0.58-1 libdata-messagepack-perl=1.00-4+b1 libdata-optlist-perl=0.110-1 libdata-section-perl=0.200007-1 libdata-validate-domain-perl=0.10-1 libdatrie1=0.2.12-3 libdb5.3=5.3.28+dfsg1-0.6 libdbus-1-3=1.12.20-1 libdebconfclient0=0.255 libdebhelper-perl=13.3 libdevel-callchecker-perl=0.008-1+b2 libdevel-size-perl=0.83-1+b2 libdevel-stacktrace-perl=2.0400-1 libdouble-conversion3=3.1.5-6.1 libdpkg-perl=1.20.5 libdrm-amdgpu1=2.4.103-2 libdrm-common=2.4.103-2 libdrm-intel1=2.4.103-2 libdrm-nouveau2=2.4.103-2 libdrm-radeon1=2.4.103-2 libdrm2=2.4.103-2 libdynaloader-functions-perl=0.003-1 libedit2=3.1-20191231-1 libegl-dev=1.3.2-1 libegl-mesa0=20.2.4-1 libegl1=1.3.2-1 libelf1=0.182-1 libemail-address-xs-perl=1.04-1+b3 libencode-locale-perl=1.05-1 liberror-perl=0.17029-1 libevdev2=1.10.0+dfsg-1 libexception-class-perl=1.44-1 libexpat1=2.2.10-1 libexporter-lite-perl=0.08-1 libexporter-tiny-perl=1.002002-1 libffi7=3.3-5 libfftw3-bin=3.3.8-2 libfftw3-dev=3.3.8-2 libfftw3-double3=3.3.8-2 libfftw3-long3=3.3.8-2 libfftw3-quad3=3.3.8-2 libfftw3-single3=3.3.8-2 libfile-basedir-perl=0.08-1 libfile-find-rule-perl=0.34-1 libfile-homedir-perl=1.006-1 libfile-listing-perl=6.14-1 libfile-stripnondeterminism-perl=1.9.0-1 libfile-which-perl=1.23-1 libflac8=1.3.3-1 libfltk-gl1.3=1.3.5-2 libfltk1.3=1.3.5-2 libfont-ttf-perl=1.06-1 libfontconfig1=2.13.1-4.2 libfreetype6=2.10.4+dfsg-1 libfribidi0=1.0.8-2 libgbm1=20.2.4-1 libgcc-10-dev=10.2.1-1 libgcc-s1=10.2.1-1 libgcrypt20=1.8.7-2 libgd3=2.3.0-2 libgdbm-compat4=1.18.1-5.1 libgdbm6=1.18.1-5.1 libgetopt-long-descriptive-perl=0.105-1 libgfortran-10-dev=10.2.1-1 libgfortran5=10.2.1-1 libgl-dev=1.3.2-1 libgl1=1.3.2-1 libgl1-mesa-dev=20.2.4-1 libgl1-mesa-dri=20.2.4-1 libgl2ps1.4=1.4.2+dfsg1-1 libglapi-mesa=20.2.4-1 libgles-dev=1.3.2-1 libgles1=1.3.2-1 libgles2=1.3.2-1 libglib2.0-0=2.66.3-2 libglpk40=4.65-2 libglu1-mesa=9.0.1-1 libglvnd-dev=1.3.2-1 libglvnd0=1.3.2-1 libglx-dev=1.3.2-1 libglx-mesa0=20.2.4-1 libglx0=1.3.2-1 libgmp10=2:6.2.1+dfsg-1 libgnutls30=3.6.15-4 libgomp1=10.2.1-1 libgpg-error0=1.38-2 libgraphicsmagick++-q16-12=1.4+really1.3.35+hg16394-1 libgraphicsmagick-q16-3=1.4+really1.3.35+hg16394-1 libgraphite2-3=1.3.14-1 libgssapi-krb5-2=1.18.3-4 libgudev-1.0-0=234-1 libharfbuzz0b=2.6.7-1 libhash-fieldhash-perl=0.15-1+b3 libhash-merge-perl=0.302-1 libhdf5-103-1=1.10.6+repack-2 libhdf5-cpp-103-1=1.10.6+repack-2 libhdf5-dev=1.10.6+repack-2 libhdf5-fortran-102=1.10.6+repack-2 libhdf5-hl-100=1.10.6+repack-2 libhdf5-hl-cpp-100=1.10.6+repack-2 libhdf5-hl-fortran-100=1.10.6+repack-2 libhogweed6=3.6-2 libhtml-html5-entities-perl=0.004-1 libhtml-parser-perl=3.75-1+b1 libhtml-tagset-perl=3.20-4 libhtml-tree-perl=5.07-2 libhttp-cookies-perl=6.09-1 libhttp-date-perl=6.05-1 libhttp-message-perl=6.26-1 libhttp-negotiate-perl=6.01-1 libice6=2:1.0.10-1 libicu67=67.1-5 libidn2-0=2.3.0-4 libimport-into-perl=1.002005-1 libinput-bin=1.16.4-1 libinput10=1.16.4-1 libio-html-perl=1.001-1 libio-socket-ssl-perl=2.068-1 libio-string-perl=1.08-3 libio-stringy-perl=2.111-3 libio-tiecombine-perl=1.005-1 libipc-run3-perl=0.048-2 libipc-system-simple-perl=1.30-1 libisl23=0.23-1 libiterator-perl=0.03+ds1-1 libiterator-util-perl=0.02+ds1-1 libitm1=10.2.1-1 libjack-jackd2-0=1.9.16~dfsg-1 libjbig0=2.1-3.1+b2 libjpeg-dev=1:2.0.5-1.1 libjpeg62-turbo=1:2.0.5-1.1 libjpeg62-turbo-dev=1:2.0.5-1.1 libjson-maybexs-perl=1.004003-1 libjson-perl=4.02000-2 libk5crypto3=1.18.3-4 libkeyutils1=1.6.1-2 libkrb5-3=1.18.3-4 libkrb5support0=1.18.3-4 liblapack-dev=3.9.0-3 liblapack3=3.9.0-3 liblcms2-2=2.9-4+b1 libldap-2.4-2=2.4.56+dfsg-1 liblist-compare-perl=0.55-1 liblist-moreutils-perl=0.416-1+b6 liblist-someutils-perl=0.58-1 liblist-utilsby-perl=0.11-1 libllvm11=1:11.0.0-5+b1 liblog-any-adapter-screen-perl=0.140-1 liblog-any-perl=1.708-1 liblog-log4perl-perl=1.53-1 liblsan0=10.2.1-1 libltdl7=2.4.6-14 liblua5.4-0=5.4.2-1 liblwp-mediatypes-perl=6.04-1 liblwp-protocol-https-perl=6.09-1 liblz4-1=1.9.2-2 liblzma5=5.2.4-1+b1 liblzo2-2=2.10-2 libmagic-mgc=1:5.39-3 libmagic1=1:5.39-3 libmailtools-perl=2.21-1 libmarkdown2=2.2.6-1 libmd4c0=0.4.6-1 libmetis5=5.1.0.dfsg-7 libmime-tools-perl=5.509-1 libmodule-implementation-perl=0.09-1 libmodule-pluggable-perl=5.2-1 libmodule-runtime-perl=0.016-1 libmoo-perl=2.004004-1 libmoox-aliases-perl=0.001006-1 libmoox-struct-perl=0.020-1 libmount1=2.36.1-2 libmouse-perl=2.5.10-1+b1 libmousex-nativetraits-perl=1.09-2 libmousex-strictconstructor-perl=0.02-2 libmpc3=1.2.0-1 libmpfr6=4.1.0-3 libmro-compat-perl=0.13-1 libmtdev1=1.1.6-1 libnamespace-autoclean-perl=0.29-1 libnamespace-clean-perl=0.27-1 libncurses-dev=6.2+20201114-1 libncurses6=6.2+20201114-1 libncursesw6=6.2+20201114-1 libnet-domain-tld-perl=1.75-1 libnet-http-perl=6.19-1 libnet-smtp-ssl-perl=1.04-1 libnet-ssleay-perl=1.88-3+b1 libnettle8=3.6-2 libnghttp2-14=1.42.0-1 libnsl-dev=1.3.0-2 libnsl2=1.3.0-2 libnumber-compare-perl=0.03-1 libnumber-range-perl=0.12-1 libobject-id-perl=0.1.2-2 liboctave-dev=6.1.0-2 liboctave8=6.1.0-2 libogg0=1.3.2-1+b1 libopengl-dev=1.3.2-1 libopengl0=1.3.2-1 libp11-kit0=0.23.21-2 libpackage-stash-perl=0.39-1 libpam-modules=1.3.1-5 libpam-modules-bin=1.3.1-5 libpam-runtime=1.3.1-5 libpam0g=1.3.1-5 libpango-1.0-0=1.46.2-3 libpangocairo-1.0-0=1.46.2-3 libpangoft2-1.0-0=1.46.2-3 libparams-classify-perl=0.015-1+b3 libparams-util-perl=1.102-1+b1 libparams-validate-perl=1.30-1+b1 libparse-debcontrol-perl=2.005-4 libparse-recdescent-perl=1.967015+dfsg-2 libpath-iterator-rule-perl=1.014-1 libpath-tiny-perl=0.114-1 libpciaccess0=0.16-1 libpcre2-16-0=10.35-2 libpcre2-8-0=10.35-2 libpcre3=2:8.39-13 libperl5.32=5.32.0-5 libperlio-gzip-perl=0.19-1+b7 libpipeline1=1.5.3-1 libpixman-1-0=0.40.0-1 libpng16-16=1.6.37-3 libpod-constants-perl=0.19-2 libpod-parser-perl=1.63-2 libpod-pom-perl=2.01-3 libportaudio2=19.6.0-1.1 libproc-processtable-perl=0.59-2+b1 libpsl5=0.21.0-1.1 libpthread-stubs0-dev=0.4-1 libqhull8.0=2020.2-3 libqrupdate1=1.1.2-4 libqscintilla2-qt5-15=2.11.6+dfsg-1 libqscintilla2-qt5-l10n=2.11.6+dfsg-1 libqt5core5a=5.15.1+dfsg-4 libqt5dbus5=5.15.1+dfsg-4 libqt5gui5=5.15.1+dfsg-4 libqt5help5=5.15.1-2+b1 libqt5network5=5.15.1+dfsg-4 libqt5printsupport5=5.15.1+dfsg-4 libqt5sql5=5.15.1+dfsg-4 libqt5widgets5=5.15.1+dfsg-4 libqt5xml5=5.15.1+dfsg-4 libquadmath0=10.2.1-1 libre-engine-re2-perl=0.13-5+b5 libre2-9=20201101+dfsg-2 libreadline-dev=8.1-1 libreadline8=8.1-1 libregexp-common-perl=2017060201-1 libregexp-pattern-license-perl=3.4.0-1 libregexp-pattern-perl=0.2.14-1 librole-tiny-perl=2.001004-1 librtmp1=2.4+20151223.gitfa8646d.1-2+b2 libsamplerate0=0.1.9-2 libsasl2-2=2.1.27+dfsg-2 libsasl2-modules-db=2.1.27+dfsg-2 libseccomp2=2.5.0-3 libselinux1=3.1-2+b1 libsensors-config=1:3.6.0-2 libsensors5=1:3.6.0-2 libsereal-decoder-perl=4.018+ds-1+b1 libsereal-encoder-perl=4.018+ds-1+b1 libsigsegv2=2.12-2 libsm6=2:1.2.3-1 libsmartcols1=2.36.1-2 libsndfile1=1.0.28-8 libsoftware-license-perl=0.103014-2 libsoftware-licensemoreutils-perl=1.005-1 libsort-key-perl=1.33-2+b3 libsort-versions-perl=1.62-1 libsqlite3-0=3.34.0-1 libssh2-1=1.9.0-1 libssl1.1=1.1.1h-1 libstdc++-10-dev=10.2.1-1 libstdc++6=10.2.1-1 libstrictures-perl=2.000006-1 libstring-copyright-perl=0.003006-1 libstring-escape-perl=2010.002-2 libstring-rewriteprefix-perl=0.008-1 libsub-exporter-perl=0.987-1 libsub-exporter-progressive-perl=0.001013-1 libsub-identify-perl=0.14-1+b3 libsub-install-perl=0.928-1 libsub-name-perl=0.26-1+b1 libsub-override-perl=0.09-2 libsub-quote-perl=2.006006-1 libsub-uplevel-perl=0.2800-1 libsuitesparseconfig5=1:5.8.1+dfsg-2 libsystemd0=247.1-3 libsz2=1.0.4-1 libtasn1-6=4.16.0-2 libtest-exception-perl=0.43-1 libtext-autoformat-perl=1.750000-1 libtext-glob-perl=0.11-1 libtext-levenshtein-damerau-perl=0.41-1 libtext-levenshteinxs-perl=0.03-4+b8 libtext-markdown-discount-perl=0.12-1+b1 libtext-reform-perl=1.20-3 libtext-template-perl=1.59-1 libtext-unidecode-perl=1.30-1 libtext-xslate-perl=3.5.8-1+b1 libthai-data=0.1.28-3 libthai0=0.1.28-3 libtiff5=4.1.0+git191117-2 libtime-duration-perl=1.21-1 libtime-moment-perl=0.44-1+b3 libtimedate-perl=2.3300-1 libtinfo6=6.2+20201114-1 libtirpc-common=1.2.6-3 libtirpc-dev=1.2.6-3 libtirpc3=1.2.6-3 libtool=2.4.6-14 libtry-tiny-perl=0.30-1 libtsan0=10.2.1-1 libtype-tiny-perl=1.012000-1 libubsan1=10.2.1-1 libuchardet0=0.0.7-1 libudev1=247.1-3 libumfpack5=1:5.8.1+dfsg-2 libunicode-utf8-perl=0.62-1+b2 libunistring2=0.9.10-4 liburi-perl=5.05-1 libuuid1=2.36.1-2 libvariable-magic-perl=0.62-1+b3 libvorbis0a=1.3.7-1 libvorbisenc2=1.3.7-1 libvulkan1=1.2.154.1-1 libwacom-common=1.6-1 libwacom2=1.6-1 libwayland-client0=1.18.0-2~exp1.1 libwayland-server0=1.18.0-2~exp1.1 libwebp6=0.6.1-2+b1 libwebpmux3=0.6.1-2+b1 libwmf0.2-7=0.2.8.4-17 libwww-perl=6.49-1 libwww-robotrules-perl=6.02-1 libx11-6=2:1.6.12-1 libx11-data=2:1.6.12-1 libx11-dev=2:1.6.12-1 libx11-xcb1=2:1.6.12-1 libxau-dev=1:1.0.8-1+b2 libxau6=1:1.0.8-1+b2 libxcb-dri2-0=1.14-2 libxcb-dri3-0=1.14-2 libxcb-glx0=1.14-2 libxcb-icccm4=0.4.1-1.1 libxcb-image0=0.4.0-1+b3 libxcb-keysyms1=0.4.0-1+b2 libxcb-present0=1.14-2 libxcb-randr0=1.14-2 libxcb-render-util0=0.3.9-1+b1 libxcb-render0=1.14-2 libxcb-shape0=1.14-2 libxcb-shm0=1.14-2 libxcb-sync1=1.14-2 libxcb-util1=0.4.0-1+b1 libxcb-xfixes0=1.14-2 libxcb-xinerama0=1.14-2 libxcb-xinput0=1.14-2 libxcb-xkb1=1.14-2 libxcb1=1.14-2 libxcb1-dev=1.14-2 libxcursor1=1:1.2.0-2 libxdamage1=1:1.1.5-2 libxdmcp-dev=1:1.1.2-3 libxdmcp6=1:1.1.2-3 libxext6=2:1.3.3-1+b2 libxfixes3=1:5.0.3-2 libxft2=2.3.2-2 libxinerama1=2:1.1.4-2 libxkbcommon-x11-0=1.0.3-2 libxkbcommon0=1.0.3-2 libxml-libxml-perl=2.0134+dfsg-2+b1 libxml-namespacesupport-perl=1.12-1 libxml-sax-base-perl=1.09-1 libxml-sax-perl=1.02+dfsg-1 libxml2=2.9.10+dfsg-6.3+b1 libxpm4=1:3.5.12-1 libxrender1=1:0.9.10-1 libxshmfence1=1.3-1 libxxf86vm1=1:1.1.4-1+b2 libyaml-0-2=0.2.2-1 libyaml-libyaml-perl=0.82+repack-1+b1 libyaml-perl=1.30-1 libyaml-tiny-perl=1.73-1 libz3-4=4.8.9-1 libzstd1=1.4.5+dfsg-4 licensecheck=3.0.47-1 lintian=2.104.0 linux-libc-dev=5.9.11-1 login=1:4.8.1-1 lsb-base=11.1.0 lzip=1.21-8 lzop=1.04-2 m4=1.4.18-4 make=4.3-4 man-db=2.9.3-2 mawk=1.3.4.20200120-2 ncurses-base=6.2+20201114-1 ncurses-bin=6.2+20201114-1 netbase=6.2 octave=6.1.0-2 octave-common=6.1.0-2 openssl=1.1.1h-1 patch=2.7.6-6 patchutils=0.4.2-1 perl=5.32.0-5 perl-base=5.32.0-5 perl-modules-5.32=5.32.0-5 perl-openssl-defaults=5 po-debconf=1.0.21 readline-common=8.1-1 sed=4.7-1 sensible-utils=0.0.12+nmu1 shared-mime-info=2.0-1 sysvinit-utils=2.96-5 t1utils=1.41-4 tar=1.32+dfsg-1 tex-common=6.15 texinfo=6.7.0.dfsg.2-5+b1 ucf=3.0043 unzip=6.0-25 util-linux=2.36.1-2 x11-common=1:7.7+21 x11proto-core-dev=2020.1-1 x11proto-dev=2020.1-1 xkb-data=2.29-2 xorg-sgml-doctools=1:1.11-1 xtrans-dev=1.4.0-1 xz-utils=5.2.4-1+b1 zlib1g=1:1.2.11.dfsg-2 zlib1g-dev=1:1.2.11.dfsg-2 --variant=apt --aptopt=Acquire::Check-Valid-Until "false" --aptopt=Acquire::http::Dl-Limit "1000"; --aptopt=Acquire::https::Dl-Limit "1000"; --aptopt=Acquire::Retries "5"; --aptopt=APT::Get::allow-downgrades "true"; --keyring=/usr/share/keyrings/ --essential-hook=chroot "$1" sh -c "apt-get --yes install fakeroot util-linux" --essential-hook=copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ --essential-hook=chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20201216T205250Z/ unstable main deb http://snapshot.notset.fr/archive/debian/20201207T144442Z/ unstable main' >> /etc/apt/sources.list && apt-get update" --customize-hook=chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash --customize-hook=chroot "$1" env sh -c "apt-get source --only-source -d octave-io=2.6.3-1 && mkdir -p /build/octave-io-luhJNf && dpkg-source --no-check -x /*.dsc /build/octave-io-luhJNf/octave-io-2.6.3 && cd /build/octave-io-luhJNf/octave-io-2.6.3 && { printf '%s' 'octave-io (2.6.3-1+b1) sid; urgency=low, binary-only=yes * Binary-only non-maintainer upload for amd64; no source changes. * Rebuild against octave 6 -- amd64 / i386 Build Daemon (x86-ubc-01) Wed, 09 Dec 2020 18:12:30 +0000 '; cat debian/changelog; } > debian/changelog.debrebuild && mv debian/changelog.debrebuild debian/changelog && chown -R builduser:builduser /build/octave-io-luhJNf" --customize-hook=chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/octave-io-luhJNf/octave-io-2.6.3 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1607537550" dpkg-buildpackage -uc -a amd64 --build=any" --customize-hook=sync-out /build/octave-io-luhJNf /tmp/octave-io-2.6.3-1+b112veytcm bullseye /dev/null deb http://snapshot.notset.fr/archive/debian/20201207T144442Z unstable main I: automatically chosen mode: root I: chroot architecture amd64 is equal to the host's architecture I: automatically chosen format: tar I: using /tmp/mmdebstrap.Ni3O565rt_ as tempdir I: running apt-get update... I: downloading packages with apt... I: extracting archives... I: installing essential packages... I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "apt-get --yes install fakeroot util-linux"' exec /tmp/mmdebstrap.Ni3O565rt_ Reading package lists... Building dependency tree... util-linux is already the newest version (2.36.1-2). The following NEW packages will be installed: fakeroot libfakeroot 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 134 kB of archives. After this operation, 397 kB of additional disk space will be used. Get:1 http://snapshot.notset.fr/archive/debian/20201207T144442Z unstable/main amd64 libfakeroot amd64 1.25.3-1.1 [47.0 kB] Get:2 http://snapshot.notset.fr/archive/debian/20201207T144442Z unstable/main amd64 fakeroot amd64 1.25.3-1.1 [87.0 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 134 kB in 0s (897 kB/s) Selecting previously unselected package libfakeroot:amd64. (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 ... 4614 files and directories currently installed.) Preparing to unpack .../libfakeroot_1.25.3-1.1_amd64.deb ... Unpacking libfakeroot:amd64 (1.25.3-1.1) ... Selecting previously unselected package fakeroot. Preparing to unpack .../fakeroot_1.25.3-1.1_amd64.deb ... Unpacking fakeroot (1.25.3-1.1) ... Setting up libfakeroot:amd64 (1.25.3-1.1) ... Setting up fakeroot (1.25.3-1.1) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Processing triggers for libc-bin (2.31-5) ... I: running special hook: copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20210814T212851Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20201216T205250Z/ unstable main deb http://snapshot.notset.fr/archive/debian/20201207T144442Z/ unstable main' >> /etc/apt/sources.list && apt-get update"' exec /tmp/mmdebstrap.Ni3O565rt_ Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm InRelease [81.6 kB] Get:2 http://snapshot.notset.fr/archive/debian/20201216T205250Z unstable InRelease [153 kB] Hit:3 http://snapshot.notset.fr/archive/debian/20201207T144442Z unstable InRelease Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Get:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources [11.4 MB] Get:5 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages [11.1 MB] Ign:6 http://snapshot.notset.fr/archive/debian/20201216T205250Z unstable/main amd64 Packages Ign:6 http://snapshot.notset.fr/archive/debian/20201216T205250Z unstable/main amd64 Packages Ign:6 http://snapshot.notset.fr/archive/debian/20201216T205250Z unstable/main amd64 Packages Get:6 http://snapshot.notset.fr/archive/debian/20201216T205250Z unstable/main amd64 Packages [11.6 MB] Fetched 34.3 MB in 29s (1172 kB/s) Reading package lists... I: installing remaining packages inside the chroot... I: running --customize-hook in shell: sh -c 'chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash' exec /tmp/mmdebstrap.Ni3O565rt_ I: running --customize-hook in shell: sh -c 'chroot "$1" env sh -c "apt-get source --only-source -d octave-io=2.6.3-1 && mkdir -p /build/octave-io-luhJNf && dpkg-source --no-check -x /*.dsc /build/octave-io-luhJNf/octave-io-2.6.3 && cd /build/octave-io-luhJNf/octave-io-2.6.3 && { printf '%s' 'octave-io (2.6.3-1+b1) sid; urgency=low, binary-only=yes * Binary-only non-maintainer upload for amd64; no source changes. * Rebuild against octave 6 -- amd64 / i386 Build Daemon (x86-ubc-01) Wed, 09 Dec 2020 18:12:30 +0000 '; cat debian/changelog; } > debian/changelog.debrebuild && mv debian/changelog.debrebuild debian/changelog && chown -R builduser:builduser /build/octave-io-luhJNf"' exec /tmp/mmdebstrap.Ni3O565rt_ Reading package lists... NOTICE: 'octave-io' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/pkg-octave-team/octave-io.git Please use: git clone https://salsa.debian.org/pkg-octave-team/octave-io.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 345 kB of source archives. Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main octave-io 2.6.3-1 (dsc) [2116 B] Get:2 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main octave-io 2.6.3-1 (tar) [228 kB] Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main octave-io 2.6.3-1 (diff) [115 kB] Fetched 345 kB in 0s (891 kB/s) Download complete and in download only mode W: Download is performed unsandboxed as root as file 'octave-io_2.6.3-1.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) dpkg-source: info: extracting octave-io in /build/octave-io-luhJNf/octave-io-2.6.3 dpkg-source: info: unpacking octave-io_2.6.3.orig.tar.gz dpkg-source: info: unpacking octave-io_2.6.3-1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying commons-compress-unversioned.patch dpkg-source: info: applying conditional-java.patch I: running --customize-hook in shell: sh -c 'chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/octave-io-luhJNf/octave-io-2.6.3 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1607537550" dpkg-buildpackage -uc -a amd64 --build=any"' exec /tmp/mmdebstrap.Ni3O565rt_ dpkg-buildpackage: info: source package octave-io dpkg-buildpackage: info: source version 2.6.3-1+b1 dpkg-buildpackage: info: source distribution sid dpkg-buildpackage: info: source changed by amd64 / i386 Build Daemon (x86-ubc-01) dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean --buildsystem=octave --with=octave dh_auto_clean -O--buildsystem=octave dh_octave_clean make[1]: Entering directory '/build/octave-io-luhJNf/octave-io-2.6.3/src' rm -f *.o octave-core core *.oct *.mex *~ make[1]: Leaving directory '/build/octave-io-luhJNf/octave-io-2.6.3/src' dh_autoreconf_clean -O--buildsystem=octave dh_clean -O--buildsystem=octave debian/rules binary-arch dh binary-arch --buildsystem=octave --with=octave dh_update_autotools_config -a -O--buildsystem=octave dh_autoreconf -a -O--buildsystem=octave dh_octave_version -a -O--buildsystem=octave Checking the Octave version... ok dh_auto_configure -a -O--buildsystem=octave dh_auto_build -a -O--buildsystem=octave dh_auto_test -a -O--buildsystem=octave create-stamp debian/debhelper-build-stamp dh_testroot -a -O--buildsystem=octave dh_prep -a -O--buildsystem=octave dh_auto_install -a -O--buildsystem=octave octave --no-gui --no-history --silent --no-init-file --no-window-system /usr/share/dh-octave/install-pkg.m warning: creating installation directory /build/octave-io-luhJNf/octave-io-2.6.3/debian/octave-io/usr/share/octave/packages warning: called from install at line 36 column 5 pkg at line 568 column 9 /usr/share/dh-octave/install-pkg.m at line 47 column 1 make[1]: Entering directory '/build/octave-io-luhJNf/octave-io-2.6.3/src' /usr/bin/mkoctfile --verbose csvexplode.cc /usr/bin/mkoctfile --verbose csv2cell.cc /usr/bin/mkoctfile --verbose csvconcat.cc /usr/bin/mkoctfile --verbose cell2csv.cc /usr/bin/mkoctfile --verbose col2num.cc /usr/bin/mkoctfile --verbose num2col.cc g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security csvexplode.cc -o /tmp/oct-yATPZj.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security csv2cell.cc -o /tmp/oct-qVpXos.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security csvconcat.cc -o /tmp/oct-HN05Kt.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security cell2csv.cc -o /tmp/oct-njMUQB.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security col2num.cc -o /tmp/oct-sUpcGF.o g++ -c -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security num2col.cc -o /tmp/oct-HLzLLH.o g++ -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -o col2num.oct /tmp/oct-sUpcGF.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -o num2col.oct /tmp/oct-HLzLLH.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -o csvconcat.oct /tmp/oct-HN05Kt.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -o csvexplode.oct /tmp/oct-yATPZj.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -o cell2csv.oct /tmp/oct-njMUQB.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro g++ -I/usr/include/octave-6.1.0/octave/.. -I/usr/include/octave-6.1.0/octave -pthread -fopenmp -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -o csv2cell.oct /tmp/oct-qVpXos.o -shared -Wl,-Bsymbolic -Wl,-z,relro -L/usr/lib/x86_64-linux-gnu -Wl,-z,relro make[1]: Leaving directory '/build/octave-io-luhJNf/octave-io-2.6.3/src' copyfile /build/octave-io-luhJNf/octave-io-2.6.3/./src/cell2csv.oct /build/octave-io-luhJNf/octave-io-2.6.3/./src/col2num.oct /build/octave-io-luhJNf/octave-io-2.6.3/./src/csv2cell.oct /build/octave-io-luhJNf/octave-io-2.6.3/./src/csvconcat.oct /build/octave-io-luhJNf/octave-io-2.6.3/./src/csvexplode.oct /build/octave-io-luhJNf/octave-io-2.6.3/./src/num2col.oct /build/octave-io-luhJNf/octave-io-2.6.3/./src/cell2csv.cc-tst /build/octave-io-luhJNf/octave-io-2.6.3/./src/col2num.cc-tst /build/octave-io-luhJNf/octave-io-2.6.3/./src/csv2cell.cc-tst /build/octave-io-luhJNf/octave-io-2.6.3/./src/num2col.cc-tst /build/octave-io-luhJNf/octave-io-2.6.3/./inst/x86_64-pc-linux-gnu-api-v55 For information about changes from previous versions of the io package, run 'news io'. chmod: cannot access 'debian/*/usr/lib/*/octave/packages/*/*/*.mex': No such file or directory dh_octave_check -a -O--buildsystem=octave Checking package... Checking m files ... [inst/object2json.m] >>>>> /build/octave-io-luhJNf/octave-io-2.6.3/inst/object2json.m ***** test assert(object2json([logical(1), logical(0)]), '[true,false]'); ***** test car.name = 'Mzd R8'; car.speedsamples = [98, 33, 50; 56, 120, 102; 77, 82, 93]; car.toofast = car.speedsamples >= 90; car.leased = logical(1); car.european = logical(0); assert(object2json(car), '{"name":"Mzd R8","speedsamples":[[98,33,50],[56,120,102],[77,82,93]],"toofast":[[true,false,false],[false,true,true],[false,false,true]],"leased":true,"european":false}'); 2 tests, 2 passed, 0 known failure, 0 skipped [inst/read_namelist.m] >>>>> /build/octave-io-luhJNf/octave-io-2.6.3/inst/read_namelist.m ***** test fn = tempname (); fid = fopen (fn, "w"); fprintf (fid, "&test\n"); fprintf (fid, " z = (1.1,2.2), (0.,1.), (1.,0.)\n"); fprintf (fid, " y = (9,8)\n"); fprintf (fid, " a = 1. 2. 3.\n"); fprintf (fid, [' c = "(test)"' "\n" '\\' "\n"]); fclose (fid); nm = read_namelist (fn); unlink (fn); assert (nm.test.z, [1.1+2.2i, 1i, 1], eps); assert (nm.test.y, 9+8i, eps); assert (nm.test.a, [1 2 3], eps); ***** test fn = tempname (); fid = fopen (fn, "w"); fprintf (fid, "&test\n"); fprintf (fid, " a = 1,\n"); fprintf (fid, " /\n"); fclose (fid); nm = read_namelist (fn); unlink (fn); assert (nm.test.a, 1, eps); ***** test fn = tempname(); fid = fopen (fn, "w"); fprintf (fid, "&test\n"); fprintf (fid, " a = '/',\n"); % inside apostrophes fprintf (fid, " b = ""/"",\n"); % inside double quotes fprintf (fid, " c = '""/',\n"); % with double quotes inside apostrophes fprintf (fid, " d = ""'/"",\n"); % with apostrophes inside double quotes fprintf (fid, "/\n"); fclose (fid); nm = read_namelist (fn); unlink (fn); assert (strcmp(nm.test.a, '/'), 1, eps); assert (strcmp(nm.test.b, '/'), 1, eps); assert (strcmp(nm.test.c, '"/'), 1, eps); assert (strcmp(nm.test.d, '''/'), 1, eps); 3 tests, 3 passed, 0 known failure, 0 skipped [inst/toJSON.m] >>>>> /build/octave-io-luhJNf/octave-io-2.6.3/inst/toJSON.m ***** test ## invalid args ***** warning toJSON(0,struct); ***** warning toJSON(0,:,struct); ***** test ## no args assert(toJSON(),''); ***** test ## empty string assert(toJSON(''),'""'); ***** test ## empty array assert(toJSON([]),'[]'); ***** test ## zero assert(toJSON(0),"0") ***** test ## false assert(toJSON(false),'false') ***** test ## float assert(toJSON(pi),'3.14159265358979') ***** test ## PREC input arg test assert(toJSON(pi, 0),'3') assert(toJSON(pi, 5),'3.1416') assert(toJSON(pi, -5),'3.1416') assert(toJSON(pi, 25),'3.141592653589793115997963') assert(toJSON(pi, :),'3.14159265358979') assert(toJSON(pi, []),'3.14159265358979') assert(toJSON(pi, false),'3.14159265358979'); assert(toJSON(pi, {}),'3.14159265358979'); ***** test ## number single assert(toJSON(single(pi)),'3.14159274101257') ***** test ## number int8 assert(toJSON(int8(pi)),'3') ***** test ## number int32 assert(toJSON(int32(pi)),'3') ***** test ## number string assert(toJSON("3"),'"3"') ***** test ## string assert(toJSON("abcdefg"), '"abcdefg"'); ***** test ## unknown class if usejava("jvm") obj = javaObject ("java.math.BigDecimal", 1.0); assert(toJSON(obj), '"[java.math.BigDecimal]"'); endif ***** test ## apparent JSON string, do not quote assert(toJSON('[]'),'[]'); assert(toJSON('[1,2, 3]'),'[1,2, 3]'); assert(toJSON('{}'),'{}'); assert(toJSON('{"a":4}'),'{"a":4}'); assert(toJSON('""'),'""'); assert(toJSON(' "abc def" '),'"abc def"'); ***** test ## vectors assert(toJSON([1,2,3]),'[1,2,3]') assert(toJSON([1;2;3]),'[1,2,3]') ***** test ## vector with PREC assert(toJSON(pi*(1:4),3),'[3.14,6.28,9.42,12.6]') ***** test ## matrix assert(toJSON([1,2,3;13,14,15]),'[[1,2,3],[13,14,15]]') ***** test ## boolean 2D array assert(toJSON(![1 1;0 1]),'[[false,false],[true,false]]') ***** test ## ND array assert(toJSON(reshape(1:8,2,2,2)),'[[[1,3],[2,4]],[[5,7],[6,8]]]') ***** test ## more N ND array ndmat = ones(2,2,2,3); ndmat([4,9,21]) = [4,9,21]; json = toJSON(ndmat); assert(json,'[[[[1,1],[1,4]],[[1,1],[1,1]]],[[[9,1],[1,1]],[[1,1],[1,1]]],[[[1,1],[1,1]],[[21,1],[1,1]]]]') ***** test ## string array assert(toJSON(["a";"bc";"defg"]), '["a ","bc ","defg"]'); ***** test ## string array assert(toJSON(["a";"bc";"defg"]'), '["abd"," ce"," f"," g"]'); ***** test ## cell vector assert(toJSON({1,2,3}),'[1,2,3]') assert(toJSON({1;2;3}),'[1,2,3]') ***** test ## mixed cell vector assert(toJSON({1,2,3,"a"}),'[1,2,3,"a"]') ***** test ## cell array of numerical vectors assert(toJSON({[1,2,3];[3,4,5]}),'[[1,2,3],[3,4,5]]') ***** test ## numerical ND cell array (look just like ND numerical array) json = toJSON(num2cell(reshape(1:8,2,2,2))); assert(json,'[[[1,3],[2,4]],[[5,7],[6,8]]]') ***** test ## numerical ND cell array, with PREC c = num2cell(reshape(1:8,2,2,2)); c{5} = pi; assert(toJSON(c,5),'[[[1,3],[2,4]],[[3.1416,7],[6,8]]]') ***** test ## mixed ND cell array c = num2cell(reshape(1:8,2,2,2)); c{5} = "a"; assert(toJSON(c),'[[[1,3],[2,4]],[["a",7],[6,8]]]') ***** test ## structure numbers assert(toJSON(struct(), true),'{}') ***** test ## structure numbers assert(toJSON(struct("a",3,"b",5), true),'{"a":3,"b":5}') ***** test ## structure string s = struct("a","hello","b",4); assert(toJSON(s, true),'{"a":"hello","b":4}') ***** test ## structure string array s = struct("a","","b",4); s.a = {"hello","bye"}; assert(toJSON(s, true),'{"a":["hello","bye"],"b":4}') ***** test ## structure array COMPACT=false assert(toJSON(struct("a",{3.125;3.125}), false),'[{"a":3.125},{"a":3.125}]') ***** test ## structure array COMPACT=true assert(toJSON(struct("a",{3.125;3.125}), true),'{"a":[3.125,3.125]}') assert(toJSON(struct("a",{pi;pi}), 5, true),'{"a":[3.1416,3.1416]}') ***** test ## structure array 2D s = struct("a",{1 3;2 4},"b",{11 13;12 14}); assert(toJSON(s, true),'{"a":[[1,3],[2,4]],"b":[[11,13],[12,14]]}') ***** test ## structure array 2D COMPACT=false s = struct("a",{1 3;2 4},"b",{11 13;12 14}); assert(toJSON(s, false),'[[{"a":1,"b":11},{"a":3,"b":13}],[{"a":2,"b":12},{"a":4,"b":14}]]') ***** test ## mixed cell array assert(toJSON({1,2,3,"a",struct("a",3)}, true),'[1,2,3,"a",{"a":3}]') ***** test ## complex number assert(toJSON(i, true),'{"re":0,"im":1}'); ***** test ## complex number 1D array assert(toJSON([i,1], true),'{"re":[0,1],"im":[1,0]}'); ***** test ## complex number COMPACT=false, assert(toJSON([i,1], false),'[{"re":0,"im":1},{"re":1,"im":0}]'); ***** test ## test complex number 2D array assert(toJSON([i 1;2 i*3],true),'{"re":[[0,1],[2,0]],"im":[[1,0],[0,3]]}'); ***** test ## struct with complex number assert(toJSON(struct('a',1+i,'b',3),true), '{"a":{"re":1,"im":1},"b":3}'); ***** test ## struct ARRAY with complex number json = toJSON(struct('a',{1;i},'b',{5;2}),true); assert(json, '{"a":{"re":[1,0],"im":[0,1]},"b":[5,2]}'); ***** test ## struct ARRAY with complex number COMPACT=false, json = toJSON(struct('a',{1;i},'b',{5;2}),false); assert(json, '[{"a":1,"b":5},{"a":{"re":0,"im":1},"b":2}]'); ***** test ## struct ARRAY with complex number COMPACT=false, json = toJSON(struct('a',{[1 2i];[3 i]},'b',{5;2}),false); assert(json, '[{"a":[{"re":1,"im":0},{"re":0,"im":2}],"b":5},{"a":[{"re":3,"im":0},{"re":0,"im":1}],"b":2}]'); ***** test ## ND struct array json=toJSON(struct('a',num2cell(reshape(1:8,2,2,2))),true); assert(json, '{"a":[[[1,3],[2,4]],[[5,7],[6,8]]]}'); ***** test ## ND struct array COMPACT=false, json=toJSON(struct('a',num2cell(reshape(1:8,2,2,2))),false); assert(json, '[[[{"a":1},{"a":3}],[{"a":2},{"a":4}]],[[{"a":5},{"a":7}],[{"a":6},{"a":8}]]]'); ***** test ## inline function assert(toJSON(@sin),'"@(x) sin(x)"') assert(toJSON(@(a,b)a+b+c),'"@(a, b) a + b + c"') ***** test ## struct with java object if usejava("jvm") obj = javaObject ("java.math.BigDecimal", 1.0); assert(toJSON(struct('a',obj)), '{"a":"[java.math.BigDecimal]"}'); endif ***** test ## structure array DEFAULT COMPACT s = struct("a",{3.125;3.125}); assert(toJSON(s),'[{"a":3.125},{"a":3.125}]') ***** test %% jsondecode's a big test var1 = struct ('para', ['A meta-markup language, used to create ' ... 'markup languages such as DocBook.'], ... 'GlossSeeAlso', {{'GML'; 'XML'}}); var2 = struct ('ID', 'SGML', 'SortAs', 'SGML', ... 'GlossTerm', 'Standard Generalized Markup Language', ... 'Acronym', 'SGML', 'Abbrev', 'ISO 8879:1986', ... 'GlossDef', var1, 'GlossSee', 'markup'); data = struct ('glossary', ... struct ('title', 'example glossary', ... 'GlossDiv', struct ('title', 'S', ... 'GlossList', ... struct ('GlossEntry', var2)))); exp = ['{' , ... '"glossary":{', ... '"title":"example glossary",', ... '"GlossDiv":{', ... '"title":"S",', ... '"GlossList":{', ... '"GlossEntry":{', ... '"ID":"SGML",', ... '"SortAs":"SGML",', ... '"GlossTerm":"Standard Generalized Markup Language",', ... '"Acronym":"SGML",', ... '"Abbrev":"ISO 8879:1986",', ... '"GlossDef":{', ... '"para":"A meta-markup language, ', ... 'used to create markup languages such as DocBook.",', ... '"GlossSeeAlso":["GML","XML"]', ... '},', ... '"GlossSee":"markup"', ... '}', ... '}', ... '}', ... '}', ... '}']; assert (toJSON (data), exp); ***** test %% jsondecode's another big Test var1 = struct ('id', {0; 1; 2}, 'name', {'Collins'; 'Hays'; 'Griffin'}); var2 = struct ('id', {0; 1; 2}, 'name', {'Osborn'; 'Mcdowell'; 'Jewel'}); var3 = struct ('id', {0; 1; 2}, 'name', {'Socorro'; 'Darla'; 'Leanne'}); data = struct (... 'x_id', {'5ee28980fc9ab3'; '5ee28980dd7250'; '5ee289802422ac'}, ... 'index', {0; 1; 2}, ... 'guid', {'b229d1de-f94a'; '39cee338-01fb'; '3db8d55a-663e'}, ... 'latitude', {-17.124067; 13.205994; -35.453456}, ... 'longitude', {-61.161831; -37.276231; 14.080287}, ... 'friends', {var1; var2; var3}); exp = ['[', ... '{', ... '"x_id":"5ee28980fc9ab3",', ... '"index":0,', ... '"guid":"b229d1de-f94a",', ... '"latitude":-17.124067,', ... '"longitude":-61.161831,', ... '"friends":[', ... '{', ... '"id":0,', ... '"name":"Collins"', ... '},', ... '{', ... '"id":1,', ... '"name":"Hays"', ... '},', ... '{', ... '"id":2,', ... '"name":"Griffin"', ... '}', ... ']', ... '},', ... '{', ... '"x_id":"5ee28980dd7250",', ... '"index":1,', ... '"guid":"39cee338-01fb",', ... '"latitude":13.205994,', ... '"longitude":-37.276231,', ... '"friends":[', ... '{', ... '"id":0,', ... '"name":"Osborn"', ... '},', ... '{', ... '"id":1,', ... '"name":"Mcdowell"', ... '},', ... '{', ... '"id":2,', ... '"name":"Jewel"', ... '}', ... ']', ... '},', ... '{', ... '"x_id":"5ee289802422ac",', ... '"index":2,', ... '"guid":"3db8d55a-663e",', ... '"latitude":-35.453456,', ... '"longitude":14.080287,', ... '"friends":[', ... '{', ... '"id":0,', ... '"name":"Socorro"', ... '},', ... '{', ... '"id":1,', ... '"name":"Darla"', ... '},', ... '{', ... '"id":2,', ... '"name":"Leanne"', ... '}', ... ']', ... '}', ... ']']; assert (toJSON (data), exp); 55 tests, 55 passed, 0 known failure, 0 skipped [inst/calccelladdress.m] >>>>> /build/octave-io-luhJNf/octave-io-2.6.3/inst/calccelladdress.m ***** test a = calccelladdress (1, 1); assert (a, "A1"); ***** test a = calccelladdress (378, 28); assert (a, "AB378"); ***** test a = calccelladdress (65536, 1024); assert (a, "AMJ65536"); ***** test a = calccelladdress (1048576, 16384); assert (a, "XFD1048576"); ***** test a = calccelladdress (378, 26); assert (a, "Z378"); ***** test a = calccelladdress (378, 702); assert (a, "ZZ378"); ***** test a = calccelladdress (378, 701); assert (a, "ZY378"); ***** test a = calccelladdress (378, 703); assert (a, "AAA378"); ***** test a = calccelladdress (378, 676); assert (a, "YZ378"); 9 tests, 9 passed, 0 known failure, 0 skipped [inst/fromJSON.m] >>>>> /build/octave-io-luhJNf/octave-io-2.6.3/inst/fromJSON.m ***** test ## input validation assert(fromJSON(),[]); % ok, reference ***** warning fromJSON([],struct); bad = {4,{},@sin,struct(),'',false,0,[1,2,3]}; assert(all(cellfun(@(i)isempty(fromJSON(i)),bad))); % all bad, return [] ***** test ## number assert(fromJSON('4'),4) ***** test ## number string assert(fromJSON('"string"'),"string") ***** test ## bool assert(fromJSON('true'),true) ***** test ## numerical array assert(fromJSON('[1,2,3,4]'),1:4) assert(fromJSON('[[1,2],[3,4]]'),[1 2;3 4]) ***** test ## infinity assert(fromJSON('1e308'), Inf) assert(fromJSON('-1e308'), -Inf) assert(fromJSON('1e999'), Inf) assert(fromJSON('-1e999'), -Inf) assert(fromJSON('Inf'), Inf) assert(fromJSON('-Inf'), -Inf) assert(fromJSON('Infinity'), Inf) assert(fromJSON('-Infinity'), -Inf) assert(fromJSON('[1,1e308,Inf,-Infinity]'),[1 Inf Inf -Inf]) ***** test ## null assert(fromJSON( 'null' ),NaN) assert(fromJSON('"null"'),"null") ***** test ## empty array assert(fromJSON('[]'),[]); ***** test ## numerical matrix assert(fromJSON('[[1,2],[3,4]]'),[1 2;3 4]) ***** test ## bool matrix assert(fromJSON('[[true,false];[false,true]]'),!![1 0;0 1]) ***** test ## numeric/bool matrix assert(fromJSON('[[true,3];[false,true]]'),[1 3;0 1]) ***** test ## numerical ND array assert(fromJSON('[[[1,3,5],[2,4,6]],[[7,9,11],[8,10,12]]]'),reshape(1:12,2,3,2)); ***** test ## more N numerical ND array json = "[[[[[1,3],[2,4]],[[5,7],[6,8]]],[[[11,13],[12,14]],[[15,17],[16,18]]]],[[[[21,23],[22,24]],[[25,27],[26,28]]],[[[31,33],[32,34]],[[35,37],[36,38]]]]]"; assert(fromJSON(json),reshape([1:8 11:18 21:28 31:38],2,2,2,2,2)); ***** test ## mixed-class array (to cell array) assert(fromJSON('[["a",2,3],[4,"b",5]]'), {'a' 2 3; 4 'b' 5}); ***** test ## mismatch nested array assert(fromJSON('[[1,2,3,4,5],[1,2]]'),{[1 2 3 4 5] [1 2]}) ***** test ## more mismatched nested array assert(fromJSON('[1,2,3,[2,3]]'),{1,2,3,[2,3]}) ***** test ## array of numerical array and mixed-class array assert(fromJSON('[[1,2,3,"a"],[2,3,4,4]]'),{{1 2 3 "a"},[2 3 4 4]}) ***** test ## more N numerical ND array json = "[[[[[1,3],[2,4]],[[5,7],[6,8]]],[[[11,13],[12,14]],[[15,17],[16,18]]]],[[[[21,23],[22,24]],[[25,27],[26,28]]],[[[31,33],[32,34]],[[35,37],[36,38]]]]]"; json = regexprep(json,'(\d+)','"$1"'); % turn it input JSON array of strings c = cellfun(@num2str,num2cell(reshape([1:8 11:18 21:28 31:38],2,2,2,2,2)), 'uniformoutput', false); assert(fromJSON(json),c); ***** test ## JSON-like: with non-JSON, Octave, numerical notation (bonus feature) assert(fromJSON('[Inf,-Inf,NaN,2i,pi,e]'),[Inf,-Inf,NaN,2*i,pi,e],1e-15); ***** test ## beautified JSON obj=fromJSON("\n[\n\t [1,2,3,4],\n\t [2,3,4,4]\n] "); assert(obj,[[1 2 3 4];[2 3 4 4]]) ***** test ## incomplete array warning('off','all'); assert(fromJSON("[1,2,3 "),[1,2,3]); ***** test ## more incomplete array warning('off','all'); assert(fromJSON("[[1,2,3],[3"),{[1,2,3],[3]}); ***** test ## string with whitespaces assert(fromJSON('"te\nss df\t t"'),"te\nss df\t t") ***** test ## char array assert(fromJSON('["a","b","c"]'),{'a','b','c'}) ***** test ## array of string assert(fromJSON('["test","list","more"]'),{'test',"list","more"}) ***** test ## escaped quote assert(fromJSON('"tes\"t"'),'tes"t'); assert(fromJSON('["te\"t","list","more"]'),{'te"t' 'list' 'more'}) ***** test ## struct assert(fromJSON('{}',true), struct()) assert(fromJSON('{}',false),struct()) ***** test ## struct assert(fromJSON('{"a":3,"b":5}',true),struct("a",3,"b",5)) ***** test ## lazy JSON struct assert(fromJSON('{a:3,b:5}',true), struct("a",3,"b",5)) ***** test ## beautified JSON assert(fromJSON("{\n\ta\t :\t 3\n\t}"), struct("a",3)) ***** test ## lazy key with spaces obj=fromJSON('{key with space: 4,"a":3}'); assert(obj,struct("a",3,"key with space",4)) ***** test ## duplicate key assert(fromJSON('{a:3,"a":5}'),struct("a",5)) ***** test ## empty object key-val obj=fromJSON('{a:3,,, , "b" :5}'); assert(obj,struct("a",3,"b",5)) ***** test ## struct of vector assert(fromJSON('{a:[1,2,3,4]}', true), struct('a',{1 2 3 4})); assert(fromJSON('[{a:1},{a:2},{a:3},{a:4}]',true), struct('a',{1 2 3 4})); assert(fromJSON('{a:[1,2,3,4]}', false), struct('a',[1 2 3 4])); ***** test ## struct of 2x2 array assert(fromJSON('{a:[[1,3],[2,4]]}', true), struct('a',{1 3;2 4})); assert(fromJSON('[{a:1},{a:2}],[{a:3},{a:4}]',true), struct('a',{1 2;3 4})); assert(fromJSON('{a:[[1,3],[2,4]]}', false), struct('a',[1 3;2 4])); ***** test ## array of struct with SARRAY=false assert(fromJSON('[{a:1},{a:2} , {a:3},{a:4}]',false), num2cell(struct('a',{1 2 3 4}))); assert(fromJSON('[{a:1},{a:2}],[{a:3},{a:4}]',false), num2cell(struct('a',{1 2;3 4}))); ***** test ## struct with mixed-size arrays (will not honor SARRAY=true) assert(fromJSON('{"a":[1,2],"b":[3,4,5]}',true), struct("a",[1,2],"b",[3,4,5])) ***** test ## struct with number and string (guard against turing string into char array) assert(fromJSON('{"a":1,"b":"hello"}',true), struct("a",1,"b","hello")) ***** test ## struct with empty array (gaurd against returning empty struct array) assert(fromJSON('{"a":3,"b":[]}',true), struct("a",3,"b",[])) ***** test ## incomplete struct warning('off','all'); assert(fromJSON('[[1,2,{a:3,b ],3,4,5]'), {{1,2,struct('a',3)},3,4,5}); ***** test ## **nested** struct with array assert(fromJSON('{"a":{"b":[1,2,3]}}',true ), struct("a",num2cell(struct("b",{1,2,3})))) % <== struct array assert(fromJSON('{"a":{"b":[1,2,3]}}',false), struct("a",struct("b",[1,2,3]))) % <== struct with array b ***** test ## struct with mixed class array assert(fromJSON('{"b":[1,2,{c:4}]}',true),struct('b',{1,2,struct('c',4)})); s.b = {1,2,struct("c",4)}; assert(fromJSON('{"b":[1,2,{c:4}]}',false),s) ***** test ## 2x2 array of struct obj=fromJSON('[[{a:1},{a:3}],[{a:2},{a:4}]]'); assert(obj,struct('a',{1 3;2 4})); ***** test ## 2x2 array of struct of arrays NOTE: this is sketchy operation obj=fromJSON('[[{"a":[1,1]},{"a":[3,3]}],[{"a":[2,2]},{"a":[4,4]}]]'); assert(obj,struct('a',{[1 1] [3 3];[2 2] [4 4]})); ***** test ## struct of ND array obj=fromJSON('{a:[[[1,3],[2,4]],[[11,13],[12,14]]]}'); assert(obj,struct('a',num2cell(reshape([1:4 11:14],2,2,2)))); ***** test ## ND array of struct obj=fromJSON('[[[{a:1},{a:3}],[{a:2},{a:4}]],[[{a:11},{a:13}],[{a:12},{a:14}]]]'); assert(obj,struct('a',num2cell(reshape([1:4 11:14],2,2,2)))); ***** test ## mixed array with struct assert(fromJSON('[2,{a:3,"b":5}]'),{2,struct("a",3,"b",5)}) ***** test ## more mixed array with struct assert(fromJSON('[{a:3,"b":5},{a:3}]'),{struct("a",3,"b",5),struct("a",3)}) ***** test ## complex number struct assert(fromJSON('{re:3,im:5}'), 3+5i); assert(fromJSON('[{re:3,im:5}]'), 3+5i); assert(fromJSON('{real:4,imag:6}'),4+6i); ***** test ## complex number struct with anomoly assert(fromJSON('{im:3,re:5}'), 5+3i); assert(fromJSON('{im:3,re:5,re:7,im:10}'),7+10i); ***** test ## complex number struct array assert(fromJSON('{re:[4,5],im:[6,7]}'), [4+6i,5+7i] ); assert(fromJSON('[{re:[4,5],im:[6,7]}]'), [4+6i,5+7i] ); assert(fromJSON('[{re:[4,5;0 2],im:[6,7;3 0]}]'),[4+6i,5+7i;3i 2]); ***** test ## complex number struct in array obj=fromJSON('[[{re:4,im:6},{re:1,im:0}],[{re:0,im:2}, {re:2,im:4}]]'); assert(obj,[4+6i 1;2i 2+4i]); ***** test ## complex number struct mixed with number within array obj=fromJSON('[[4,{re:1,im:0}],[{re:0,im:2}, {re:4,im:6}]]'); assert(obj,[4 1;2i 4+6i]); ***** test ## complex number struct within a structure (nested) assert(fromJSON('{"a": {re:1,im:5}}'),struct('a',1+5i)); ***** test ## complex number struct with structure array (nested) obj = fromJSON('[{"a":{re:1,im:5}},{"a":{re:2,im:5}}]'); assert(obj,struct('a',{1+5i,2+5i})); ***** test ## test apparent octave inline fn (convert to inline) assert(fromJSON('"@sin"'),@sin); assert(func2str(fromJSON('"@(x)3*x"')),func2str(@(x)3*x)); ***** test ## exotic object in structure assert(fromJSON('{"a":"[java.math.BigDecimal]"}'),struct('a','[java.math.BigDecimal]')); ***** test ## JSON with confusing '[]{},' AND missing quotes (hard string parse test) warning('off','all'); obj=fromJSON('[{a:"tes, {}: [ ] t"},"lkj{} sdf",im mi{}ing quotes]'); assert(obj,{struct('a',"tes, {}: [ ] t"), 'lkj{} sdf','im mi{}ing quotes'}) ***** test ## garbage (non-quoted, meaningless string) warning('off','all'); assert(fromJSON('garbage'),'garbage') ***** test ## garbage in array warning('off','all'); assert(fromJSON('[1,garbage]'),{1,'garbage'}) ***** test ## garbage in struct warning('off','all'); assert(fromJSON('{a:garbage}'),struct('a','garbage')) ***** test ## exotic object (placeholder of class name) assert(fromJSON('"[java.math.BigDecimal]"'),'[java.math.BigDecimal]'); ***** test ## warnings ***** warning fromJSON('garbage'); ***** warning fromJSON('{a:3,b}'); ***** warning fromJSON('{a:3,b:4'); ***** warning fromJSON('@nofunc'); ## looks like fn, but is UNQUOTED string ***** test %% jsondecode's Arrays with the same field names in the same order. json = ['[', ... '{', ... '"x_id": "5ee28980fc9ab3",', ... '"index": 0,', ... '"guid": "b229d1de-f94a",', ... '"latitude": -17.124067,', ... '"longitude": -61.161831,', ... '"friends": [', ... '{', ... '"id": 0,', ... '"name": "Collins"', ... '},', ... '{', ... '"id": 1,', ... '"name": "Hays"', ... '},', ... '{', ... '"id": 2,', ... '"name": "Griffin"', ... '}', ... ']', ... '},', ... '{', ... '"x_id": "5ee28980dd7250",', ... '"index": 1,', ... '"guid": "39cee338-01fb",', ... '"latitude": 13.205994,', ... '"longitude": -37.276231,', ... '"friends": [', ... '{', ... '"id": 0,', ... '"name": "Osborn"', ... '},', ... '{', ... '"id": 1,', ... '"name": "Mcdowell"', ... '},', ... '{', ... '"id": 2,', ... '"name": "Jewel"', ... '}', ... ']', ... '},', ... '{', ... '"x_id": "5ee289802422ac",', ... '"index": 2,', ... '"guid": "3db8d55a-663e",', ... '"latitude": -35.453456,', ... '"longitude": 14.080287,', ... '"friends": [', ... '{', ... '"id": 0,', ... '"name": "Socorro"', ... '},', ... '{', ... '"id": 1,', ... '"name": "Darla"', ... '},', ... '{', ... '"id": 2,', ... '"name": "Leanne"', ... '}', ... ']', ... '}', ... ']']; var1 = struct ('id', {0 1 2}, 'name', {'Collins' 'Hays' 'Griffin'}); var2 = struct ('id', {0 1 2}, 'name', {'Osborn' 'Mcdowell' 'Jewel'}); var3 = struct ('id', {0 1 2}, 'name', {'Socorro' 'Darla' 'Leanne'}); exp = struct (... 'x_id', {'5ee28980fc9ab3' '5ee28980dd7250' '5ee289802422ac'}, ... 'index', {0 1 2}, ... 'guid', {'b229d1de-f94a' '39cee338-01fb' '3db8d55a-663e'}, ... 'latitude', {-17.124067 13.205994 -35.453456}, ... 'longitude', {-61.161831 -37.276231 14.080287}, ... 'friends', {var1 var2 var3}); assert (fromJSON(json), exp); 69 tests, 69 passed, 0 known failure, 0 skipped Checking C++ files ... [src/csv2cell.cc] >>>>> /build/octave-io-luhJNf/octave-io-2.6.3/src/csv2cell.cc ***** test f = tempname (); fid = fopen (f, 'w+'); fprintf (fid, "\"1\""); fclose (fid); s = csv2cell (f){1}; unlink (f); assert (s, "1"); ***** test f = tempname (); csvwrite(f, "\"1\",2", "DELIMITER", ""); s = csv2cell(f); unlink (f); assert (s{1}, "1"); assert (s{2}, 2); ***** test f = tempname (); csvwrite(f, "3,\"1\"", "DELIMITER", ""); s = csv2cell(f); unlink (f); assert (s{1}, 3); assert (s{2}, "1"); ***** test f = tempname (); fid = fopen (f, 'w+'); str = ['01/03/2012,"H (Mar, 12)",26.750000,2584' "\n"]; str = [str '"01/04/2012",H (Mar, 12),2330' "\n"]; str = [str '"01/05/2012","H (Mar 12)",26.000000,3198' "\n"]; str = [str '01/06/2012,H (Mar 12),25.500000,3045' "\n"]; fprintf (fid, str); fclose (fid); s = csv2cell (f); unlink (f); assert (isnumeric ([s{1:4, 4}]), true); ddd = datenum (s{2,1}, "dd/mm/yyyy") - datenum (s{1,1}, "dd/mm/yyyy"); assert (ddd, 31.0, 1e-5); assert (iscellstr (s(1:4, 2)), true); assert (isnumeric ([s{1, 3} s{3:4, 3}]), true); assert (ischar (s{2, 3}), true); ***** test f = tempname (); fid = fopen (f, 'w+'); str = ['01/03/2012;$H (Mar; 12)$;26.750000;2584' "\n"]; str = [str '$01/04/2012$;H (Mar; 12);2330' "\n"]; str = [str '$01/05/2012$;$H (Mar 12)$;26.000000;3198' "\n"]; str = [str '01/06/2012;H (Mar 12);25.500000;3045' "\n"]; fprintf (fid, str); fclose (fid); s = csv2cell (f, ";", "$"); unlink (f); assert (isnumeric ([s{1:4, 4}]), true); ddd = datenum (s{2,1}, "dd/mm/yyyy") - datenum (s{1,1}, "dd/mm/yyyy"); assert (ddd, 31.0, 1e-5); assert (iscellstr (s(1:4, 2)), true); assert (isnumeric ([s{1, 3} s{3:4, 3}]), true); assert (ischar (s{2, 3}), true); ***** test f = tempname (); fid = fopen (f, 'w+'); fprintf (fid, "A, B\n 1, 2\n 3, 4\n 5, 6\n"); fclose (fid); s = csv2cell (f); assert (iscellstr (s(1, :)), true); assert (cell2mat (s(2:end, :)), [1 2; 3 4; 5 6], 1e-10); s = csv2cell (f, 1); assert (cell2mat (s), [1 2; 3 4; 5 6], 1e-10); s = csv2cell (f, 3); assert (cell2mat (s), [5 6], 1e-10); s = csv2cell (f, -3); assert (iscellstr (s(1, :)), true); assert (cell2mat (s(2:end, :)), [1 2; 3 4; 5 6], 1e-10); s = csv2cell (f, 5); assert (iscell (s) && isempty (s)); unlink (f); ***** test f = tempname (); fid = fopen (f, 'w+'); fprintf (fid, "A, B\n 1, 2\n 3, 4\n 5, 6"); fclose (fid); s = csv2cell (f, 10); unlink (f); assert (iscell (s) && isempty (s)); ***** test f = tempname (); fid = fopen (f, 'w+'); fprintf (fid, "a\r\n1\r\nc\n4\n"); fclose (fid); s = csv2cell (f); unlink (f); assert (uint16 ([s{1} s{3}]), uint16([97 99])); assert ([s{2} s{4}], [1 4]); ***** test f = tempname (); fid = fopen (f, 'w+'); fprintf (fid, '1,2,3\n11,12,13,"14",15,16\n,22\n31,32,"33",34\n41,"42",,44,45\n51,52,53'); fclose (fid); s = csv2cell (f, "b2:e5"); unlink (f); assert (cell2mat(s([1; 2; 3; 5; 11; 13])), [12; 22; 32; 13; 34; 15], eps); assert (s([7; 9]), {"33"; "14"}); assert (all (cellfun (@isempty, s([6, 8, 10, 14:15])))); ***** test f = tempname (); fid = fopen (f, 'w+'); fprintf (fid, 'a,b,c,d,e,f\n11,12,13,"14",15,16\n,22\n31,32,"33",34\n41,"42",,44,45\n51,52,53'); fclose (fid); s = csv2cell (f); unlink (f); assert (size (s), [6 6]); assert (cell2mat(s([2, 4:6, 8:10, 12, 14, 18, 22:23, 26, 29, 32])), ... [11, 31, 41, 51, 12, 22, 32, 52, 13, 53, 34, 44, 15, 45, 16], eps); assert ([s(1,:), s(11), s(16), s(20)], {"a", "b", "c", "d", "e", "f", ... "42", "33", "14"}); assert (all (cellfun (@isempty, s([3, 15, 17, 21, 24, 27:28, 30, 33:36])))); ***** test f = tempname (); fid = fopen (f, 'w+'); fprintf (fid, "1:2\n3:4\n5:6"); fclose (fid); s = csv2cell (f, ":"); unlink (f); assert (cell2mat(s), [1, 2; 3, 4; 5, 6], eps); ***** test f = tempname (); fid = fopen (f, 'w+'); fprintf (fid, "1:2:3\n4:5:6\n7:8:9\n"); fclose (fid); s = csv2cell (f, "b2:c3", ":"); unlink (f); assert (cell2mat(s), [5, 6; 8,9], eps); ***** error csv2cell (); ***** error csv2cell ("___.csv"); ***** error csv2cell ("file.csv", "a&:f3"); ***** error csv2cell ("file.csv", "b2:a1"); ***** error csv2cell ("f.csv", ",,"); ***** error csv2cell ("f.csv", ",", "[]"); 18 tests, 18 passed, 0 known failure, 0 skipped [src/num2col.cc] >>>>> /build/octave-io-luhJNf/octave-io-2.6.3/src/num2col.cc ***** test ***** test ***** test 3 tests, 3 passed, 0 known failure, 0 skipped [src/cell2csv.cc] >>>>> /build/octave-io-luhJNf/octave-io-2.6.3/src/cell2csv.cc ***** test arr = arr1 = num2cell (randn (3, 3)); for ii=1:size (arr, 1) arr1(ii, ii) = sprintf ("\"Val = %f\"", arr{ii, ii}); endfor f = tempname(); cell2csv (f, arr1); arr2 = csv2cell (f); unlink (f); idx = find (cellfun ("ischar", arr2)); arr2(idx) = cellfun (@(x) str2double(strrep(x, "Val = ", "")), arr2(idx), "Uni", false); assert (arr, arr2, 1e-5); ***** test arr = arr1 = num2cell (randn (3, 3)); for ii=1:size (arr, 1) arr1(ii, ii) = sprintf ("Val = %f", arr{ii, ii}); endfor arr1(2, 2) = [arr1{2, 2} ";"]; f = tempname(); cell2csv (f, arr1, ";", "&"); arr2 = csv2cell (f, ";", "&"); unlink (f); assert (arr2{2, 2}(end), ";"); arr2(2, 2) = strrep (arr2{2, 2}, ";", ""); idx = find (cellfun ("ischar", arr2)); arr2(idx) = cellfun (@(x) str2double(strrep(x, "Val = ", "")), arr2(idx), "Uni", false); assert (arr, arr2, 1e-5); 2 tests, 2 passed, 0 known failure, 0 skipped [src/col2num.cc] >>>>> /build/octave-io-luhJNf/octave-io-2.6.3/src/col2num.cc ***** test assert (col2num ("a"), 1, 1e-16); ***** test assert (col2num ("z"), 26, 1e-16); ***** test assert (col2num ("aa"), 27, 1e-16); ***** test ***** test assert (col2num ("A"), 1, 1e-16); ***** test ***** test ***** test ***** test ***** test ***** test ***** test 12 tests, 12 passed, 0 known failure, 0 skipped Summary: 173 tests, 173 passed, 0 known failures, 0 skipped dh_installdocs -a -O--buildsystem=octave dh_installchangelogs -a -O--buildsystem=octave dh_octave_changelogs -a -O--buildsystem=octave dh_octave_examples -a -O--buildsystem=octave dh_installsystemduser -a -O--buildsystem=octave dh_perl -a -O--buildsystem=octave dh_link -a -O--buildsystem=octave dh_strip_nondeterminism -a -O--buildsystem=octave dh_compress -a -O--buildsystem=octave dh_fixperms -a -O--buildsystem=octave dh_missing -a -O--buildsystem=octave dh_dwz -a -a -O--buildsystem=octave dh_strip -a -a -O--buildsystem=octave dh_makeshlibs -a -a -O--buildsystem=octave dh_shlibdeps -a -a -O--buildsystem=octave dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/octave-io/usr/lib/x86_64-linux-gnu/octave/packages/io-2.6.3/x86_64-pc-linux-gnu-api-v55/cell2csv.oct debian/octave-io/usr/lib/x86_64-linux-gnu/octave/packages/io-2.6.3/x86_64-pc-linux-gnu-api-v55/num2col.oct debian/octave-io/usr/lib/x86_64-linux-gnu/octave/packages/io-2.6.3/x86_64-pc-linux-gnu-api-v55/col2num.oct debian/octave-io/usr/lib/x86_64-linux-gnu/octave/packages/io-2.6.3/x86_64-pc-linux-gnu-api-v55/csv2cell.oct debian/octave-io/usr/lib/x86_64-linux-gnu/octave/packages/io-2.6.3/x86_64-pc-linux-gnu-api-v55/csvconcat.oct debian/octave-io/usr/lib/x86_64-linux-gnu/octave/packages/io-2.6.3/x86_64-pc-linux-gnu-api-v55/csvexplode.oct were not linked against libpthread.so.0 (they use none of the library's symbols) dh_octave_substvar -a -O--buildsystem=octave dh_installdeb -a -O--buildsystem=octave dh_gencontrol -a -O--buildsystem=octave dpkg-gencontrol: warning: package octave-io: substitution variable ${octave:Upstream-Description} unused, but is defined dpkg-gencontrol: warning: package octave-io: substitution variable ${octave:Upstream-Description} unused, but is defined dh_md5sums -a -O--buildsystem=octave dh_builddeb -a -O--buildsystem=octave dpkg-deb: building package 'octave-io-dbgsym' in '../octave-io-dbgsym_2.6.3-1+b1_amd64.deb'. dpkg-deb: building package 'octave-io' in '../octave-io_2.6.3-1+b1_amd64.deb'. dpkg-genbuildinfo --build=any dpkg-genchanges --build=any >../octave-io_2.6.3-1+b1_amd64.changes dpkg-genchanges: info: binary-only arch-specific upload (source code and arch-indep packages not included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) I: running special hook: sync-out /build/octave-io-luhJNf /tmp/octave-io-2.6.3-1+b112veytcm I: cleaning package lists and apt cache... I: creating tarball... I: done I: removing tempdir /tmp/mmdebstrap.Ni3O565rt_... I: success in 753.4415 seconds md5: octave-io-dbgsym_2.6.3-1+b1_amd64.deb: OK md5: octave-io_2.6.3-1+b1_amd64.deb: OK sha1: octave-io-dbgsym_2.6.3-1+b1_amd64.deb: OK sha1: octave-io_2.6.3-1+b1_amd64.deb: OK sha256: octave-io-dbgsym_2.6.3-1+b1_amd64.deb: OK sha256: octave-io_2.6.3-1+b1_amd64.deb: OK Checksums: OK