Input buildinfo: https://buildinfos.debian.net/buildinfo-pool/r/ruby-parslet/ruby-parslet_1.8.2-3_all.buildinfo Use metasnap for getting required timestamps New buildinfo file: /tmp/ruby-parslet-1.8.2-3u54led1s/ruby-parslet_1.8.2-3_all.buildinfo Get source package info: ruby-parslet=1.8.2-3 Source URL: http://snapshot.notset.fr/mr/package/ruby-parslet/1.8.2-3/srcfiles?fileinfo=1 env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin TMPDIR=/tmp mmdebstrap --arch=amd64 --include=adduser=3.118 autoconf=2.69-11.1 automake=1:1.16.1-4 autopoint=0.19.8.1-10 autotools-dev=20180224.1 base-files=11 base-passwd=3.5.47 bash=5.0-5 binutils=2.34-2 binutils-common=2.34-2 binutils-x86-64-linux-gnu=2.34-2 bsdmainutils=11.1.2+b1 bsdutils=1:2.34-0.1 build-essential=12.8 bzip2=1.0.8-2 ca-certificates=20190110 coreutils=8.30-3+b1 cpp=4:9.2.1-3.1 cpp-9=9.2.1-28 dash=0.5.10.2-6 debconf=1.5.73 debhelper=12.9 debianutils=4.9.1 devscripts=2.20.2 dh-autoreconf=19 dh-strip-nondeterminism=1.6.3-2 diffutils=1:3.7-3 dirmngr=2.2.19-1 dpkg=1.19.7 dpkg-dev=1.19.7 dwz=0.13-5 fakeroot=1.24-1 fdisk=2.34-0.1 file=1:5.38-4 findutils=4.7.0-1 g++=4:9.2.1-3.1 g++-9=9.2.1-28 gcc=4:9.2.1-3.1 gcc-10-base=10-20200204-1 gcc-9=9.2.1-28 gcc-9-base=9.2.1-28 gem2deb=1.0.4 gem2deb-test-runner=1.0.4 gettext=0.19.8.1-10 gettext-base=0.19.8.1-10 gnupg=2.2.19-1 gnupg-l10n=2.2.19-1 gnupg-utils=2.2.19-1 gpg=2.2.19-1 gpg-agent=2.2.19-1 gpg-wks-client=2.2.19-1 gpg-wks-server=2.2.19-1 gpgconf=2.2.19-1 gpgsm=2.2.19-1 gpgv=2.2.19-1 grep=3.4-1 groff-base=1.22.4-4 gzip=1.9-3+b1 hostname=3.23 init-system-helpers=1.57 intltool-debian=0.35.0+20060710.5 libacl1=2.2.53-5 libarchive-zip-perl=1.67-1 libasan5=9.2.1-28 libassuan0=2.5.3-7 libatomic1=10-20200204-1 libattr1=1:2.4.48-5 libaudit-common=1:2.8.5-2 libaudit1=1:2.8.5-2+b1 libb-hooks-op-check-perl=0.22-1+b2 libbinutils=2.34-2 libblkid1=2.34-0.1 libbsd0=0.10.0-1 libbz2-1.0=1.0.8-2 libc-bin=2.29-10 libc-dev-bin=2.29-10 libc6=2.29-10 libc6-dev=2.29-10 libcap-ng0=0.7.9-2.1+b1 libcc1-0=10-20200204-1 libclass-method-modifiers-perl=2.13-1 libcroco3=0.6.13-1 libcrypt-dev=1:4.4.10-10 libcrypt1=1:4.4.10-10 libctf-nobfd0=2.34-2 libctf0=2.34-2 libdb5.3=5.3.28+dfsg1-0.6 libdebconfclient0=0.251 libdebhelper-perl=12.9 libdevel-callchecker-perl=0.008-1+b1 libdpkg-perl=1.19.7 libdynaloader-functions-perl=0.003-1 libelf1=0.176-1.1 libencode-locale-perl=1.05-1 libexpat1=2.2.9-1 libfakeroot=1.24-1 libfdisk1=2.34-0.1 libffi7=3.3-3 libfile-homedir-perl=1.004-1 libfile-listing-perl=6.04-1 libfile-stripnondeterminism-perl=1.6.3-2 libfile-which-perl=1.23-1 libgcc-9-dev=9.2.1-28 libgcc-s1=10-20200204-1 libgcc1=1:10-20200204-1 libgcrypt20=1.8.5-3 libgdbm-compat4=1.18.1-5 libgdbm6=1.18.1-5 libglib2.0-0=2.62.4-2 libgmp-dev=2:6.2.0+dfsg-3 libgmp10=2:6.2.0+dfsg-3 libgmpxx4ldbl=2:6.2.0+dfsg-3 libgnutls30=3.6.11.1-2 libgomp1=10-20200204-1 libgpg-error0=1.36-7 libhogweed5=3.5.1+really3.5.1-2 libhtml-parser-perl=3.72-3+b4 libhtml-tagset-perl=3.20-4 libhtml-tree-perl=5.07-2 libhttp-cookies-perl=6.08-1 libhttp-date-perl=6.05-1 libhttp-message-perl=6.18-1 libhttp-negotiate-perl=6.01-1 libicu63=63.2-2 libidn2-0=2.2.0-2 libimport-into-perl=1.002005-1 libio-html-perl=1.001-1 libio-pty-perl=1:1.12-1 libio-socket-ssl-perl=2.066-1 libipc-run-perl=20180523.0-2 libisl22=0.22-2 libitm1=10-20200204-1 libksba8=1.3.5-2 libldap-2.4-2=2.4.48+dfsg-1+b2 libldap-common=2.4.48+dfsg-1 liblsan0=10-20200204-1 liblwp-mediatypes-perl=6.04-1 liblwp-protocol-https-perl=6.07-2 liblz4-1=1.9.2-2 liblzma5=5.2.4-1+b1 libmagic-mgc=1:5.38-4 libmagic1=1:5.38-4 libmodule-runtime-perl=0.016-1 libmoo-perl=2.003006-1 libmount1=2.34-0.1 libmpc3=1.1.0-1 libmpdec2=2.4.2-2 libmpfr6=4.0.2-1 libncursesw6=6.1+20191019-1 libnet-http-perl=6.19-1 libnet-ssleay-perl=1.88-2 libnettle7=3.5.1+really3.5.1-2 libnpth0=1.6-1 libp11-kit0=0.23.20-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 libparams-classify-perl=0.015-1+b2 libpcre2-8-0=10.34-7 libpcre3=2:8.39-12+b1 libperl5.30=5.30.0-9 libpipeline1=1.5.2-2 libpython3-stdlib=3.7.5-3 libpython3.7-minimal=3.7.6-1+b1 libpython3.7-stdlib=3.7.6-1+b1 libquadmath0=10-20200204-1 libreadline8=8.0-3 librole-tiny-perl=2.001004-1 libruby2.5=2.5.7-1+b1 libsasl2-2=2.1.27+dfsg-2 libsasl2-modules-db=2.1.27+dfsg-2 libseccomp2=2.4.2-2 libselinux1=3.0-1 libsemanage-common=3.0-1 libsemanage1=3.0-1 libsepol1=3.0-1 libsigsegv2=2.12-2 libsmartcols1=2.34-0.1 libsqlite3-0=3.31.1-1 libssl1.1=1.1.1d-2 libstdc++-9-dev=9.2.1-28 libstdc++6=10-20200204-1 libstrictures-perl=2.000006-1 libsub-override-perl=0.09-2 libsub-quote-perl=2.006006-1 libsystemd0=244.1-3 libtasn1-6=4.15.0-2 libtimedate-perl=2.3100-1 libtinfo6=6.1+20191019-1 libtool=2.4.6-11 libtry-tiny-perl=0.30-1 libtsan0=10-20200204-1 libubsan1=10-20200204-1 libuchardet0=0.0.6-3 libudev1=244.1-3 libunistring2=0.9.10-2 liburi-perl=1.76-1 libuuid1=2.34-0.1 libwww-perl=6.43-1 libwww-robotrules-perl=6.02-1 libxml2=2.9.4+dfsg1-8 libyaml-0-2=0.2.2-1 linux-libc-dev=5.4.13-1 login=1:4.8-1 lsb-base=11.1.0 m4=1.4.18-4 make=4.2.1-1.2 man-db=2.9.0-2 mawk=1.3.4.20200120-1 mime-support=3.64 ncurses-base=6.1+20191019-1 ncurses-bin=6.1+20191019-1 netbase=6.0 openssl=1.1.1d-2 passwd=1:4.8-1 patch=2.7.6-6 patchutils=0.3.4-2+b1 perl=5.30.0-9 perl-base=5.30.0-9 perl-modules-5.30=5.30.0-9 perl-openssl-defaults=4 pinentry-curses=1.1.0-3+b1 po-debconf=1.0.21 python3=3.7.5-3 python3-minimal=3.7.5-3 python3.7=3.7.6-1+b1 python3.7-minimal=3.7.6-1+b1 rake=13.0.1-2 readline-common=8.0-3 ruby=1:2.5.2 ruby-ae=1.8.2-1 ruby-all-dev=1:2.5.2 ruby-ansi=1.5.0-1 ruby-blankslate=3.1.3-1 ruby-did-you-mean=1.2.1-1 ruby-diff-lcs=1.3-1 ruby-flexmock=2.3.6-4 ruby-minitest=5.13.0-1 ruby-net-telnet=0.1.1-2 ruby-power-assert=1.1.1-1 ruby-rspec=3.8.0c0e1m0s0-1 ruby-rspec-core=3.8.0c0e1m0s0-1 ruby-rspec-expectations=3.8.0c0e1m0s0-1 ruby-rspec-mocks=3.8.0c0e1m0s0-1 ruby-rspec-support=3.8.0c0e1m0s0-1 ruby-setup=3.4.1-9 ruby-test-unit=3.3.4-1 ruby-thread-order=1.1.0-1 ruby-xmlrpc=0.3.0-2 ruby2.5=2.5.7-1+b1 ruby2.5-dev=2.5.7-1+b1 rubygems-integration=1.16 sed=4.7-1 sensible-utils=0.0.12+nmu1 sysvinit-utils=2.96-2.1 tar=1.30+dfsg-6+b1 util-linux=2.34-0.1 wdiff=1.2.2-2+b1 xz-utils=5.2.4-1+b1 zlib1g=1:1.2.11.dfsg-1.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/20200206T222813Z/ 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 ruby-parslet=1.8.2-3 && mkdir -p /build/ruby-parslet-FZFnq5 && dpkg-source --no-check -x /*.dsc /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2 && chown -R builduser:builduser /build/ruby-parslet-FZFnq5" --customize-hook=chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2 && env DEB_BUILD_OPTIONS="parallel=4" LANG="C.UTF-8" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1581008386" dpkg-buildpackage -uc -a amd64 --build=all" --customize-hook=sync-out /build/ruby-parslet-FZFnq5 /tmp/ruby-parslet-1.8.2-3u54led1s bullseye /dev/null deb http://snapshot.notset.fr/archive/debian/20200206T222813Z 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.w2kwHrxXUR 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.w2kwHrxXUR Reading package lists... Building dependency tree... util-linux is already the newest version (2.34-0.1). The following NEW packages will be installed: fakeroot libfakeroot 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 132 kB of archives. After this operation, 393 kB of additional disk space will be used. Get:1 http://snapshot.notset.fr/archive/debian/20200206T222813Z unstable/main amd64 libfakeroot amd64 1.24-1 [45.7 kB] Get:2 http://snapshot.notset.fr/archive/debian/20200206T222813Z unstable/main amd64 fakeroot amd64 1.24-1 [85.9 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 132 kB in 0s (1153 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 ... 4509 files and directories currently installed.) Preparing to unpack .../libfakeroot_1.24-1_amd64.deb ... Unpacking libfakeroot:amd64 (1.24-1) ... Selecting previously unselected package fakeroot. Preparing to unpack .../fakeroot_1.24-1_amd64.deb ... Unpacking fakeroot (1.24-1) ... Setting up libfakeroot:amd64 (1.24-1) ... Setting up fakeroot (1.24-1) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Processing triggers for libc-bin (2.29-10) ... 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/20200206T222813Z/ unstable main' >> /etc/apt/sources.list && apt-get update"' exec /tmp/mmdebstrap.w2kwHrxXUR Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm InRelease [81.6 kB] Hit:2 http://snapshot.notset.fr/archive/debian/20200206T222813Z unstable InRelease Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Ign:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main Sources [11.4 MB] Get:4 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main amd64 Packages [11.1 MB] Fetched 22.6 MB in 24s (952 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.w2kwHrxXUR I: running --customize-hook in shell: sh -c 'chroot "$1" env sh -c "apt-get source --only-source -d ruby-parslet=1.8.2-3 && mkdir -p /build/ruby-parslet-FZFnq5 && dpkg-source --no-check -x /*.dsc /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2 && chown -R builduser:builduser /build/ruby-parslet-FZFnq5"' exec /tmp/mmdebstrap.w2kwHrxXUR Reading package lists... NOTICE: 'ruby-parslet' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/ruby-team/ruby-parslet.git Please use: git clone https://salsa.debian.org/ruby-team/ruby-parslet.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 84.8 kB of source archives. Get:1 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main ruby-parslet 1.8.2-3 (dsc) [2201 B] Get:2 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main ruby-parslet 1.8.2-3 (tar) [76.8 kB] Get:3 http://snapshot.notset.fr/archive/debian/20210814T212851Z bookworm/main ruby-parslet 1.8.2-3 (diff) [5784 B] Fetched 84.8 kB in 0s (1628 kB/s) Download complete and in download only mode W: Download is performed unsandboxed as root as file 'ruby-parslet_1.8.2-3.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) dpkg-source: info: extracting ruby-parslet in /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2 dpkg-source: info: unpacking ruby-parslet_1.8.2.orig.tar.gz dpkg-source: info: unpacking ruby-parslet_1.8.2-3.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying 001_remove-ruby1.9-specific-and-gobbleup.patch dpkg-source: info: applying 002_remove-ruby2.5-deprecated-mathn.patch dpkg-source: info: applying 003_fix_for_integer_conversion.patch I: running --customize-hook in shell: sh -c 'chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2 && env DEB_BUILD_OPTIONS="parallel=4" LANG="C.UTF-8" LC_ALL="C.UTF-8" SOURCE_DATE_EPOCH="1581008386" dpkg-buildpackage -uc -a amd64 --build=all"' exec /tmp/mmdebstrap.w2kwHrxXUR dpkg-buildpackage: info: source package ruby-parslet dpkg-buildpackage: info: source version 1.8.2-3 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by David Rodriguez dpkg-source --before-build . fakeroot debian/rules clean dh clean --buildsystem=ruby --with ruby dh_auto_clean -O--buildsystem=ruby dh_ruby --clean dh_ruby --clean dh_autoreconf_clean -O--buildsystem=ruby dh_clean -O--buildsystem=ruby debian/rules build-indep dh build-indep --buildsystem=ruby --with ruby dh_update_autotools_config -i -O--buildsystem=ruby dh_autoreconf -i -O--buildsystem=ruby dh_auto_configure -i -O--buildsystem=ruby dh_ruby --configure dh_auto_build -i -O--buildsystem=ruby dh_ruby --build dh_ruby --build dh_auto_test -i -O--buildsystem=ruby dh_ruby --test create-stamp debian/debhelper-build-stamp fakeroot debian/rules binary-indep dh binary-indep --buildsystem=ruby --with ruby dh_testroot -i -O--buildsystem=ruby dh_prep -i -O--buildsystem=ruby dh_auto_install -i -O--buildsystem=ruby dh_ruby --install /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet dh_ruby --install ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install files │ └──────────────────────────────────────────────────────────────────────────────┘ install -d /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/position.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/position.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/expression.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/expression.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/export.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/export.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/transform.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/transform.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/expression/treetop.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/expression/treetop.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/context.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/context.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/rig/rspec.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/rig/rspec.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/source/line_cache.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/source/line_cache.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/accelerator/engine.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/accelerator/engine.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/accelerator/application.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/accelerator/application.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/pattern/binding.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/pattern/binding.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/accelerator.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/accelerator.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/pattern.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/pattern.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/parser.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/parser.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/convenience.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/convenience.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/error_reporter.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/error_reporter.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/capture.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/capture.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/sequence.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/sequence.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/ignored.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/ignored.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/dsl.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/dsl.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/re.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/re.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/context.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/context.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/base.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/base.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/infix.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/infix.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/dynamic.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/dynamic.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/lookahead.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/lookahead.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/visitor.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/visitor.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/repetition.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/repetition.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/str.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/str.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/named.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/named.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/alternative.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/alternative.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/entity.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/entity.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/scope.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/scope.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/atoms/can_flatten.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/atoms/can_flatten.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/slice.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/slice.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/error_reporter/deepest.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/error_reporter/deepest.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/error_reporter/tree.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/error_reporter/tree.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/error_reporter/contextual.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/error_reporter/contextual.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/graphviz.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/graphviz.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/cause.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/cause.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/source.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/source.rb install -D -m644 /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/lib/parslet/scope.rb /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby/parslet/scope.rb ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install Rubygems integration metadata │ └──────────────────────────────────────────────────────────────────────────────┘ generating gemspec at /build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/share/rubygems-integration/all/specifications/parslet-1.8.2.gemspec /usr/bin/ruby2.5 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby2.5 │ └──────────────────────────────────────────────────────────────────────────────┘ GEM_PATH=debian/ruby-parslet/usr/share/rubygems-integration/all:/var/lib/gems/2.5.0:/usr/lib/ruby/gems/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0 ruby2.5 -e gem\ \"parslet\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby2.5 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=/build/ruby-parslet-FZFnq5/ruby-parslet-1.8.2/debian/ruby-parslet/usr/lib/ruby/vendor_ruby:. GEM_PATH=debian/ruby-parslet/usr/share/rubygems-integration/all:/var/lib/gems/2.5.0:/usr/lib/ruby/gems/2.5.0:/usr/share/rubygems-integration/2.5.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.5.0 ruby2.5 -S rake -f debian/ruby-tests.rake /usr/bin/ruby2.5 /usr/bin/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation Run options: exclude {:ruby=>#} Regression on example/capture.rb runs successfully example/scopes.rb runs successfully example/modularity.rb runs successfully example/nested_errors.rb runs successfully example/deepest_errors.rb runs successfully example/calc.rb runs successfully example/erb.rb runs successfully example/readme.rb runs successfully example/prec_calc.rb runs successfully example/parens.rb runs successfully example/minilisp.rb runs successfully example/email_parser.rb runs successfully example/local.rb runs successfully example/boolean_algebra.rb runs successfully example/string_parser.rb runs successfully example/json.rb runs successfully example/documentation.rb runs successfully example/comments.rb runs successfully example/simple_xml.rb runs successfully example/empty.rb runs successfully example/seasons.rb runs successfully example/ip_address.rb runs successfully Infix expression parsing #integer parses integers consumes trailing white space doesn't parse floats #multiplication parses simple multiplication parses simple multiplication with spaces parses division #addition parses simple addition parses complex addition parses a single element mixed operations inspection produces useful expressions right associativity produces trees that lean right left associativity produces trees that lean left error handling incomplete expression produces the right error invalid operator produces the right error providing a reducer block applies the reducer Regressions from real examples ArgumentListParser should have method expression should parse "arg1", "arg2" should parse "arg1", "arg2", "arg3" ParensParser statefulness: trying several expressions in sequence should not be stateful expression '(())' should yield a doubly nested hash inner hash should have nil as :m ALanguage should count lines correctly BLanguage should parse 'bb' should transform with binding constraint UnicodeLanguage should parse UTF-8 strings UnicodeSentenceLanguage should parse sentences TwoCharLanguage should raise an error RepetitionParser parses a block parses nested blocks parses successive blocks fails gracefully on a missing end fails gracefully on a missing end (2) fails gracefully on a missing end (deepest reporter) Tree output when parsing the empty string should convert 'a'? to "" should convert 'a'{0, } to "" should convert f:('a'?) to {:f=>nil} should convert f:('a'{0, }) to {:f=>[]} should convert f:(('a' 'b')?) to {:f=>nil} should convert f:(('a' 'b'){0, }) to {:f=>[]} should convert f:('a' 'b')? to "" should convert f:('a' 'b'){0, } to "" when parsing 'aa' should convert a:'a'{0, } a:'a'{0, } to [{:a=>"a"}, {:a=>"a"}] Unconsumed input: RepeatingBlockParser throws annotated error doesn't error out if prefix is true Result of a Parslet#parse regression 'foo'? 'bar' should parse "bar" into "bar" 'bar' 'foo'? should parse "bar" into "bar" ('f'? 'b'){0, } should parse "bb" into "bb" ('b' 'f'?){0, } should parse "bb" into "bb" a:'a' ('b' a:'c'){0, } should parse "abc" into "[{:a=>"a"}, {:a=>"c"}]" a:'a'{0, } b:'b'{0, } should parse "ab" into "[{:a=>"a"}, {:b=>"b"}]" 'f'{0, } should parse "" into "" f:('f'{0, }) should parse "" into "{:f=>[]}" 'f'? should parse "" into "" f:('f'?) should parse "" into "{:f=>nil}" Parslet::Atoms::Alternative | shortcut when chained with different atoms is side-effect free Parslet::Atoms::Base <- #try(io) should raise NotImplementedError <- #flatten_sequence for ["a", "b"] should equal "ab" for [["a"], ["b"]] should equal ["a", "b"] for [{:a=>"a"}, {:b=>"b"}] should equal {:a=>"a", :b=>"b"} for [{:a=>"a"}, ["a"]] should equal [{:a=>"a"}, "a"] for [{:a=>"a"}, "s"] should equal {:a=>"a"} for [["a"], {:a=>"a"}] should equal ["a", {:a=>"a"}] for [["a"], "b"] should equal ["a"] for ["a", {:b=>"b"}] should equal {:b=>"b"} for ["a", ["b"]] should equal ["b"] for [nil, ["a"]] should equal ["a"] for [nil, {:a=>"a"}] should equal {:a=>"a"} for [["a"], nil] should equal ["a"] for [{:a=>"a"}, nil] should equal {:a=>"a"} <- #flatten_repetition should give subtrees precedence #parse(source) when given something that looks like a source should not rewrap in a source when the parse fails, the exception should contain a string when not all input is consumed should raise with a proper error message when only parsing string prefix returns the first half on a prefix parse :reporter option replaces the default reporter Parslet::Atoms::Capture should capture simple results should capture complex results Parslet::Atoms::DSL deprecated methods <- #absnt? #bound_parslet should be a negative lookahead <- #prsnt? #bound_parslet should be a positive lookahead Parslet::Atoms::Entity when constructed with str('bar') inside should parse 'bar' without raising exceptions should raise when applied to 'foo' #inspect should return the name of the entity when constructed with empty block should raise NotImplementedError recursive definition parser should parse balanced parens should not throw 'stack level too deep' when printing errors when constructed with a label should parse 'bar' without raising exceptions should raise when applied to 'foo' #inspect should return the label of the entity #parslet should set the label on the cached parslet Parslet::Atoms::Ignored ignore ignores parts of the input Parslet::Atoms::Lookahead negative lookahead influences the error tree positive lookahead influences the error tree Parslet::Atoms::Re construction should allow match(str) form should allow match[str] form Parslet::Atoms::Repetition repeat (min, max) should not parse "" should parse "a" should parse "aa" 0 times raises an ArgumentError Parslet::Atoms::Scope keeps values of captures outside Parslet::Atoms::Sequence >> shortcut when chained with different atoms is side-effect free Parslet::Atoms::Str regression #1: multibyte characters parses successfully (length check works) Parslet::Atoms Parslet::Atoms::Str should call back visitor Parslet::Atoms::Re should call back visitor Parslet::Atoms::Sequence should call back visitor Parslet::Atoms::Repetition should call back visitor Parslet::Atoms::Alternative should call back visitor Parslet::Atoms::Named should call back visitor Parslet::Atoms::Entity should call back visitor Parslet::Atoms::Lookahead should call back visitor < Parslet::Parser calls back to visitor Parslet match('[abc]') should parse {a,b,c} should not parse d should print as [abc] match(['[a]').repeat(3) should succeed on 'aaa' should succeed on many 'a' should inspect as [a]{3, } when failing on input 'aa' should have a relevant cause should have a tree with 2 nodes str('foo') should parse 'foo' should not parse 'bar' should inspect as 'foo' str('foo').maybe should parse a foo should leave pos untouched if there is no foo should inspect as 'foo'? when parsing 'foo' should == "foo" when parsing '' should == "" str('foo') >> str('bar') should parse 'foobar' should inspect as ('foo' 'bar') when it fails on input 'foobaz' should not parse 'foobaz' should have 2 nodes in error tree str('foo') | str('bar') should accept 'foo' should accept 'bar' should inspect as ('foo' / 'bar') when failing on input 'baz' should have a sensible cause should have an error tree with 3 nodes str('foo').present? (positive lookahead) should inspect as &'foo' when fed 'foo' should parse should not change input position when fed 'bar' should not parse <- #parse should return nil str('foo').absent? (negative lookahead) should inspect as !'foo' when fed 'bar' should parse should not change input position when fed 'foo' should not parse non greedy matcher combined with greedy matcher (possible loop) should not loop infinitely any should match should consume one char eof behaviour when the pattern just doesn't consume the input should fail the parse when the pattern doesn't match the input raises Parslet::ParseFailed has the correct error message <- #as(name) str('foo').as(:bar) should return :bar => 'foo' match('[abc]').as(:name) should return :name => 'b' match('[abc]').repeat.as(:name) should return collated result ('abc') (str('a').as(:a) >> str('b').as(:b)).as(:c) should return a hash of hashes (str('a').as(:a) >> str('ignore') >> str('b').as(:b)) should correctly flatten (leaving out 'ignore') (str('a') >> str('ignore') >> str('b')) (no .as(...)) should return simply the original string str('a').as(:a) >> str('b').as(:a) should issue a warning that a key is being overwritten in merge should return :a => 'b' str('a').absent? should return something in merge, even though it is nil str('a').as(:a).repeat should return an array of subtrees <- #flatten(val) should transform [:sequence, "a", "b"] to "ab" should transform [:repetition, "a", "a"] to "aa" should transform [:sequence, [:sequence, "a", "b"]] to "ab" should transform [:sequence, nil, "a"] to "a" should transform {:a=>"a"} to {:a=>"a"} should transform [:sequence, {:a=>"a"}, {:b=>"b"}] to {:a=>"a", :b=>"b"} should transform [:sequence, [:repetition, {:a=>"a"}], {:a=>"a"}] to [{:a=>"a"}, {:a=>"a"}] should transform [:sequence, {:a=>"a"}, [:repetition, {:a=>"a"}]] to [{:a=>"a"}, {:a=>"a"}] should transform [:sequence, [:repetition, {:a=>"a"}], [:repetition, {:a=>"a"}]] to [{:a=>"a"}, {:a=>"a"}] should transform [:repetition, [:repetition, {:a=>"a"}], [:repetition, {:a=>"a"}]] to [{:a=>"a"}, {:a=>"a"}] should transform [:repetition, {:a=>"a"}, "a", {:a=>"a"}] to [{:a=>"a"}, {:a=>"a"}] should transform [:repetition, {:a=>"a"}, [:repetition, {:b=>"b"}]] to [{:a=>"a"}] should transform [:sequence, {:a=>:b, :b=>:c}] to {:a=>:b, :b=>:c} should transform [:sequence, {:a=>:b}, "a", {:c=>:d}] to {:a=>:b, :c=>:d} should transform [:repetition, {:a=>:b}, "a", {:c=>:d}] to [{:a=>:b}, {:c=>:d}] should transform [:sequence, {:a=>:b}, {:a=>:d}] to {:a=>:d} should transform [:sequence, {:a=>:b}, [:sequence, [:sequence, "\n", nil]]] to {:a=>:b} should transform [:sequence, nil, " "] to " " combinations thereof (regression) 'a'{0, } 'b'{0, } applied to "aaabbb" should parse successfully regression for 'a' should inspect correctly as 'a' regression for ('a' / 'b')? should inspect correctly as ('a' / 'b')? regression for ('a' 'b')? should inspect correctly as ('a' 'b')? regression for 'a'?? should inspect correctly as 'a'?? regression for ('a' 'b')?? should inspect correctly as ('a' 'b')?? regression for 'a' ('b' / 'c') should inspect correctly as 'a' ('b' / 'c') regression for 'a' 'b'{0, } should inspect correctly as 'a' 'b'{0, } regression for ('a' 'b'){0, } should inspect correctly as ('a' 'b'){0, } parslet/convenience parse_with_debug should work for all parslets internal should exist should catch ParseFailed exceptions should parse correct input like #parse output should puts once for tree output should puts once for the error on unconsumed input Parslet::ErrorReporter::Contextual #err returns the deepest cause #err_at returns the deepest cause #deepest(cause) when there is no deepest cause yet returns the given cause when the previous cause is deeper (no relationship) returns the previous cause when the previous cause is deeper (child) returns the given cause when the previous cause is shallower stores the cause as deepest #reset resets deepest cause on success of sibling expression label sets label if atom has one does not set label if atom does not have one Parslet::ErrorReporter::Deepest #err returns the deepest cause #err_at returns the deepest cause #deepest(cause) when there is no deepest cause yet returns the given cause when the previous cause is deeper (no relationship) returns the previous cause when the previous cause is deeper (child) returns the given cause when the previous cause is shallower stores the cause as deepest Parslet::Parser exporting to other lingos <- #to_citrus should be valid citrus syntax <- #to_treetop should be valid treetop syntax Parslet::Expression::Treetop positive samples exp("'abc'") should parse "abc" string representation should parse "abc" and {:trace=>true} exp("...") should parse "abc" string representation should parse "abc" and {:trace=>true} exp("[1-4]") should parse "3" string representation should parse "3" and {:trace=>true} exp("'abc'?") should parse "abc" string representation should parse "abc" and {:trace=>true} exp("'abc'?") should parse "" string representation should parse "" and {:trace=>true} exp("('abc')") should parse "abc" string representation should parse "abc" and {:trace=>true} exp("'a' 'b'") should parse "ab" string representation should parse "ab" and {:trace=>true} exp("'a' ('b')") should parse "ab" string representation should parse "ab" and {:trace=>true} exp("'a' / 'b'") should parse "a" string representation should parse "a" and {:trace=>true} exp("'a' / 'b'") should parse "b" string representation should parse "b" and {:trace=>true} exp("'a'*") should parse "aaa" string representation should parse "aaa" and {:trace=>true} exp("'a'*") should parse "" string representation should parse "" and {:trace=>true} exp("'a'+") should parse "aa" string representation should parse "aa" and {:trace=>true} exp("'a'+") should parse "a" string representation should parse "a" and {:trace=>true} exp("'a'{1,2}") should parse "a" string representation should parse "a" and {:trace=>true} exp("'a'{1,2}") should parse "aa" string representation should parse "aa" and {:trace=>true} exp("'a'{1,}") should parse "a" string representation should parse "a" and {:trace=>true} exp("'a'{1,}") should parse "aa" string representation should parse "aa" and {:trace=>true} exp("'a'{,2}") should parse "" string representation should parse "" and {:trace=>true} exp("'a'{,2}") should parse "a" string representation should parse "a" and {:trace=>true} exp("'a'{,2}") should parse "aa" string representation should parse "aa" and {:trace=>true} negative samples exp("'abc'") should not parse "cba" exp("[1-4]") should not parse "5" exp("'a' / 'b'") should not parse "c" exp("'a'+") should not parse "" exp("'a'{1,2}") should not parse "" exp("'a'{1,2}") should not parse "aaa" exp("'a'{1,}") should not parse "" exp("'a'{,2}") should not parse "aaa" Parslet::Parser should parse 'foo' <- .root should have defined a 'root' method, returning the root composition should allow concatenation Parslet Parslet::ParseFailed should be caught by an empty rescue <- .rule empty rule should raise a NotImplementedError containing 'any' should be a kind of Parslet::Atoms::Entity should memoize the returned instance Parslet::Pattern <- #match injecting bindings should not modify the original bindings hash should return nil when no match succeeds when matching simple(:x) against 'a' should return the injected bindings should return the new bindings simple strings should match simple strings simple hash {:a => 'b'} should not match {:a => simple(:x), :b => simple(:y)} should match {:a => simple(:x)}, binding 'x' to the first argument should match {:a => 'b'} with no binds a more complex hash {:a => {:b => 'c'}} should match wholly with {:a => {:b => simple(:x)}} should match wholly with {:a => subtree(:t)} should not bind subtrees to variables in {:a => simple(:x)} a more complex hash {:a => 'a', :b => 'b'} should not match partially should match completely an array of 'a', 'b', 'c' should match all elements at once {:a => 'a', :b => 'b'} should match both elements simple(:x), simple(:y) should not match a constrained match (simple(:x) != simple(:y)) {:a => 'a', :b => 'a'} should match constrained pattern {:sub1 => {:a => 'a'}, :sub2 => {:a => 'a'}} should verify constraints over several subtrees should return both bind variables simple(:x), simple(:y) {:sub1 => {:a => 'a'}, :sub2 => {:a => 'b'}} should verify constraints over several subtrees should return both bind variables simple(:x), simple(:y) [{:a => 'x'}, {:a => 'y'}] should not match sequence(:x) (as a whole) ['x', 'y', 'z'] should match [simple(:x), simple(:y), simple(:z)] should match %w(x y z) should not match [simple(:x), simple(:y), simple(:x)] should not match [simple(:x), simple(:y)] should match sequence(:x) (as array) {:a => [1,2,3]} should match :a => sequence(:x) (binding x to the whole array) with differently ordered hashes should still match Parslet::Position should have a charpos of 2 should have a bytepos of 4 rspec integration should parse "example" should not parse "foo" should parse "example" should not parse "foo" should not parse "example" should parse "foo" should not parse "foo" accepts a block to assert more specific details about the parsing output rspec3 syntax should parse "example" should not parse "foo" should parse "example" should not parse "foo" should not parse "example" Parslet::Scope simple store/retrieve allows storing objects raises on access of empty slots allows retrieval of stored values scoping should == 1 after a push should == 1 and reassign should == 2 and a pop should == 1 Parslet::Slice construction should construct from an offset and a string ('foobar', 40, 'foobar') comparison should be equal to other slices with the same attributes should be equal to other slices (offset is irrelevant for comparison) should be equal to a string with the same content should be equal to a string (inversed operands) should not be equal to a string should not be eql to a string should not hash to the same number offset should return the associated offset should fail to return a line and column when constructed with a source should return proper line and column string methods matching should match as a string would <- #size should == 6 <- #length should == 6 <- #+ should concat like string does conversion <- #to_slice should return self <- #to_sym should return :foobar cast to Float should return a float cast to Integer should cast to integer as a string would should fail when Integer would fail on a string should turn into zero when a string would inspection and string conversion #inspect should == "\"foobar\"@6" #to_s should == "foobar" serializability should serialize when storing a line cache should serialize Parslet::Source::RangeSearch <- #lbound for a simple array should return correct answers for numbers not in the array should return correct answers for numbers in the array should cover right edge case should cover left edge case for an empty array should return nil Parslet::Source::LineCache <- scan_for_line_endings calculating the line_and_columns should return the first line if we have no line ends should find the right line starting from pos 0 should find the right line starting from pos 5 should find the right line if scannning the string multiple times Parslet::Source using simple input <- #read(n) should not raise error when the return value is nil should return 100 'a's when reading 100 chars <- #chars_left should == 202 after depleting the source should == 0 <- #pos should == 0 after reading a few bytes should still be correct <- #pos=(n) setting position 146 should == 146 setting position 24 should == 24 setting position 101 should == 101 setting position 46 should == 46 setting position 59 should == 59 setting position 78 should == 78 setting position 173 should == 173 setting position 85 should == 85 setting position 114 should == 114 setting position 139 should == 139 #chars_until should return 100 chars before line end <- #column & #line should == [1, 1] on the first line should increase column with every read on the second line should == [2, 1] after reading everything when seeking to 9 should == [1, 10] when seeking to 100 should == [1, 101] when seeking to 101 should == [2, 1] when seeking to 102 should == [2, 2] when seeking beyond eof should not throw an error reading char by char, storing the results should give the same results when seeking should give the same results when reading when using pos argument should return the same results reading encoded input should read characters, not bytes Parslet::Context binds hash keys as variable like things one contexts variables aren't the next ones works as a Ruby object should responds_to? :a includes :a in #methods allows inspection allows conversion to string when the context is enhanced responds_to correctly includes :foo also in methods allows calling #foo Parslet::Transform delayed construction given simple(:x) => A.new(x) should transform 'a' into A.new('a') should transform ['a', 'b'] into [A.new('a'), A.new('b')] given rules on {:a => simple(:x)} and {:b => :_x} should transform {:d=>{:b=>'c'}} into d => B('c') should transform {:a=>{:b=>'c'}} into A(B('c')) pulling out subbranches should yield Bi.new('c', 'f') dsl construction should still evaluate rules correctly class construction should evaluate rules optionally raise when no match found should evaluate rules should raise when no rules are matched with inheritance should inherit rules from its parent should be able to override rules from its parent should be able to define new rules <- #call_on_match when given a block of arity 1 should call the block should yield the bindings should execute in the current context when given a block of arity 0 should call the block should have bindings as local variables should execute in its own context various transformations (regression) hashes are matched completely when not using the bindings as hash, but as local variables should access the variables should allow context as local variable Finished in 5.78 seconds (files took 0.61369 seconds to load) 435 examples, 0 failures ┌──────────────────────────────────────────────────────────────────────────────┐ │ dh_ruby --install finished │ └──────────────────────────────────────────────────────────────────────────────┘ dh_installdocs -i -O--buildsystem=ruby dh_ruby_fixdocs -i -O--buildsystem=ruby dh_installchangelogs -i -O--buildsystem=ruby dh_installexamples -i -O--buildsystem=ruby dh_installinit -i -O--buildsystem=ruby dh_perl -i -O--buildsystem=ruby dh_link -i -O--buildsystem=ruby dh_strip_nondeterminism -i -O--buildsystem=ruby dh_compress -X.rb -i -O--buildsystem=ruby dh_fixperms -i -O--buildsystem=ruby dh_missing -i -O--buildsystem=ruby dh_installdeb -i -O--buildsystem=ruby dh_gencontrol -i -O--buildsystem=ruby dpkg-gencontrol: warning: Depends field of package ruby-parslet: substitution variable ${shlibs:Depends} used, but is not defined dh_md5sums -i -O--buildsystem=ruby dh_builddeb -i -O--buildsystem=ruby dpkg-deb: building package 'ruby-parslet' in '../ruby-parslet_1.8.2-3_all.deb'. dpkg-genbuildinfo --build=all dpkg-genchanges --build=all >../ruby-parslet_1.8.2-3_all.changes dpkg-genchanges: info: binary-only arch-indep upload (source code and arch-specific packages not included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) I: running special hook: sync-out /build/ruby-parslet-FZFnq5 /tmp/ruby-parslet-1.8.2-3u54led1s I: cleaning package lists and apt cache... I: creating tarball... I: done I: removing tempdir /tmp/mmdebstrap.w2kwHrxXUR... I: success in 439.7067 seconds md5: ruby-parslet_1.8.2-3_all.deb: OK sha1: ruby-parslet_1.8.2-3_all.deb: OK sha256: ruby-parslet_1.8.2-3_all.deb: OK Checksums: OK