Diff of the two buildlogs: -- --- b1/build.log 2023-04-17 19:20:44.146199210 +0000 +++ b2/build.log 2023-04-17 19:21:42.203623038 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Mon Apr 17 07:16:29 -12 2023 -I: pbuilder-time-stamp: 1681758989 +I: Current time: Mon May 20 15:43:48 +14 2024 +I: pbuilder-time-stamp: 1716169428 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz] I: copying local configuration @@ -16,7 +16,7 @@ I: copying [./pry_0.13.1.orig.tar.gz] I: copying [./pry_0.13.1-3.debian.tar.xz] I: Extracting source -gpgv: Signature made Sat Jul 16 21:43:25 2022 -12 +gpgv: Signature made Sun Jul 17 23:43:25 2022 +14 gpgv: using RSA key 0B29D88E42E6B765B8D8EA507839619DD439668E gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./pry_0.13.1-3.dsc: no acceptable signature found @@ -33,135 +33,167 @@ dpkg-source: info: applying 0007-Make-tests-support-also-ruby3.0.patch I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/1836561/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/2035124/tmp/hooks/D01_modify_environment starting +debug: Running on ionos5-amd64. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 May 20 15:43 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/2035124/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/2035124/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='amd64' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=15' - DISTRIBUTION='bookworm' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="15" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.2.15(1)-release' + BUILDDIR=/build + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=amd64 + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=16' + DIRSTACK=() + DISTRIBUTION=bookworm + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='08132ddbff854c768dfa5a3873276530' - LANG='C' - LANGUAGE='en_US:en' - LC_ALL='C' - MAIL='/var/mail/root' - OPTIND='1' - PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' - PBCURRENTCOMMANDLINEOPERATION='build' - PBUILDER_OPERATION='build' - PBUILDER_PKGDATADIR='/usr/share/pbuilder' - PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' - PBUILDER_SYSCONFDIR='/etc' - PPID='1836561' - PS1='# ' - PS2='> ' + INVOCATION_ID=6075154f35334473844c6fae5cdc4a1b + LANG=C + LANGUAGE=et_EE:et + LC_ALL=C + MACHTYPE=x86_64-pc-linux-gnu + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnu + PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path + PBCURRENTCOMMANDLINEOPERATION=build + PBUILDER_OPERATION=build + PBUILDER_PKGDATADIR=/usr/share/pbuilder + PBUILDER_PKGLIBDIR=/usr/lib/pbuilder + PBUILDER_SYSCONFDIR=/etc + PIPESTATUS=([0]="0") + POSIXLY_CORRECT=y + PPID=2035124 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.RX7QnHMf/pbuilderrc_C0jv --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.RX7QnHMf/b1 --logfile b1/build.log pry_0.13.1-3.dsc' - SUDO_GID='111' - SUDO_UID='106' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://78.137.99.97:3128' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.RX7QnHMf/pbuilderrc_QMaU --distribution bookworm --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.RX7QnHMf/b2 --logfile b2/build.log --extrapackages usrmerge pry_0.13.1-3.dsc' + SUDO_GID=110 + SUDO_UID=105 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://85.184.249.68:3128 I: uname -a - Linux ionos11-amd64 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-0.deb11.5-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.12-1~bpo11+1 (2023-03-05) x86_64 GNU/Linux I: ls -l /bin total 5632 - -rwxr-xr-x 1 root root 1265648 Feb 12 08:05 bash - -rwxr-xr-x 3 root root 39224 Sep 18 2022 bunzip2 - -rwxr-xr-x 3 root root 39224 Sep 18 2022 bzcat - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzcmp -> bzdiff - -rwxr-xr-x 1 root root 2225 Sep 18 2022 bzdiff - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzegrep -> bzgrep - -rwxr-xr-x 1 root root 4893 Nov 27 2021 bzexe - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzfgrep -> bzgrep - -rwxr-xr-x 1 root root 3775 Sep 18 2022 bzgrep - -rwxr-xr-x 3 root root 39224 Sep 18 2022 bzip2 - -rwxr-xr-x 1 root root 14568 Sep 18 2022 bzip2recover - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzless -> bzmore - -rwxr-xr-x 1 root root 1297 Sep 18 2022 bzmore - -rwxr-xr-x 1 root root 44016 Sep 20 2022 cat - -rwxr-xr-x 1 root root 68656 Sep 20 2022 chgrp - -rwxr-xr-x 1 root root 64496 Sep 20 2022 chmod - -rwxr-xr-x 1 root root 72752 Sep 20 2022 chown - -rwxr-xr-x 1 root root 151152 Sep 20 2022 cp - -rwxr-xr-x 1 root root 125640 Jan 5 01:20 dash - -rwxr-xr-x 1 root root 121904 Sep 20 2022 date - -rwxr-xr-x 1 root root 89240 Sep 20 2022 dd - -rwxr-xr-x 1 root root 102200 Sep 20 2022 df - -rwxr-xr-x 1 root root 151344 Sep 20 2022 dir - -rwxr-xr-x 1 root root 88656 Mar 22 22:02 dmesg - lrwxrwxrwx 1 root root 8 Dec 19 01:33 dnsdomainname -> hostname - lrwxrwxrwx 1 root root 8 Dec 19 01:33 domainname -> hostname - -rwxr-xr-x 1 root root 43856 Sep 20 2022 echo - -rwxr-xr-x 1 root root 41 Jan 24 02:43 egrep - -rwxr-xr-x 1 root root 35664 Sep 20 2022 false - -rwxr-xr-x 1 root root 41 Jan 24 02:43 fgrep - -rwxr-xr-x 1 root root 85600 Mar 22 22:02 findmnt - -rwsr-xr-x 1 root root 35128 Mar 22 20:35 fusermount - -rwxr-xr-x 1 root root 203152 Jan 24 02:43 grep - -rwxr-xr-x 2 root root 2346 Apr 9 2022 gunzip - -rwxr-xr-x 1 root root 6447 Apr 9 2022 gzexe - -rwxr-xr-x 1 root root 98136 Apr 9 2022 gzip - -rwxr-xr-x 1 root root 22680 Dec 19 01:33 hostname - -rwxr-xr-x 1 root root 72824 Sep 20 2022 ln - -rwxr-xr-x 1 root root 53024 Mar 23 00:40 login - -rwxr-xr-x 1 root root 151344 Sep 20 2022 ls - -rwxr-xr-x 1 root root 207168 Mar 22 22:02 lsblk - -rwxr-xr-x 1 root root 97552 Sep 20 2022 mkdir - -rwxr-xr-x 1 root root 72912 Sep 20 2022 mknod - -rwxr-xr-x 1 root root 43952 Sep 20 2022 mktemp - -rwxr-xr-x 1 root root 59712 Mar 22 22:02 more - -rwsr-xr-x 1 root root 59704 Mar 22 22:02 mount - -rwxr-xr-x 1 root root 18744 Mar 22 22:02 mountpoint - -rwxr-xr-x 1 root root 142968 Sep 20 2022 mv - lrwxrwxrwx 1 root root 8 Dec 19 01:33 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Apr 2 18:25 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 43952 Sep 20 2022 pwd - lrwxrwxrwx 1 root root 4 Feb 12 08:05 rbash -> bash - -rwxr-xr-x 1 root root 52112 Sep 20 2022 readlink - -rwxr-xr-x 1 root root 72752 Sep 20 2022 rm - -rwxr-xr-x 1 root root 56240 Sep 20 2022 rmdir - -rwxr-xr-x 1 root root 27560 Nov 2 04:31 run-parts - -rwxr-xr-x 1 root root 126424 Jan 5 07:55 sed - lrwxrwxrwx 1 root root 4 Jan 5 01:20 sh -> dash - -rwxr-xr-x 1 root root 43888 Sep 20 2022 sleep - -rwxr-xr-x 1 root root 85008 Sep 20 2022 stty - -rwsr-xr-x 1 root root 72000 Mar 22 22:02 su - -rwxr-xr-x 1 root root 39824 Sep 20 2022 sync - -rwxr-xr-x 1 root root 531984 Apr 6 02:25 tar - -rwxr-xr-x 1 root root 14520 Nov 2 04:31 tempfile - -rwxr-xr-x 1 root root 109616 Sep 20 2022 touch - -rwxr-xr-x 1 root root 35664 Sep 20 2022 true - -rwxr-xr-x 1 root root 14568 Mar 22 20:35 ulockmgr_server - -rwsr-xr-x 1 root root 35128 Mar 22 22:02 umount - -rwxr-xr-x 1 root root 43888 Sep 20 2022 uname - -rwxr-xr-x 2 root root 2346 Apr 9 2022 uncompress - -rwxr-xr-x 1 root root 151344 Sep 20 2022 vdir - -rwxr-xr-x 1 root root 72024 Mar 22 22:02 wdctl - lrwxrwxrwx 1 root root 8 Dec 19 01:33 ypdomainname -> hostname - -rwxr-xr-x 1 root root 1984 Apr 9 2022 zcat - -rwxr-xr-x 1 root root 1678 Apr 9 2022 zcmp - -rwxr-xr-x 1 root root 6460 Apr 9 2022 zdiff - -rwxr-xr-x 1 root root 29 Apr 9 2022 zegrep - -rwxr-xr-x 1 root root 29 Apr 9 2022 zfgrep - -rwxr-xr-x 1 root root 2081 Apr 9 2022 zforce - -rwxr-xr-x 1 root root 8103 Apr 9 2022 zgrep - -rwxr-xr-x 1 root root 2206 Apr 9 2022 zless - -rwxr-xr-x 1 root root 1842 Apr 9 2022 zmore - -rwxr-xr-x 1 root root 4577 Apr 9 2022 znew -I: user script /srv/workspace/pbuilder/1836561/tmp/hooks/D02_print_environment finished + -rwxr-xr-x 1 root root 1265648 Feb 13 2023 bash + -rwxr-xr-x 3 root root 39224 Sep 19 2022 bunzip2 + -rwxr-xr-x 3 root root 39224 Sep 19 2022 bzcat + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzcmp -> bzdiff + -rwxr-xr-x 1 root root 2225 Sep 19 2022 bzdiff + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzegrep -> bzgrep + -rwxr-xr-x 1 root root 4893 Nov 28 2021 bzexe + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzfgrep -> bzgrep + -rwxr-xr-x 1 root root 3775 Sep 19 2022 bzgrep + -rwxr-xr-x 3 root root 39224 Sep 19 2022 bzip2 + -rwxr-xr-x 1 root root 14568 Sep 19 2022 bzip2recover + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzless -> bzmore + -rwxr-xr-x 1 root root 1297 Sep 19 2022 bzmore + -rwxr-xr-x 1 root root 44016 Sep 21 2022 cat + -rwxr-xr-x 1 root root 68656 Sep 21 2022 chgrp + -rwxr-xr-x 1 root root 64496 Sep 21 2022 chmod + -rwxr-xr-x 1 root root 72752 Sep 21 2022 chown + -rwxr-xr-x 1 root root 151152 Sep 21 2022 cp + -rwxr-xr-x 1 root root 125640 Jan 6 2023 dash + -rwxr-xr-x 1 root root 121904 Sep 21 2022 date + -rwxr-xr-x 1 root root 89240 Sep 21 2022 dd + -rwxr-xr-x 1 root root 102200 Sep 21 2022 df + -rwxr-xr-x 1 root root 151344 Sep 21 2022 dir + -rwxr-xr-x 1 root root 88656 Mar 24 2023 dmesg + lrwxrwxrwx 1 root root 8 Dec 20 2022 dnsdomainname -> hostname + lrwxrwxrwx 1 root root 8 Dec 20 2022 domainname -> hostname + -rwxr-xr-x 1 root root 43856 Sep 21 2022 echo + -rwxr-xr-x 1 root root 41 Jan 25 2023 egrep + -rwxr-xr-x 1 root root 35664 Sep 21 2022 false + -rwxr-xr-x 1 root root 41 Jan 25 2023 fgrep + -rwxr-xr-x 1 root root 85600 Mar 24 2023 findmnt + -rwsr-xr-x 1 root root 35128 Mar 23 2023 fusermount + -rwxr-xr-x 1 root root 203152 Jan 25 2023 grep + -rwxr-xr-x 2 root root 2346 Apr 10 2022 gunzip + -rwxr-xr-x 1 root root 6447 Apr 10 2022 gzexe + -rwxr-xr-x 1 root root 98136 Apr 10 2022 gzip + -rwxr-xr-x 1 root root 22680 Dec 20 2022 hostname + -rwxr-xr-x 1 root root 72824 Sep 21 2022 ln + -rwxr-xr-x 1 root root 53024 Mar 24 2023 login + -rwxr-xr-x 1 root root 151344 Sep 21 2022 ls + -rwxr-xr-x 1 root root 207168 Mar 24 2023 lsblk + -rwxr-xr-x 1 root root 97552 Sep 21 2022 mkdir + -rwxr-xr-x 1 root root 72912 Sep 21 2022 mknod + -rwxr-xr-x 1 root root 43952 Sep 21 2022 mktemp + -rwxr-xr-x 1 root root 59712 Mar 24 2023 more + -rwsr-xr-x 1 root root 59704 Mar 24 2023 mount + -rwxr-xr-x 1 root root 18744 Mar 24 2023 mountpoint + -rwxr-xr-x 1 root root 142968 Sep 21 2022 mv + lrwxrwxrwx 1 root root 8 Dec 20 2022 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Apr 3 2023 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 43952 Sep 21 2022 pwd + lrwxrwxrwx 1 root root 4 Feb 13 2023 rbash -> bash + -rwxr-xr-x 1 root root 52112 Sep 21 2022 readlink + -rwxr-xr-x 1 root root 72752 Sep 21 2022 rm + -rwxr-xr-x 1 root root 56240 Sep 21 2022 rmdir + -rwxr-xr-x 1 root root 27560 Nov 3 2022 run-parts + -rwxr-xr-x 1 root root 126424 Jan 6 2023 sed + lrwxrwxrwx 1 root root 9 May 20 15:43 sh -> /bin/bash + -rwxr-xr-x 1 root root 43888 Sep 21 2022 sleep + -rwxr-xr-x 1 root root 85008 Sep 21 2022 stty + -rwsr-xr-x 1 root root 72000 Mar 24 2023 su + -rwxr-xr-x 1 root root 39824 Sep 21 2022 sync + -rwxr-xr-x 1 root root 531984 Apr 7 2023 tar + -rwxr-xr-x 1 root root 14520 Nov 3 2022 tempfile + -rwxr-xr-x 1 root root 109616 Sep 21 2022 touch + -rwxr-xr-x 1 root root 35664 Sep 21 2022 true + -rwxr-xr-x 1 root root 14568 Mar 23 2023 ulockmgr_server + -rwsr-xr-x 1 root root 35128 Mar 24 2023 umount + -rwxr-xr-x 1 root root 43888 Sep 21 2022 uname + -rwxr-xr-x 2 root root 2346 Apr 10 2022 uncompress + -rwxr-xr-x 1 root root 151344 Sep 21 2022 vdir + -rwxr-xr-x 1 root root 72024 Mar 24 2023 wdctl + lrwxrwxrwx 1 root root 8 Dec 20 2022 ypdomainname -> hostname + -rwxr-xr-x 1 root root 1984 Apr 10 2022 zcat + -rwxr-xr-x 1 root root 1678 Apr 10 2022 zcmp + -rwxr-xr-x 1 root root 6460 Apr 10 2022 zdiff + -rwxr-xr-x 1 root root 29 Apr 10 2022 zegrep + -rwxr-xr-x 1 root root 29 Apr 10 2022 zfgrep + -rwxr-xr-x 1 root root 2081 Apr 10 2022 zforce + -rwxr-xr-x 1 root root 8103 Apr 10 2022 zgrep + -rwxr-xr-x 1 root root 2206 Apr 10 2022 zless + -rwxr-xr-x 1 root root 1842 Apr 10 2022 zmore + -rwxr-xr-x 1 root root 4577 Apr 10 2022 znew +I: user script /srv/workspace/pbuilder/2035124/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -343,7 +375,7 @@ Get: 132 http://deb.debian.org/debian bookworm/main amd64 ruby-rspec-expectations all 3.12.0c0e1m1s0-1 [89.5 kB] Get: 133 http://deb.debian.org/debian bookworm/main amd64 ruby-rspec-mocks all 3.12.0c0e1m1s0-1 [79.5 kB] Get: 134 http://deb.debian.org/debian bookworm/main amd64 ruby-rspec all 3.12.0c0e1m1s0-1 [5084 B] -Fetched 46.8 MB in 2s (24.9 MB/s) +Fetched 46.8 MB in 1s (55.8 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal: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 ... 19596 files and directories currently installed.) @@ -902,8 +934,19 @@ Writing extended state information... Building tag database... -> Finished parsing the build-deps +Reading package lists... +Building dependency tree... +Reading state information... +usrmerge is already the newest version (35). +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/pry-0.13.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../pry_0.13.1-3_source.changes +I: user script /srv/workspace/pbuilder/2035124/tmp/hooks/A99_set_merged_usr starting +Re-configuring usrmerge... +removed '/etc/unsupported-skip-usrmerge-conversion' +The system has been successfully converted. +I: user script /srv/workspace/pbuilder/2035124/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/pry-0.13.1/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../pry_0.13.1-3_source.changes dpkg-buildpackage: info: source package pry dpkg-buildpackage: info: source version 0.13.1-3 dpkg-buildpackage: info: source distribution unstable @@ -1104,685 +1147,764 @@ RUBYLIB=/build/pry-0.13.1/debian/pry/usr/lib/ruby/vendor_ruby:. GEM_PATH=/build/pry-0.13.1/debian/pry/usr/share/rubygems-integration/all:/build/pry-0.13.1/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.1.0:/var/lib/gems/3.1.0:/usr/local/lib/ruby/gems/3.1.0:/usr/lib/ruby/gems/3.1.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.1.0:/usr/share/rubygems-integration/3.1.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.1.0 ruby3.1 -S rake -f debian/ruby-tests.rake /usr/bin/ruby3.1 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.12.0/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.12.0/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.12.0/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation -Randomized with seed 40394 - -Pry::Helpers::DocumentationHelpers - get_comment_content - should unindent past separators - should strip off the hash and unindent - should remove shebangs - should strip out leading lines of hashes - process_rdoc - should syntax highlight code in - should emphasise italic tags - should highlight words surrounded by +s - should not remove ++ - should not double-highlight backticks inside indented code - should syntax highlight code in - should emphasise em tags - should syntax highlight indented code - should syntax highlight things in backticks +Randomized with seed 54066 Pry - should not raise an error on broken lines: [\n:lets,\n'list',\n[/nested/\n], things ] - should display correct number of errors on invalid syntax like ["puts :"] - should display correct number of errors on invalid syntax like ["1 1"] - should display correct number of errors on invalid syntax like ["o = Object.new.tap{ def o.render;", "'MEH'", "}"] - should not raise an error on broken lines: p = '\n' - should allow whitespace delimeted strings ending on the first char of a line - should not raise an error on broken lines: pouts(< - should correctly amend the specified line with interpolated text - should display error if nothing to amend - should ignore second value of range with > syntax - should amend the specified line of input when line number given - -save-file - -f - should save a file to a file - saving methods - single method - should save a method to a file - should save a method to a file truncated by --lines - should display a success message on save - --append - should append to end of specified file - -i - should display a success message on save - should save multi-ranged input expressions - should save input expressions to a file (single expression) - should save input expressions to a file (range) - overwrite by default (no --append) - should overwrite specified file with new input - saving commands - should save a command to a file - -The bin/pry CLI - -I path - adds multiple additional paths to $LOAD_PATH - adds an additional path to $LOAD_PATH - ARGV forwarding - forwards its remaining arguments as ARGV when -- is passed - forwards its remaining arguments as ARGV when - is passed - forwards ARGV as an empty array when -- is passed without following arguments - forwards ARGV as an empty array when - is passed without following arguments - -! - should not clear the input buffer for negation - should correctly clear the input buffer + loading rc files + should not load the pryrc if pryrc's directory permissions do not allow this + should never run the rc file twice + should not load the pryrc if it cannot expand ENV[HOME] + should not load the rc file twice if it's symlinked differently + should not run the rc file at all if Pry.config.should_load_rc is false + that raise exceptions + should not raise exceptions + should output an error + should continue to run pry -cat - with --in -1 - should display the last expression with no index - when invoked without arguments - should display an error message - on receiving a file that does not exist - should display an error message - with --ex - cat --ex should display repl code that generated exception - cat --ex should correctly display code that generated exception - with --in - should display the last few expressions with indices - with --in 1..2 - should display the given range with indices, omitting nils - with --ex N - each successive cat --ex should show the next level of backtrace, and going past the final level should return to the first - should show error when backtrace level out of bounds - should cat third level of backtrace when --ex 2 used - should cat first level of backtrace when --ex used with no argument - should cat second level of backtrace when --ex 1 used - should cat first level of backtrace when --ex 0 used - with --in 1 - should display the first expression with no index +Pry::Command::ShellCommand + cd + .cd + saves the current working directory + given a dash + given no prior directory + raises the correct error + given a prior directory + sends the user's last pry working directory to File.expand_path + given a path + sends the path to File.expand_path + with CDPATH + when it is defined + simple cdpath + cd's into the dir + complex cdpath + cd's into the dir + given an empty string + sends ~ to File.expand_path -Pry::ColorPrinter +Pry::Hooks + dupping a Pry::Hooks instance + adding a new event to dupped instance should not affect original + adding a new hook to dupped instance should not affect original + should share hooks with original + anonymous hooks + should allow adding of hook without a name + should only allow one anonymous hook to exist + should execute most recently added anonymous hook + clearing all hooks for an event + should clear all hooks + Pry::Hooks#merge + merge! + should not share merged elements with original + should overwrite identical hook in receiver + should NOT overwrite hooks belonging to shared event in receiver + should preserve hook order + should merge in the Pry::Hooks + merge + should return a fresh, independent instance + should not affect original instances when new hooks are added + should contain hooks from original instance + integration tests + after_session hook + should always run, even if uncaught exception bubbles out of repl + exceptions + should not raise exceptions + should print out a notice for each exception raised + before_eval hook + modifying input code + should replace input code with code determined by hook + should not interfere with command processing when replacing input code + when_started hook + should yield options to the hook + should allow overriding of target (and binding_stack) + target + should yield the target, as a binding + should yield the target to the hook + deleting a hook + should return the deleted hook + should return nil if hook does not exist + should successfully delete a hook + getting hooks + get_hook + should return the correct requested hook + should return nil if hook does not exist + get_hooks + should return a hash of hook names/hook functions for an event + should return an empty hash if no hooks defined + adding a new hook + should not execute hook while adding it + should return a count of 0 for an empty hook + should not allow adding of a hook with a duplicate name + should create a new hook with a callable + should raise if not given a block or any other object + should create multiple hooks for an event + should use block if given both block and callable + should create a new hook with a block + executing a hook + should add exceptions to the errors array + return value of exec_hook should be that of last executed hook + should return the last exception raised as the return value + should execute all hooks for an event if more than one is defined + should execute hooks in order + should execute a general callable hook + should execute proc hook + should execute block hook .default - prints output prefix with value - .pp - when no exception is raised in #inspect - prints a string with a newline - when printing a BasicObject - prints a string - when #inspect raises Pry::Pager::StopPaging - propagates the error - when #inspect returns an object literal - prints the object inspect - and when SyntaxHighlighter returns a token that doesn't start with '' - prints the object with escape characters - and when SyntaxHighlighter returns a token starting with '' - prints the object as is - when an exception is raised in #inspect - still prints a string - -Pry::Command::Cat::FileFormatter - #file_and_line - parses relative path without line_num - parses relative path with line_num - windows filesystem - parses '/'style absolute path without line_num - parses '/'style absolute path with line_num - parses '\'style absolute path without line_num - parses '\'style absolute path with line_num - UNIX-like filesystem - parses absolute path with line_num - parses absolute path without line_num - #format - formats given files - formats given files with line number + returns hooks with default before_session hook + when pry instance is not quiet + runs the whereami command + when pry instance is quiet + doesn't run the whereami command cd - should break out to outer-most session with just cd (no args) - cds into an object and its ivar and back and then into another ivar using cd obj/@ivar/../@y syntax + should break out of session with cd .. + should start a session on TOPLEVEL_BINDING with cd :: cds into an object and its ivar and back again using cd obj/@ivar/.. syntax - should cd back to top-level and then into another ivar using cd /@ivar/ syntax - can cd into objects that redefine #respond_to? to return true + cds into an object and its ivar and back and then into another ivar using cd obj/@ivar/../@y syntax + should not leave the REPL session when given 'cd ..' + should not cd into complex input when it encounters an exception + should break out to outer-most session with cd / + should cd into simple input + should cd into complex input (with spaces) can cd into an expression containing a string with slashes in it can cd into an expression with division in it - should not leave the REPL session when given 'cd ..' - should break out of session with cd .. - should cd into an object and its ivar using cd obj/@ivar syntax - should start a session on TOPLEVEL_BINDING with cd :: should be able to cd into the Object BasicObject - should break out to outer-most session with cd / - should not cd into complex input when it encounters an exception should cd into previous object and its local using cd ../local syntax - should cd into simple input cds into an object and its ivar using cd obj/@ivar/ syntax (note following /) - should cd into complex input (with spaces) + should cd back to top-level and then into another ivar using cd /@ivar/ syntax + should cd into an object and its ivar using cd obj/@ivar syntax + should break out to outer-most session with just cd (no args) + can cd into objects that redefine #respond_to? to return true old stack toggling with `cd -` - when using cd / - should toggle - when using simple cd syntax + when using cd :: should toggle + when using cd .. + should toggle with a simple path + should toggle with a complex path when an error was raised should not toggle and should keep correct stacks - when using cd :: - should toggle - series of cd calls - should toggle with fuzzy `cd -` calls - in fresh pry instance - should not toggle when there is no old stack when using complex cd syntax should toggle with a complex path (more complex case) should toggle with a complex path (simple case) - when using cd .. - should toggle with a complex path - should toggle with a simple path + series of cd calls + should toggle with fuzzy `cd -` calls + when using cd / + should toggle + when using simple cd syntax + should toggle when using ^D (Control-D) key press should keep correct old binding + in fresh pry instance + should not toggle when there is no old stack -help - should sort the output of the 'help' command - should display help for a command with a spaces in its name - should display help for a specific command - should display help for all commands with a description - should display help for a regex command with a "listing" - -Pry::Method::Patcher - should change the behaviour of the method - should change the source of new Pry::Method objects - should preserve visibility - should return a new method with new source - -Pry - FAIL_PRY - should raise an error for binding.pry - should raise an error for Pry.start - setting custom options - does not raise for unrecognized options - correctly handles the :quiet option (#1261) - DISABLE_PRY - should not binding.pry - should not Pry.start - #last_exception= - returns an instance of Pry::LastException - returns an object who mirrors itself as the wrapped exception - returns a frozen exception - .configure - yields a block with Pry.config as its argument - open a Pry session on an object - repl - defining methods - defines a method on the class of an object when performing "def meth;end" inside an immediate value or Numeric - defines an instance method on the module when performing "def meth;end" inside the module - defines a method on the singleton class of an object when performing "def meth;end" inside the object - defines an instance method on the class when performing "def meth;end" inside the class - nesting - should nest properly - Object#pry - should start a pry session on the receiver (second form) - should raise if more than two arguments are passed to Object#pry - should start a pry session on the receiver (first form) - last_result - should be preserved when evalling a command without :keep_retval - should be preserved over an empty line - should be set to the result of a command with :keep_retval - should be set to the most recent value - complete_expression? - should not mutate the input! - basic functionality - should set an ivar on an object and exit the repl - Pry.binding_for - should return TOPLEVEL_BINDING if parameter self is main - history arrays - sets _in_ to an array with the entered lines - sets _ to the last result - can change the size of the history arrays - store exceptions - sets out to an array with the result - uses 100 as the size of _in_ and _out_ - rep - should be able to evaluate exceptions normally - should notice when exceptions are raised - should suppress output if input ends in a ";" and is an Exception object (single line) - should suppress output if input ends in a ";" (single line) - should not leak pry constants into Object namespace - should set an ivar on an object - should be able to operate inside the BasicObject class - should define a nested class under Hello and not on top-level or Pry - should not try to catch intended exceptions - should display error if Pry instance runs out of input - should make self evaluate to the receiver of the rep session - multi-line input - works - should suppress output if input ends in a ";" (multi-line) - newline stripping from an empty string - with double quotes - with single quotes - with fancy delimiters - newline stripping from an empty regexp - with regular regexp delimiters - with fancy delimiters - newline from an empty heredoc - works - Exotic object support - Should not error when return value is a BasicObject instance - Pry.binding_for - should work on frozen objects - should not leak local variables - Should not error when object doesn't have a valid == method - Pry.critical_section - should prevent Pry being called - a fresh instance - should use `caller` as its backtrace - -raise-up - should raise the most recently raised exception - should allow you to cd up and (eventually) out - should raise an unamed exception with raise-up - should jump immediately out of nested contexts with ! - should eat the exception at the last new pry instance on raise-up - should raise the exception with raise-up - -Pry::History - saving to a file - interleaves lines from many places - saves lines to a file as they are written - should not write histignore words to the history file - .default_file - returns ~/.local/share/pry/pry_history - when $XDG_DATA_HOME is defined - returns config location relative to $XDG_DATA_HOME - returns config location relative to $XDG_DATA_HOME when ~/.pryrc exists - when ~/.pry_history exists - returns ~/.pry_history - #push - does not record duplicated lines - does not record lines that contain a NULL byte - does not record empty lines - #history_line_count - counts entries in history - .load_history - reads the contents of the file - file io errors - handles Errno::ENOENT failure to write history - handles Errno::ENOENT failure to read from history - handles Errno::EACCES failure to read from history - handles Errno::EACCES failure to write history - #session_line_count - returns the number of lines in history from just this session - #clear - clears this session's history - doesn't affect the contents of the history file - expanding the history file path - recognizes ~ (#1262) - -Pry::CommandSet - #create_command - can overwrite default description - assings default description - defines a new class command - configures command options - class_evals the given block in the command context - when description is a hash - treats description as options - #alias_command - sets description for the aliased command automatically - sets group for the aliased command automatically - sets aliased command's listing for regex alias - sets aliased command's listing for string alias - returns the aliased command - when command doesn't match - raises RuntimeError - when non-string description is provided - uses the string representation of the given object - when string description is provided - uses the given description for the aliased command - #[]= - rebinds the command with key - when given command is nil - deletes the command matching the pattern - when given command is not a subclass of Pry::Command - raises TypeError - #process_line - when the given line is not a command - returns a void result - returns not a command - when the given line is a command - returns a non-void command - returns a command - and context is provided - passes the context to the command - #find_command_by_match_or_listing - returns a matching by name command - returns a matching by listing command - raises ArgumentError on non-matching command - #block_command - assings default description - can overwrite default description - configures command options - defines a new command - when description is a hash - treats description as options - #rename_command - renames a comamnd - can optionally set custom description - when provided command is not registered - raises ArgumentError - #delete - deletes given commands - #each - iterates over commands - #list_commands - returns the list of commands - #add_command - adds a command - #desc - sets command description - gets command description - #new - merges other set with itself - when block given - instance evals the block - #import - returns self - imports commands from given sets - includes given sets' helper modules - #valid_command? - when command can be found - returns true - when command cannot be found - returns false - #to_hash - converts commands to hash - doesn't mutate original commands - #find_command_for_help - when the command can be found - returns the command - when the command cannot be found - returns nil - #import_from - imports matching command from a set - includes other set's helper module - returns self - #[] - when there's an ambiguous command - prefers a command with a higher score - when there's an unambiguous command - selects the command according to the given pattern - -Pry::Pager - PageTracker - records short lines that do add up to a page - doesn't count a line until it ends - records a string with an embedded newline - doesn't count ansi color codes towards length - records short lines that don't add up to a page - treats a long line as taking up more than one row - -Pry.run_command - performs a simple ls - can perform a show-source - -Pry::WrappedModule - .from_str - should lookup a local - should lookup a constant - should lookup an ivar - .super - receiver is a module - should retrieve nth super - should not ignore modules when retrieving supers - should return self when .super(0) is used - receiver is a class - should return nth superclass for a wrapped class - should return superclass for a wrapped class - should return self when .super(0) is used - should ignore modules when retrieving nth superclass - should return nil when no nth superclass exists - #initialize - should raise an exception when a non-module is passed - candidates - source - should return source for third ranked candidate - should return primary candidates source by default - should return source for second ranked candidate - should return source for highest ranked candidate - should return source for deeply nested class - ordering of candidates - returns class with third largest number of methods as third ranked candidate - returns class with second largest number of methods as second ranked candidate - should return class with largest number of methods as primary candidate - should raise when trying to access non-existent candidate - number_of_candidates - should return 1 candidate for a class with a nested module with methods - should return 0 candidates for a class with no nested modules or methods - should return the correct number of candidates - source_location - should return nil if no source_location can be found - should return primary candidates source_location by default - returns the location of the outer module if an inner module has methods - doc - should return docs for deeply nested class - should return doc for third ranked candidate - should return doc for second ranked candidate - should return primary candidates doc by default - should return doc for highest ranked candidate - .singleton_class? - should be true for singleton classes - should be false for normal classes - should be false for modules - .singleton_instance - should return the attached object - should raise an exception when called on a non-singleton-class - .method_prefix - of singleton classes of objects - of singleton classes of anonymous classes should not be empty - should return Bar# for modules - should return Foo# for normal classes - should return Foo. for singleton classes of classes - of anonymous classes should not be empty - -watch expression - doesn't print when an expresison remains the same - prints when an expression changes - prints no watched expressions - continues to work if you start a second pry instance - watches an expression - registers the after_eval hook - watches a local variable - prints when an expression is mutated - deleting expressions - keeps keeper - deletes delete +Pry::REPL + should let you run commands in the middle of multiline expressions + should rescue exceptions + space prefix + with 1 space + it prioritizes variables over commands + with more than 1 space + prioritizes commands over variables + #piping? + returns false when $stdout is a non-IO object + eval_string and binding_stack + shouldn't break if we start a nested instance + shouldn't break if we pop bindings in Ruby + shouldn't break if we start a nested REPL + should immediately evaluate eval_string after cmd if complete + autoindent + should raise no exception when indented with a tab (PENDING: Temporarily skipped with xit) commands - should define a command that does NOT keep its return value - a command (with :keep_retval => true) that replaces eval_string with a valid expression overwrites the eval_string with the return value - a command (with :keep_retval => false) that replaces eval_string with a valid expression doesn't have the expression value suppressed - should define a command that keeps its return value - creates a command in a nested context and that command should be accessible from the parent - should change description of a command using desc - enables an inherited method to access opts, output and target, due to instance_exec - should import commands from another command object - should run a command with one parameter - should create a regex command and be able to invoke it - should define a command that keeps its return value even when nil - should delete some inherited commands when using delete method - should NOT try to interpolate pure ruby code (no commands) + should create a regex command and interpolate the captures + should inherit commands from Pry::Commands + should interpolate ruby code into commands should run a command with no parameter should create a command with a space in its name and pass an argument - should define a command that keeps its return value but does not return when value is void - doesn't choke on complex string interpolation when checking if ruby code is a command - creates a regex command and passes captures into the args list before regular arguments should create a command with a space in its name zzz - should NOT interpolate ruby code into commands if :interpolate => false + should NOT try to interpolate pure ruby code (no commands) + should set the commands default, and the default should be overridable + doesn't choke on complex string interpolation when checking if ruby code is a command + should change description of a command using desc + a command that return a value in a multi-line expression clears the expression and return the value + should create a regex command and be able to invoke it + should run a command with one parameter + should define a command that keeps its return value should create a regex command and arg_string should be interpolated + should NOT interpolate ruby code into commands if :interpolate => false + enables an inherited method to access opts, output and target, due to instance_exec + should define a command that does NOT keep its return value should override some inherited commands - a command that return a value in a multi-line expression clears the expression and return the value - should inherit commands from Pry::Commands - should create a regex command and interpolate the captures + creates a regex command and passes captures into the args list before regular arguments + should define a command that keeps its return value but does not return when value is void if a regex capture is missing it should be nil - should set the commands default, and the default should be overridable - should interpolate ruby code into commands + a command (with :keep_retval => false) that replaces eval_string with a valid expression doesn't have the expression value suppressed + should import commands from another command object + should define a command that keeps its return value even when nil + should delete some inherited commands when using delete method + a command (with :keep_retval => true) that replaces eval_string with a valid expression overwrites the eval_string with the return value + creates a command in a nested context and that command should be accessible from the parent + Pry#run_command + should run a command that modifies the passed in eval_string + should run a command in the context of a session Pry::Command#run - should run a command from within a command with arguments + should run a regex command from within a command + should allow running of cd command when contained in a single string should allow running of commands with following whitespace should run a command from within a command + should run a command from within a command with arguments should allow running of cd command when split into array - should allow running of cd command when contained in a single string - should run a regex command from within a command alias_command + should be able to alias a regex command should pass on arguments to original + should be able to make the alias a regex should make an aliasd command behave like its original - should pass option arguments to original with additional parameters - should be able to alias a regex command should pass option arguments to original - should be able to make the alias a regex - Pry#run_command - should run a command in the context of a session - should run a command that modifies the passed in eval_string + should pass option arguments to original with additional parameters -jump-to - prints error when trying to jump to a non-existent binding index - jumps to the proper binding index in the stack - prints an error when trying to jump to the same binding index +Pry::SystemCommandHandler + .default + when command exists + executes the command without printing the warning + when doesn't exist + executes the command without printing the warning -Hanami integration - does not enter an infinite loop (#1471, #1621) +Pry::Command::Wtf + #process + when the code flag is present + prints lines of code that exception frame references + and when referenced frame doesn't exist + skips code and prints only the backtrace frame + when the verbose flag is present + prints full exception backtrace + when there wasn't an exception raised + raises Pry::CommandError + when given a nested exception + and when the verbose flag present + prints both original and nested exception backtrace + and when the verbose flag is missing + prints parts of both original and nested exception backtrace + when captures contains exclamations (wtf?! invocation) + prints more of backtrace + when the verbose flag is missing + prints only a part of the exception backtrace + +Formatting Table + decide between one-line or indented output + knows about colorized fitting + line length is smaller than the length of the longest word + should not raise error + should format output as one column + formatting - should order downward and wrap to columns + should handle empty input + should handle colors + should handle... another basic case + should handle a tiny case + should handle the basic case + should handle one-token input + +ls + when inside Modules + should behave normally when invoked on Module itself + should work for ivars + should include instance methods by default + should still work + with -l + should find locals and sort by descending size + should not list pry noise + help + should show help with -h + bug #1407 + behaves as usual when a method of the same name exists. + grep + should reduce the number of outputted things + should still output matching things + immediates + should work on Integer + on java objects + should include java-esque aliases if requested (PENDING: No reason given) + should omit java-esque aliases by default (PENDING: No reason given) + constants + should show constants for an object's class regardless of mixins + should show constants defined on the current module + should not autoload constants! + should show constants defined on ancestors with -v + should not show constants defined on parent modules by default + works on top-level + BasicObject + should work on subclasses of BasicObject + should work on BasicObject + methods + should show error message when instance is given with -M option + should handle classes that (pathologically) define .ancestors + should show public methods by default + should work for objects with an overridden method method + should show protected/private methods with -p + should not show protected/private by default + should work for objects which instance_variables returns array of symbol but there is no Symbol#downcase + should show public methods with -p + when no arguments given + when in an object + should show methods + should show instance variables + when at the top-level + should show local variables + when in a class + should show methods + should show class variables + should show constants + below ceiling + should not include super-classes when -q is given + should stop before Object by default + should include super-classes by default + should include object if -v is given + +whereami + should work with methods that have been undefined + should properly set _file_, _line_ and _dir_ + should work with prepended methods + should work inside an object + shows description and corrects code when @method.source_location would raise an error + should work at the top level + should show entire file when -f option used + should work inside a class + should show code window (not just method source) if parameter passed to whereami + uses Pry.config.default_window_size for window size when outside a method context + should show entire method when -m option used + should not show line numbers or marker when -n switch is used + should work in objects with no method methods + should work in BasicObjects + shows description and corrects code when __LINE__ and __FILE__ are outside @method.source_location + -c + should show class when -c option used, and locate correct candidate + should show class when -c option used, and locate correct superclass + should show class when -c option used, and binding is outside a method + should show class when -c option used, and beginning of the class is on thesame line as another expression + +exit-program + should exit the program with the provided value + should raise SystemExit + +Pry::Editor + .default + when $VISUAL is defined + returns the value of $VISUAL + when platform is Windows + returns 'notepad' + when $EDITOR is defined + returns the value of $EDITOR + when no editor is detected + shells out to find 'editor' + shells out to find 'vi' + shells out to find 'nano' + build_editor_invocation_string + should shell-escape files (PENDING: No reason given) + invoke_editor with a proc + should not shell-escape files + build_editor_invocation_string on windows + should not shell-escape files + +Pry::Helpers::CommandHelpers + #absolute_index_number + when line number is less than zero + returns the absolute sum of line number and array length + when line number is zero + returns the line number + #get_method_or_raise + when there's name but no corresponding method + raises MethodNotFound + when super opt is provided and there's a parent method + gets the parent method + when super opt is provided but there's no super method + raises MethodNotFound + when there's no method name + raises MethodNotFound + #unindent + should not be phased by empty lines + should also remove tabs if present + should ignore lines starting with -- + removes the same prefix from all lines + should only remove a common prefix + #restrict_to_lines + when lines are specified as a range + restricts the given string to the specified range + when lines are specified as an integer + restricts the given string to the specified line number + #one_index_range_or_number + when given a range + decrements range boundaries + when given an integer + decrements the line number + #one_index_range + decrements range boundaries + #absolute_index_range + when given an integer + returns an absolute range that was decremented + when given an integer + returns a range based on the integer and array length + #one_index_number + when line number is 0 + returns the line number + when line number is more than 0 + decrements the line number + #set_file_and_dir_locals + injects local variable _dir_ + injects local variable _file_ + sets pry instance's last_dir to _dir_ + sets pry instance's last_file to _file_ + #temp_file + yields a tempfile + creates a tempfile with rb extension + unlinks the tempfile + closes the tempfile + allows overwriting file extension + #internal_binding? + when target's __method__ returns __binding__ + returns true + when target's __method__ returns nil + returns true + when target's __method__ returns __pry__ + returns true + +cat + when invoked without arguments + should display an error message + with --in 1 + should display the first expression with no index + with --in 1..2 + should display the given range with indices, omitting nils + with --in + should display the last few expressions with indices + with --ex N + should cat first level of backtrace when --ex 0 used + should cat third level of backtrace when --ex 2 used + should cat second level of backtrace when --ex 1 used + should show error when backtrace level out of bounds + each successive cat --ex should show the next level of backtrace, and going past the final level should return to the first + should cat first level of backtrace when --ex used with no argument + on receiving a file that does not exist + should display an error message + with --ex + cat --ex should display repl code that generated exception + cat --ex should correctly display code that generated exception + with --in -1 + should display the last expression with no index + +Pry::CLI + .parse_options + when option exists + removes the existing option from ARGV + initializes session setup + finalizes session setup + when argv is passed with a double dash (--) + sets everything after the double dash as input args + when invalid option is provided + exits program + when option doesn't exist + raises error + when multiple options exist + processes only called options + when argv is passed with a dash (-) + sets everything after the dash as input args + .start + sets Pry.cli to true + when the help option is provided + exits + when the context option is provided + starts Pry in the provided context + finalizes session setup + initializes session setup + when the context option is not provided + starts Pry in the top level + when 'pry' is passed as an input arg + does not load files through repl + when there are some input args + loads files through repl and exits + .add_options + returns self + when options is nil and a block is provided + sets the block as options + when options were previously set + overwrites the options proc that executes original options + overwrites the options proc that executes the provided block + .add_plugin_options + loads cli options of plugins + returns self + .add_option_processor + returns self + adds an option processor + +Pry::BlockCommand + #call + when #process accepts some arguments + calls the block even if there's not enough arguments + calls the block even if there are more arguments than needed + when #process accepts no arguments + calls the block despite passed arguments + when passed a variable-length array + calls the block with some arguments + calls the block without arguments + #help + returns help output + +Pry::Code + #with_indentation + indents lines + #take_lines + takes N lines from start_line + #== + when a code is compared with another code with different lines + returns true + when a code is compared with another code with identical lines + returns true + when an empty code is compared with another empty code + returns true + .from_module + reads line from a class + sets code type to :ruby + .from_method + reads lines from a method's definition + #select + returns a code object + selects lines matching a condition + #around + when line number is nil + returns self + when line number is an integer + selects one line around the specified line number + and we specify how many lines to select + selects more than 1 line around + #method_missing + when a String does not respond to the given method + raises NoMethodError + when a String responds to the given method + forwards the method to a String instance + #expression_at + returns a multiline expressiong starting on the given line number + #comment_describing + returns a comment describing expression + #respond_to_missing? + when a String does not respond to the given method + doesn't find the method + when a String responds to the given method + finds the method that is not defined on self + #length + returns how many lines the code object has + #between + when a negative end_line is specified + returns a range of lines from the end + when a negative start_line is specified + returns a line from the end + when start_line is nil + returns self + when both start_line and end_line are specified + returns a code object + removes all lines that aren't in the given range + when start_line is a Range + returns a range fo lines corresponding to the given Range + when only start_line is specified + returns a code object + removes leaves only the specified line + #with_line_numbers + appends line numbers to code + #after + when line number is nil + returns self + when line number is an integer + selects one line around the specified line number + and we specify how many lines to select + selects more than 1 line around + .from_file + reads lines from a file relative to current pwd + reads lines from a file on disk + reads lines from a file relative to origin pwd + reads lines from a file relative to origin pwd with '.rb' omitted + sets code type according to the file + raises error when file doesn't exist + when readling lines from Pry's line buffer + reads entered lines + can specify file type manually + when reading files from $LOAD_PATH + finds files in a relative directory with '.rb' extension + doesn't confuse files with the same name, but with an extension + recognizes Gemfile as a Ruby file + finds Ruby files with omitted '.rb' extension + doesn't confuse files with the same name, but without an extension + finds files in a relative directory with '.rb' omitted + finds files with '.rb' extensions + when reading lines from a file without an extension + sets code type to :unknown + #before + when line number is nil + returns self + when line number is an integer + selects one line before the specified line number + and we specify how many lines to select + selects more than 1 line before + #push + is an alias of #<< + appends lines to the code + #to_s + returns a string representation of code + #reject + rejects lines matching a condition + returns a code object + #grep + when pattern is nil + returns self + when pattern is specified + returns lines matching the pattern + #nesting_at + returns an Array of open modules + #max_lineno_width + when there are less than 100 lines + returns 2 + when there are less than 10 lines + returns 1 + when there are less than 1000 lines + returns 3 + #raw + when code has a marker + returns an unformatted String of all lines + #with_marker + shows a marker in the right place + Pry::Code() + when given a Pry::Method + reads lines from Pry::Method + when given an Array + reads lines from the array + when given an UnboundMethod + reads lines from unbound methods + when given a Proc + reads lines from proc + when given a Method + reads lines from bound method + when given a Code object + returns the passed parameter unchanged + #highlighted + returns a highlighted for terminal string representation of code + +! + should not clear the input buffer for negation + should correctly clear the input buffer + +Pry::Indent + should handle multiple open and closing tokens on a line + should not indent nested HEREDOCs + should correctly handle while do + should not indent single-line ifs + should indent a function + should not indent single-line rescue + should ident case statements + should not indent single/multi-line until + should indent an array + should not indent single line statements + should properly indent nested code + should indent begin rescue end + should indent a hash + should indent a module and class + should not indent inside HEREDOCs + should not indent inside strings + should indent correctly with nesting + should differentiate single/multi-line unless + should indent statements such as if, else, etc + should indent cunningly disguised ifs + should indent separate lines + nesting + should parse nesting on line 2 of example_nesting.rb + should parse nesting on line 1 of example_nesting.rb + should parse nesting on line 6 of example_nesting.rb + should parse nesting on line 14 of example_nesting.rb + should fail to parse nesting on line 20 of example_nesting.rb + should parse nesting on line 23 of example_nesting.rb + should parse nesting on line 31 of example_nesting.rb + should fail to parse nesting on line 17 of example_nesting.rb + should parse nesting on line 24 of example_nesting.rb + should fail to parse nesting on line 30 of example_nesting.rb + should parse nesting on line 13 of example_nesting.rb + should fail to parse nesting on line 18 of example_nesting.rb + should parse nesting on line 25 of example_nesting.rb + should parse nesting on line 9 of example_nesting.rb + should parse nesting on line 22 of example_nesting.rb + should parse nesting on line 15 of example_nesting.rb + should parse nesting on line 8 of example_nesting.rb + should parse nesting on line 16 of example_nesting.rb + should parse nesting on line 3 of example_nesting.rb + should parse nesting on line 33 of example_nesting.rb + should parse nesting on line 32 of example_nesting.rb + should parse nesting on line 29 of example_nesting.rb + should parse nesting on line 11 of example_nesting.rb + should parse nesting on line 10 of example_nesting.rb + should parse nesting on line 12 of example_nesting.rb + should parse nesting on line 27 of example_nesting.rb + should parse nesting on line 5 of example_nesting.rb + should fail to parse nesting on line 21 of example_nesting.rb + should parse nesting on line 28 of example_nesting.rb + should fail to parse nesting on line 19 of example_nesting.rb + should parse nesting on line 26 of example_nesting.rb + should parse nesting on line 4 of example_nesting.rb + should parse nesting on line 7 of example_nesting.rb + +raise-up + should raise the most recently raised exception + should raise the exception with raise-up + should jump immediately out of nested contexts with ! + should raise an unamed exception with raise-up + should eat the exception at the last new pry instance on raise-up + should allow you to cd up and (eventually) out Pry::Config - is expected to be a kind of Method - is expected to be a kind of OpenStruct - is expected to equal true or equal false - is expected to be a kind of Pry::History - is expected to respond to #call is expected to be a kind of String is expected to be a kind of String + is expected to be a kind of Pry::CommandSet is expected to equal true or equal false - is expected to be a kind of Hash - is expected to be a kind of Pry::Hooks + is expected to be a kind of Numeric + is expected to be a kind of Proc + is expected to eq true or equal false + is expected to be a kind of Array + is expected to be a kind of Array + is expected to be a kind of OpenStruct + is expected to be a kind of Proc + is expected to be a kind of IO is expected to be a kind of String + is expected to equal true or equal false is expected to be a kind of String - is expected to be a kind of IO is expected to equal true or equal false - is expected to be a kind of Method - is expected to be a kind of Method - is expected to be a kind of Numeric - is expected to respond to #readline is expected to equal true or equal false is expected to be a kind of String - is expected to be a kind of Pry::CommandSet is expected to equal true or equal false + is expected to be a kind of Pry::Hooks + is expected to be a kind of Numeric + is expected to be a kind of Method + is expected to be a kind of Method + is expected to be a kind of String is expected to equal true or equal false is expected to equal true or equal false is expected to equal true or equal false + is expected to be a kind of Method + is expected to respond to #call is expected to equal true or equal false - is expected to be a kind of Proc + is expected to be a kind of Pry::Prompt + is expected to respond to #readline + is expected to be a kind of Pry::History + is expected to be a kind of Array is expected to equal true or equal false - is expected to be a kind of Numeric - is expected to be a kind of Proc - is expected to eq Pry::InputCompleter - is expected to be a kind of String + is expected to eq true or equal false is expected to equal true or equal false is expected to equal true or equal false - is expected to be a kind of Array + is expected to eq Pry::InputCompleter is expected to equal true or equal false - is expected to eq true or equal false - is expected to be a kind of Array - is expected to eq true or equal false is expected to be a kind of String - is expected to be a kind of Pry::Prompt - is expected to be a kind of Array - #merge! - merges given hash with the config instance - returns self - when an undefined option is given - adds the option to the config - #respond_to? - when checking an undefined option - returns false - when checking a defined option - returns true for the reader - returns true for the writer - #rc_file - when ~/.pryrc exists and $XDG_CONFIG_HOME is undefined - defaults to ~/.pryrc - when $XDG_CONFIG_HOME is defined - and when ~/.pryrc exists - defaults to $XDG_CONFIG_HOME/pry/pryrc - and when ~/.pryrc doesn't exist - defaults to $XDG_CONFIG_HOME/pry/pryrc - when $PRYRC env variable is set - defaults to the value of PRYRC env variable - #[] - reads the config value - returns the config value + is expected to be a kind of Hash #method_missing + when invoked method ends with = + assigns a new custom option when invoked method is not an option returns nil when invoked method is a LazyValue defines a callable attribute - when invoked method ends with = - assigns a new custom option + #merge + returns a new config object + doesn't mutate the original config #control_d_handler when it returns a callabale with two arguments and when it's called with multiple arguments @@ -1799,471 +1921,926 @@ doesn't print a warning when the handler expects multiple arguments prints a warning - #merge - returns a new config object - doesn't mutate the original config - -exit - should break out of the repl even after an exception - should break out of the repl and return user-given value - should pop a binding - should break out of the repl when binding_stack has only one binding - -test Pry defaults - should set the hooks default, and the default should be overridable - should set the output default, and the default should be overridable - should set the print default, and the default should be overridable - quiet - should hide whereami if quiet is set - should show whereami by default - pry return values - should return the parameter given to exit-all - should return the parameter (multi word string) given to exit-all - should return the parameter (self) given to exit-all - should return the parameter (function call) given to exit-all - should return nil - input - should not pass in the prompt if the arity is 0 - should pass in the prompt if readline arity is 1 - should not pass in the prompt if the arity is -1 - should set the input default, and the default should be overridable - view_clip used for displaying an object in a truncated format - given a regular object with an #inspect string longer than the maximum specified - when the object is a Class or a Module - with a #name longer than the maximum specified - returns a string of the # format - with a #name shorter than or equal to the maximum specified - returns a string of the # format - without a name (usually a c = Class.new) - returns a string of the # format - when the object is a regular one - returns a string of the # format - the list of prompt safe objects - returns the #inspect of the special-cased immediate object: -5 - returns the #inspect of the special-cased immediate object: 1 - returns the #inspect of the special-cased immediate object: test - returns the #inspect of the special-cased immediate object: 2.0 - returns the #inspect of the special-cased immediate object: hello - returns the #inspect of the custom prompt safe objects - returns #<> format of the special-cased immediate object if #inspect is longer than maximum - given an object with an #inspect string as long as the maximum specified - returns the #<> format of the object (never use inspect) - given the 'main' object - returns the #to_s of main (special case) - given an object with an #inspect string - returns the #<> format of the object (never use inspect) - prompts - sets the prompt default, and the default should be overridable (single prompt) - sets the prompt default, and the default should be overridable (multi prompt) - storing and restoring the prompt - should restore overridden prompts when returning from shell-mode - should not pop the last prompt - should have a prompt stack - #pop_prompt should return the popped prompt - #prompt= should replace the current prompt with the new prompt - when only one prompt on the stack - when several prompts on the stack - toplevel_binding - should have self the same as TOPLEVEL_BINDING - should define private methods on Object - should be devoid of local variables - -Pry::Env + #respond_to? + when checking a defined option + returns true for the writer + returns true for the reader + when checking an undefined option + returns false + #rc_file + when $PRYRC env variable is set + defaults to the value of PRYRC env variable + when $XDG_CONFIG_HOME is defined + and when ~/.pryrc exists + defaults to $XDG_CONFIG_HOME/pry/pryrc + and when ~/.pryrc doesn't exist + defaults to $XDG_CONFIG_HOME/pry/pryrc + when ~/.pryrc exists and $XDG_CONFIG_HOME is undefined + defaults to ~/.pryrc #[] - when ENV doesn't contain the passed key - is expected to be nil - when ENV contains the passed key but its value is nil - is expected to be nil - when ENV contains the passed key - is expected to eq "val" + returns the config value + reads the config value + #merge! + merges given hash with the config instance + returns self + when an undefined option is given + adds the option to the config -Pry::Hooks - Pry::Hooks#merge - merge! - should merge in the Pry::Hooks - should overwrite identical hook in receiver - should NOT overwrite hooks belonging to shared event in receiver - should preserve hook order - should not share merged elements with original - merge - should not affect original instances when new hooks are added - should contain hooks from original instance - should return a fresh, independent instance - dupping a Pry::Hooks instance - should share hooks with original - adding a new hook to dupped instance should not affect original - adding a new event to dupped instance should not affect original - .default - returns hooks with default before_session hook - when pry instance is not quiet - runs the whereami command - when pry instance is quiet - doesn't run the whereami command - anonymous hooks - should allow adding of hook without a name - should execute most recently added anonymous hook - should only allow one anonymous hook to exist - executing a hook - should execute block hook - should execute all hooks for an event if more than one is defined - should add exceptions to the errors array - return value of exec_hook should be that of last executed hook - should execute proc hook - should return the last exception raised as the return value - should execute hooks in order - should execute a general callable hook - integration tests - when_started hook - should yield options to the hook - should allow overriding of target (and binding_stack) - target - should yield the target, as a binding - should yield the target to the hook - after_session hook - should always run, even if uncaught exception bubbles out of repl - before_eval hook - modifying input code - should replace input code with code determined by hook - should not interfere with command processing when replacing input code - exceptions - should not raise exceptions - should print out a notice for each exception raised - getting hooks - get_hooks - should return a hash of hook names/hook functions for an event - should return an empty hash if no hooks defined - get_hook - should return nil if hook does not exist - should return the correct requested hook - deleting a hook - should successfully delete a hook - should return nil if hook does not exist - should return the deleted hook - adding a new hook - should use block if given both block and callable - should create multiple hooks for an event - should not allow adding of a hook with a duplicate name - should not execute hook while adding it - should raise if not given a block or any other object - should create a new hook with a callable - should create a new hook with a block - should return a count of 0 for an empty hook - clearing all hooks for an event - should clear all hooks +Pry::ControlDHandler + when given eval string is empty & pry instance has 2+ bindings + pops the binding off the stack + saves a dup of the current binding stack in the 'cd' command + when given eval string is empty & pry instance has one binding + clears binding stack + throws :breakout + when given eval string is non-empty + clears input buffer -Pry::ExceptionHandler - .handle_exception - when exception is a nested standard error - prints standard error message - when exception is a standard error - prints standard error message - when exception is a UserError and a SyntaxError - prints the syntax error with customized message +Pry::Prompt + #description + returns description + #prompt_procs + returns the proc array + #wait_proc + returns the first proc + prompt invocation + computes prompt name dynamically + #name + returns name + #incomplete_proc + returns the second proc + .all + returns a duplicate of original prompts + returns a hash with prompts + .add + adds a new prompt + returns nil + raises error when separators.size != 2 + raises error on adding a prompt with the same name + .[] + accesses prompts -Bundler - when Pry requires Gemfile, which doesn't specify Pry as a dependency - loads auto-completion correctly (PENDING: Temporarily skipped with xit) +jump-to + prints error when trying to jump to a non-existent binding index + jumps to the proper binding index in the stack + prints an error when trying to jump to the same binding index -Pry::CodeObject - .lookup - when looking up 'nil' while being inside a module - infers the module - when looking up Pry commands by listing - finds Pry::WrappedModule - when looking up method - finds methods defined on objects - when looking up class methods of a named class - finds instance methods via the # notation - when looking up Pry::ClassCommand - finds Pry:BlockCommand - when looking up Pry commands by class - finds Pry::WrappedModule - when looking up 'nil' - returns nil - when looking up classes with 'super: 0' - finds the child class - when looking up classes with 'super: 1' - finds the parent class - when looking up 'nil' while being inside a method - infers the method - when looking up instance methods - finds instance methods via the # notation - finds instance methods via the . notation - when looking up classes - finds classes - when looking up instance methods of a class - finds instance methods - when looking up 'nil' while being inside a class instance - infers the module - when looking up anonymous class methods - finds instance methods via the # notation - when looking up classes by names of variables - finds instance methods via the # notation - when looking up empty string while being inside a class instance - infers the module - when looking up modules - finds modules - when looking up empty string while being inside a method - infers the method - when looking up procs - finds classes - when looking up empty string while being inside a module - infers the module - when there is a class and a method who is a namesake - finds the class before the method - finds the method when the look up ends with () - finds the class before the method when it's namespaced - when looking up Pry::BlockCommand - finds Pry:BlockCommand - when looking up commands with the super option - finds the command ignoring the super option +Pry::Method + should use String names for compatibility + super + should be able to find the super method of an unbound method + should be able to find the super method on a bound method + should return nil if no super method exists + should be able to find super methods defined on super-classes when there are modules in the way + should be able to find super methods defined on modules + jumps up multiple levels of bound method, even through modules + #receiver + when it is overriden in Object + correctly reports the receiver + #parameters + when it is overriden in Object + correctly reports the parameters + .from_str + looks up methods if no instance methods available and no options provided + should look up methods using the object.method syntax + looks up instance methods first even if methods available and no options provided + should look up methods if :methods option provided + should not raise an exception if receiver does not exist + should take care of corner cases like mongo[] e.g Foo::Bar.new[]- issue 998 + should look up methods using klass.new.method syntax + should look up instance methods if "instance-methods" option provided + should look up methods using instance::bar syntax + should look up instance methods using the Class#method syntax + should NOT look up methods using the object.method syntax if no methods defined + should take care of cases like $ mongo[] - issue 998 + should look up instance methods using klass.meth#method syntax + should NOT look up instance methods using the Class#method syntax if no instance methods defined + looks up instance methods if no methods available and no options provided + method_name_from_first_line + should work in all simple cases + all_from_class + should be able to find public instance methods defined in a class + finds instance methods defined in modules included into this class + should find methods all the way up to Kernel + should attribute overridden methods to the sub-class + should be able to find methods defined on a singleton class + should be able to find methods on super-classes when given a singleton class + finds instance methods defined in modules included into super-classes + finds private and protected instance methods defined in a class + should be able to find instance methods defined in a super-class + .signature + should print the name of optional args, with =? after the arg name + should print the name of block args, with an & label + should print the name of keyword args, with :? after the arg name + should print the name of regular args + should print the name of additional args, with an * label + should print the name of keyword args, with : after the arg name + .from_binding + should NOT find a method from the toplevel binding + should find the super method correctly + should find the right method if a super method exists + should find the right method even if it was renamed and replaced + should be able to pick a method out of a binding + should find methods that have been undef'd + should find the right method from a BasicObject + method aliases + should return an empty Array if cannot find aliases + should be able to find aliases for methods implemented in C + should find aliases for top-level methods + should be able to find method aliases + should not include the own name in the list of aliases + #owner + when it is overriden in Object + correctly reports the owner + all_from_obj + method resolution order + should look at a class and then its superclass + should include modules included into singleton classes + should include singleton classes for classes + includes the Pry::Method.instance_resolution_order of Class after the singleton classes + should include modules at most once + should not include singleton classes of numbers + should include the included modules between a class and its superclass + should include included modules for Modules + should include modules at the point which they would be reached + should include the singleton class of objects + should not include modules extended into the class + on normal objects + should find methods defined in modules included into the object's class + should not find methods defined on the classes singleton class + should work in the face of an overridden send + should find methods in modules included into the object's singleton class + should find methods defined in the object's class + should find methods defined in the object's singleton class + should find methods all the way up to Kernel + on classes + should find methods defined on the singleton class of super-classes + should find methods defined on Kernel + should find methods defined in the class' singleton class + should attrbute overridden methods to the class not the module + attributes overridden methods to the relevant singleton class in preference to Class + should attribute overridden methods to the sub-class' singleton class + should not find methods defined within the class + should find methods defined on modules extended into the class + should find methods defined on Class -Pry::Config::MemoizedValue +Pry::Config::LazyValue #call - memoizes the result of call - doesn't conflate falsiness with unmemoizedness + doesn't memoize the result of call -exit-all - should have empty binding_stack after breaking out of the repl - should break out of the repl and return nil - should break out of the repl wth a user specified value - should break out of the repl even if multiple bindings still on stack +Pry::Helpers::DocumentationHelpers + process_rdoc + should not double-highlight backticks inside indented code + should syntax highlight code in + should syntax highlight things in backticks + should syntax highlight code in + should emphasise italic tags + should not remove ++ + should syntax highlight indented code + should emphasise em tags + should highlight words surrounded by +s + get_comment_content + should strip out leading lines of hashes + should strip off the hash and unindent + should remove shebangs + should unindent past separators + +edit + old edit-method tests now migrated to edit + on a method defined in a file + without -p + should correctly find a class method + should correctly find an aliased method + should correctly find an instance method + should correctly find a method on an instance + should correctly find a method from a module + with -p + should preserve module nesting + should successfully replace a method with a question mark + should successfully replace a class method + should successfully replace a method on an instance + should successfully replace an instance method + should successfully replace a method from a module + monkey-patching + should work for a method with a question mark + should work for a class method + should work for a method from a module + should work with nesting + should work for an instance method + should work for a method on an instance + with three-arg editor + should pass the editor a reloading arg + on an aliased method + should change the alias, but not the original, without breaking super + with --ex + with --ex NUM + should start editor on first level of backtrace with --ex 0 + should start editor on third level of backtrace with --ex 2 + should display error message when backtrace level is invalid + should start editor on second level of backtrace with --ex 1 + should start on first level of backtrace with just --ex + with a real file + should not reload the file if -n is passed + edits the exception even when in a patched method context + should reload the file + with --patch + should apply changes only in memory (monkey patching) + pretty error messages + should display a nice error message when cannot open a file + with --in + should edit a range of lines if a range is given + should edit the last line if no argument is given + should edit the nth line of _in_ + should not work with a filename + should edit a multi-line expression as it occupies one line of _in_ + should not work with nonsense + with FILE + should work with require relative + should guess the line number from a colon + should not delete the file! + should use the line number from -l + should invoke Pry.config.editor with absolutified filenames + works with files that contain blanks in their names + should not allow patching any known kind of file + + should not reload the file if it is not a ruby file + should not reload a ruby file if -n is given + should reload a non-ruby file if -r is given + should reload the file if it is a ruby file + + should pass the editor a reloading arg + without FILE + should edit the current expression if it's incomplete + should evaluate the expression + should edit the previous expression if the current is empty + should position the cursor at the end of the expression + should write the evaluated command to history + should use a blank file if -t is specified + should ignore -n for tempfiles + should not evaluate a file with -n + should use a blank file if -t given, even during an expression + --method flag + errors when a filename arg is passed with --method + should edit method context + errors when cannot find method context + when editing a method by name + can repeatedly edit methods that were defined in the console + uses patch editing on methods that were previously patched + +Pry::ColorPrinter + .pp + when printing a BasicObject + prints a string + when #inspect returns an object literal + prints the object inspect + and when SyntaxHighlighter returns a token starting with '' + prints the object as is + and when SyntaxHighlighter returns a token that doesn't start with '' + prints the object with escape characters + when no exception is raised in #inspect + prints a string with a newline + when an exception is raised in #inspect + still prints a string + when #inspect raises Pry::Pager::StopPaging + propagates the error + .default + prints output prefix with value play + playing a file + should play a file + should output file contents with print option whatever + should restrict -d switch with --lines + should properly reindent lines should play documentation with the -d switch - should APPEND to the input buffer when playing a method line, not replace it should play a method (a single line) should play a method (multiple lines) - should restrict -d switch with --lines - should properly reindent lines has pretty error messages when -d cant find object - play -e - should run an expression from given line number + should APPEND to the input buffer when playing a method line, not replace it play -i should play multi-ranged input expressions - playing a file - should play a file - should output file contents with print option - -show-doc - emits a deprecation warning - shows docs - -Pry.config.unrescued_exceptions - should rescue all exceptions NOT specified on unrescued_exceptions - should NOT rescue exceptions specified on unrescued_exceptions - -Pry::Prompt - #incomplete_proc - returns the second proc - #name - returns name - #prompt_procs - returns the proc array - .[] - accesses prompts - .add - raises error when separators.size != 2 - adds a new prompt - returns nil - raises error on adding a prompt with the same name - .all - returns a duplicate of original prompts - returns a hash with prompts - #wait_proc - returns the first proc - prompt invocation - computes prompt name dynamically - #description - returns description - -disable-pry - should set DISABLE_PRY - should quit the current session - -Pry::Config::Attributable - #attribute - creates a writer attribute for the given name - creates a reader attribute for the given name - and when the attribute is invoked - sends the 'call' message to the value + play -e + should run an expression from given line number Pry::Ring #clear resets ring to initial state - #to_a - returns a duplicate of internal buffer - #<< - adds elements as is when the ring is not full - overwrites elements when the ring is full - keeps duplicate elements #[] - when the ring is not full + when the ring is full reads elements - reads elements via range + reads elements via exclusive range + reads elements via inclusive range + returns the first element when accessed through 0..0 when the ring is empty returns nil - when the ring is full + when the ring is not full + reads elements via range reads elements - returns the first element when accessed through 0..0 - reads elements via inclusive range - reads elements via exclusive range + #to_a + returns a duplicate of internal buffer + #<< + keeps duplicate elements + adds elements as is when the ring is not full + overwrites elements when the ring is full -Pry::Config::LazyValue +hist + should apply --head after --grep + should return last N lines in history with --tail switch + should replay a range of history correctly (range of items) + raises CommandError when index of `--replay` points out to another `hist --replay` + should store a call with `--replay` flag + should show lines between lines A and B with the --show switch + should replay a range of history correctly (range of commands) + excludes Pry commands from the history with `-e` switch + should return first N lines in history with --head switch + should replay history correctly (single item) + should apply --tail after --grep + should disallow execution of `--replay ` when CommandError raised + should show lines between offsets A and B with the --show switch + should not contain lines produced by `--replay` flag + should grep for correct lines in history + should start from beginning if tail number is longer than history + sessions + should not display histignore words in history + displays history only for current session + displays all history (including the current sesion) with `--all` switch + +Pry::InputCompleter + does not offer methods from restricted modules + should take parenthesis and other characters into account for symbols + ignores methods from modules that override Object#hash incompatibly + should complete for stdlib symbols + should not crash if there's a Module that has a symbolic name. (PENDING: No reason given) + should complete for arbitrary scopes + should complete for target symbols + should complete for stdlib symbols + should complete instance variables + completes expressions with all available methods + should not return nil in its output + should complete for arbitrary scopes + should complete for target symbols + +Hanami integration + does not enter an infinite loop (#1471, #1621) + +show-input + should correctly show the current lines in the input buffer + +amend-line + should correctly delete a range of lines using the ! for content + should amend a range of lines of input when negative numbers given + should correctly insert a line before a specified line using > + should amend the last line of input when no line number specified + should correctly delete the previous line using the ! for content + should ignore second value of range with > syntax + should correctly amend the specified line with interpolated text + should correctly amend the specified range of lines + should amend the specified range of lines, with numbers < 0 in range + should display error if nothing to amend + should correctly delete a specific line using the ! for content + should amend the first line of input when 0 given as line number + should amend the specified line of input when line number given + should amend a specified line when negative number given + +Bundler + when Pry requires Gemfile, which doesn't specify Pry as a dependency + loads auto-completion correctly (PENDING: Temporarily skipped with xit) + +exit-all + should have empty binding_stack after breaking out of the repl + should break out of the repl and return nil + should break out of the repl even if multiple bindings still on stack + should break out of the repl wth a user specified value + +disable-pry + should quit the current session + should set DISABLE_PRY + +Pry::ClassCommand + .inherited + when command_options is defined + sets command_options on the subclass + when description is defined + sets description on the subclass + when match is defined + sets match on the subclass + #process + raises CommandError + #help + returns help output + #complete + generates option completions + .source_file + returns source file + .source_location + returns source location + .doc + returns source code for the process method + .source + returns source code for the process method #call - doesn't memoize the result of call + sets command's args + invokes setup + sets command's opts + when help is not invloved + when passed a variable-length array + calls the command without arguments + calls the command with some arguments + when #process accepts some arguments + calls the command even if there's not enough arguments + calls the command even if there are more arguments than needed + when #process accepts no arguments + calls the command despite passed arguments + when help is invoked + outputs help info + returns void value + #slop + returns a Slop instance + makes Slop's banner unindented + defines the help option + when there are options + adds subcommands to Slop + when there are subcommands + adds subcommands to Slop + .source_line + returns source file + +The bin/pry CLI + -I path + adds an additional path to $LOAD_PATH + adds multiple additional paths to $LOAD_PATH + ARGV forwarding + forwards its remaining arguments as ARGV when - is passed + forwards ARGV as an empty array when -- is passed without following arguments + forwards ARGV as an empty array when - is passed without following arguments + forwards its remaining arguments as ARGV when -- is passed + +Pry::ExceptionHandler + .handle_exception + when exception is a UserError and a SyntaxError + prints the syntax error with customized message + when exception is a nested standard error + prints standard error message + when exception is a standard error + prints standard error message + +Pry::Warning + #warn + prints message with file and line of the calling frame + +Pry::History + saving to a file + interleaves lines from many places + should not write histignore words to the history file + saves lines to a file as they are written + #session_line_count + returns the number of lines in history from just this session + .default_file + returns ~/.local/share/pry/pry_history + when ~/.pry_history exists + returns ~/.pry_history + when $XDG_DATA_HOME is defined + returns config location relative to $XDG_DATA_HOME + returns config location relative to $XDG_DATA_HOME when ~/.pryrc exists + expanding the history file path + recognizes ~ (#1262) + #push + does not record duplicated lines + does not record empty lines + does not record lines that contain a NULL byte + #clear + clears this session's history + doesn't affect the contents of the history file + .load_history + reads the contents of the file + file io errors + handles Errno::EACCES failure to read from history + handles Errno::ENOENT failure to write history + handles Errno::ENOENT failure to read from history + handles Errno::EACCES failure to write history + #history_line_count + counts entries in history Pry - default print - should include the => - should not be phased by un-inspectable things - should output the right thing - doesn't leak colour for object literals + color + should not colorize strings that already include color + should colorize strings as though they were ruby + output_prefix + should be able to change output_prefix output suppression + should not output something if the input is only a comment should output something if the input ends with a comment should not output anything if the input ends with a semicolon - should not output something if the input is only a comment should normally output the result custom non-IO object as $stdout does not crash pry + default print + should not be phased by un-inspectable things + doesn't leak colour for object literals + should include the => + should output the right thing output failsafe + should catch serialization exceptions should catch errors serializing exceptions should display serialization exceptions - should catch serialization exceptions - output_prefix - should be able to change output_prefix - color - should colorize strings as though they were ruby - should not colorize strings that already include color -Pry::Command::ShellCommand - cd - .cd - saves the current working directory - with CDPATH - when it is defined - complex cdpath - cd's into the dir - simple cdpath - cd's into the dir - given an empty string - sends ~ to File.expand_path - given a dash - given a prior directory - sends the user's last pry working directory to File.expand_path - given no prior directory - raises the correct error - given a path - sends the path to File.expand_path +Pry::CommandState + .default + returns the default command state + when called multiple times + returns the same command state + #reset + resets the command state for the given command + doesn't reset command state for other commands + #state_for + returns a state for the matching command + memoizes state for the same command + returns new state for new command -Formatting Table - knows about colorized fitting - decide between one-line or indented output - formatting - should order downward and wrap to columns - should handle empty input - should handle the basic case - should handle colors - should handle... another basic case - should handle a tiny case - should handle one-token input - line length is smaller than the length of the longest word - should format output as one column - should not raise error +test Pry defaults + should set the print default, and the default should be overridable + should set the hooks default, and the default should be overridable + should set the output default, and the default should be overridable + view_clip used for displaying an object in a truncated format + given an object with an #inspect string as long as the maximum specified + returns the #<> format of the object (never use inspect) + the list of prompt safe objects + returns the #inspect of the special-cased immediate object: test + returns #<> format of the special-cased immediate object if #inspect is longer than maximum + returns the #inspect of the custom prompt safe objects + returns the #inspect of the special-cased immediate object: 1 + returns the #inspect of the special-cased immediate object: 2.0 + returns the #inspect of the special-cased immediate object: hello + returns the #inspect of the special-cased immediate object: -5 + given an object with an #inspect string + returns the #<> format of the object (never use inspect) + given the 'main' object + returns the #to_s of main (special case) + given a regular object with an #inspect string longer than the maximum specified + when the object is a regular one + returns a string of the # format + when the object is a Class or a Module + with a #name longer than the maximum specified + returns a string of the # format + with a #name shorter than or equal to the maximum specified + returns a string of the # format + without a name (usually a c = Class.new) + returns a string of the # format + pry return values + should return the parameter (function call) given to exit-all + should return the parameter given to exit-all + should return the parameter (self) given to exit-all + should return nil + should return the parameter (multi word string) given to exit-all + toplevel_binding + should have self the same as TOPLEVEL_BINDING + should be devoid of local variables + should define private methods on Object + input + should set the input default, and the default should be overridable + should not pass in the prompt if the arity is -1 + should not pass in the prompt if the arity is 0 + should pass in the prompt if readline arity is 1 + quiet + should hide whereami if quiet is set + should show whereami by default + prompts + sets the prompt default, and the default should be overridable (multi prompt) + sets the prompt default, and the default should be overridable (single prompt) + storing and restoring the prompt + should restore overridden prompts when returning from shell-mode + should not pop the last prompt + #pop_prompt should return the popped prompt + should have a prompt stack + #prompt= should replace the current prompt with the new prompt + when only one prompt on the stack + when several prompts on the stack + +Pry::Config::MemoizedValue + #call + doesn't conflate falsiness with unmemoizedness + memoizes the result of call + +save-file + -i + should display a success message on save + should save input expressions to a file (range) + should save input expressions to a file (single expression) + should save multi-ranged input expressions + overwrite by default (no --append) + should overwrite specified file with new input + -f + should save a file to a file + saving commands + should save a command to a file + saving methods + single method + should save a method to a file + should display a success message on save + should save a method to a file truncated by --lines + --append + should append to end of specified file + +Pry.run_command + can perform a show-source + performs a simple ls + +Pry::CommandSet + #block_command + assings default description + defines a new command + configures command options + can overwrite default description + when description is a hash + treats description as options + #process_line + when the given line is a command + returns a non-void command + returns a command + and context is provided + passes the context to the command + when the given line is not a command + returns not a command + returns a void result + #desc + sets command description + gets command description + #import_from + imports matching command from a set + returns self + includes other set's helper module + #list_commands + returns the list of commands + #add_command + adds a command + #[]= + rebinds the command with key + when given command is not a subclass of Pry::Command + raises TypeError + when given command is nil + deletes the command matching the pattern + #find_command_for_help + when the command cannot be found + returns nil + when the command can be found + returns the command + #import + includes given sets' helper modules + imports commands from given sets + returns self + #valid_command? + when command can be found + returns true + when command cannot be found + returns false + #[] + when there's an ambiguous command + prefers a command with a higher score + when there's an unambiguous command + selects the command according to the given pattern + #rename_command + can optionally set custom description + renames a comamnd + when provided command is not registered + raises ArgumentError + #delete + deletes given commands + #create_command + can overwrite default description + defines a new class command + assings default description + class_evals the given block in the command context + configures command options + when description is a hash + treats description as options + #alias_command + sets aliased command's listing for string alias + sets group for the aliased command automatically + sets description for the aliased command automatically + sets aliased command's listing for regex alias + returns the aliased command + when command doesn't match + raises RuntimeError + when non-string description is provided + uses the string representation of the given object + when string description is provided + uses the given description for the aliased command + #find_command_by_match_or_listing + returns a matching by listing command + raises ArgumentError on non-matching command + returns a matching by name command + #to_hash + doesn't mutate original commands + converts commands to hash + #each + iterates over commands + #new + merges other set with itself + when block given + instance evals the block + +help + should display help for all commands with a description + should display help for a specific command + should sort the output of the 'help' command + should display help for a command with a spaces in its name + should display help for a regex command with a "listing" Pry::Config::Value #call - when given value is a Proc + when given value is a MemoizedValue + calls the MemoizedLazy object + when given value is a non-callable object returns the value as is when given value is a LazyValue calls the LazyValue object - when given value is a non-callable object + when given value is a Proc returns the value as is - when given value is a MemoizedValue - calls the MemoizedLazy object -reload_code - reload_current_file - raises an error when class not found - raises an error source code not found - reloads pry commmand - raises an error when pry command not found +Sticky locals (_file_ and friends) + locals should return last result (_) + locals should keep value after cd-ing (pry_instance) + locals should return second last result (__) + locals should still exist after cd-ing into a new context + locals should all exist upon initialization + locals should keep value after cd-ing (_file_ and _dir_) + _ex_ + keeps its value after cd-ing + returns the last exception without wrapping it in a LastException + User defined sticky locals + should still exist after cd-ing into new binding + should provide different values for successive block invocations + should create a new sticky local + setting as Pry.config option + should define a new sticky local for the session (normal value) + should define a new sticky local for the session (proc) + hash option value should override config value + should define a new sticky local for the session (normal value) + passing in as hash option when creating pry instance + should define multiple sticky locals + should define a new sticky local for the session (as Proc) + should define a new sticky local for the session (normal value) + +Pry + #last_exception= + returns an object who mirrors itself as the wrapped exception + returns an instance of Pry::LastException + returns a frozen exception + DISABLE_PRY + should not binding.pry + should not Pry.start + setting custom options + correctly handles the :quiet option (#1261) + does not raise for unrecognized options + .configure + yields a block with Pry.config as its argument + Pry.critical_section + should prevent Pry being called + a fresh instance + should use `caller` as its backtrace + Pry.binding_for + Should not error when object doesn't have a valid == method + should not leak local variables + should work on frozen objects + open a Pry session on an object + rep + should suppress output if input ends in a ";" and is an Exception object (single line) + should be able to evaluate exceptions normally + should make self evaluate to the receiver of the rep session + should not leak pry constants into Object namespace + should suppress output if input ends in a ";" (single line) + should not try to catch intended exceptions + should set an ivar on an object + should display error if Pry instance runs out of input + should notice when exceptions are raised + should define a nested class under Hello and not on top-level or Pry + should be able to operate inside the BasicObject class + multi-line input + should suppress output if input ends in a ";" (multi-line) + works + newline stripping from an empty string + with fancy delimiters + with single quotes + with double quotes + newline stripping from an empty regexp + with fancy delimiters + with regular regexp delimiters + newline from an empty heredoc + works + repl + Pry.binding_for + should return TOPLEVEL_BINDING if parameter self is main + basic functionality + should set an ivar on an object and exit the repl + defining methods + defines an instance method on the module when performing "def meth;end" inside the module + defines a method on the singleton class of an object when performing "def meth;end" inside the object + defines an instance method on the class when performing "def meth;end" inside the class + defines a method on the class of an object when performing "def meth;end" inside an immediate value or Numeric + complete_expression? + should not mutate the input! + last_result + should be set to the most recent value + should be preserved over an empty line + should be set to the result of a command with :keep_retval + should be preserved when evalling a command without :keep_retval + Object#pry + should start a pry session on the receiver (second form) + should raise if more than two arguments are passed to Object#pry + should start a pry session on the receiver (first form) + nesting + should nest properly + history arrays + sets _ to the last result + uses 100 as the size of _in_ and _out_ + sets out to an array with the result + store exceptions + can change the size of the history arrays + sets _in_ to an array with the entered lines + Exotic object support + Should not error when return value is a BasicObject instance + FAIL_PRY + should raise an error for Pry.start + should raise an error for binding.pry show-source - should find instance_methods if the class overrides instance_method - should output help + should output a method's source with line numbers + should not show the source when a non-extant method is requested should not find instance methods with self.moo + should output the source of a method defined inside Pry + should output a method's source with line numbers starting at 1 should output a method's source inside method using the -l switch should not find normal methods with self#moo - should not show the source when a non-extant method is requested - doesn't show the source and deliver an error message without exclamation point + should find instance methods if no normal methods available + should output source for a repl method defined using define_method should find normal methods (i.e non-instance methods) by default - should output a method's source should find methods even if there are spaces in the arguments - should find normal methods with self.moo - should output a method's source with line numbers starting at 1 - should output a method's source if inside method and no name given - should raise a CommandError when super method doesn't exist - should output source for a repl method defined using define_method - should output the source of a method defined inside Pry + should output help should find methods even if the object overrides method method + doesn't show the source and deliver an error message without exclamation point should find instance methods with self#moo - should output a method's source with line numbers + should find instance_methods if the class overrides instance_method + should find normal methods with self.moo + should output a method's source if inside method and no name given should output the source of a command defined inside Pry + should raise a CommandError when super method doesn't exist + should output a method's source should output source for an instance method defined inside pry - should find instance methods if no normal methods available can't find class/module code for classes shows correct warning when reverting to nth level superclass shows warning when reverting to superclass code + ignores included modules errors when class has no superclass to show - shows nth level superclass code (when no intermediary superclasses have code either) shows superclass code - ignores included modules + shows nth level superclass code (when no intermediary superclasses have code either) for modules - shows nth level included module code (when no intermediary modules have code either) errors when module has no included module to show + shows correct warning when reverting to nth level included module + shows nth level included module code (when no intermediary modules have code either) shows warning when reverting to included module code shows included module code - shows correct warning when reverting to nth level included module - on sourcable objects - should output source for procs/lambdas stored in constants - should output source defined inside pry - should output source for procs/lambdas stored in variables - should output source for method objects - on variables that shadow methods - source of method being shadowed should take precedence over variable - if given self.meth_name syntax - source of variable takes precedence over method that is being shadowed + when there's no source code but the comment exists + outputs zero line numbers show-source --doc - when given a 'broken' module - skips over the module - when the Const = Module.new syntax is used - shows documentation for the module - when the current context is a non-nested class - shows docs for the nested classes + when given a module with a doc + shows documentation for the code object along with source code + when the current context is a method + outputs the method without needing to use its name + when both the base mod and the included module have no docs + raises Pry::CommandError + when given a class with a doc + shows documentation for the code object along with source code when given a method with a doc finds the method's documentation the --all switch behavior - when there are monkeypatches in different files - shows them - when --all is not used and there's only 1 candidate for the class - doesn't mention anything about monkeypatches when --all is not used but there are multiple monkeypatches - mentions available monkeypatches - correctly displays the number of monkeypatches displays the original definition first - when given a proc - should show documentation for object - when no class/module arg is given - returns the doc for the current module - when given a class defined in a REPL session - shows documentation for the class + correctly displays the number of monkeypatches + mentions available monkeypatches + when --all is not used and there's only 1 candidate for the class + doesn't mention anything about monkeypatches + when there are monkeypatches in different files + shows them + when the Const = Module.new syntax is used + shows documentation for the module + when included module has docs and there are intermediary docless modules + shows nth level included module doc + shows a warning about module reversion + when the --base-one switch is provided + outputs a method's docs with line numbering starting at 1 + when provided a class without docs that has nth superclass with docs + shows a warning about superclass reversion + shows the docs of the superclass + when the current context is a non-nested class + shows docs for the nested classes when the Const = Class.new syntax is used shows documentation for the class - when the module with docs was included in another module - shows the included module's doc - shows a warning about the included module reversion + when no docs can be found for the given class + raises Pry::CommandError + when given a proc + should show documentation for object code highlighting when there's inline code in the docs highlights the code @@ -2271,153 +2848,343 @@ highlights the code when there's inline code with backticks the docs doesn't highlight the backticks + when the --line-numbers switch is provided + outputs a method's docs with line numbers when provided a class without docs that has a superclass with docs shows the docs of the superclass shows a warning about superclass reversion + when the module with docs was included in another module + shows the included module's doc + shows a warning about the included module reversion when given a nested class shows docs for the nested classes - when the --line-numbers switch is provided - outputs a method's docs with line numbers - when given a class with a doc - shows documentation for the code object along with source code - when no docs can be found for the given class + when given a 'broken' module + skips over the module + when no docs can be found for the given method raises Pry::CommandError - when the current context is a method - outputs the method without needing to use its name + should set _file_ and _dir_ + sets _file_ and _dir_ to file containing method source + when given a class defined in a REPL session + shows documentation for the class when the --super switch is provided - and when it's passed once - finds the super method docs and when it's passed twice finds the parent method docs - and when the explicit argument is not provided - finds super method docs with multiple `--super` switches - finds super method docs without explicit method argument and when the super method doesn't exist raises Pry::CommandError and when it's passed thrice finds the grandparent method docs - when provided a class without docs that has nth superclass with docs - shows a warning about superclass reversion - shows the docs of the superclass - when #call is defined on Symbol - still finds documentation - when included module has docs and there are intermediary docless modules - shows a warning about module reversion - shows nth level included module doc - when the --base-one switch is provided - outputs a method's docs with line numbering starting at 1 - when no docs can be found for the given method - raises Pry::CommandError - when both the base mod and the included module have no docs - raises Pry::CommandError + and when it's passed once + finds the super method docs + and when the explicit argument is not provided + finds super method docs with multiple `--super` switches + finds super method docs without explicit method argument + when no class/module arg is given + returns the doc for the current module when provided a class without docs that has a superclass without docs raises Pry::CommandError - should set _file_ and _dir_ - sets _file_ and _dir_ to file containing method source - when given a module with a doc - shows documentation for the code object along with source code when used against a command + displays help for a regex command with a "listing" displays help for a specific command displays help for a command with a spaces in its name - displays help for a regex command with a "listing" class commands - when looking up by command name - displays help when class is used (rather than command name) is used for lookup displays actual preceding comment for a class command + when looking up by command name + displays help + when #call is defined on Symbol + still finds documentation + on variable or constant + outputs source of its class if variable doesn't respond to source_location + outputs source of its class if constant doesn't respond to source_location + finding super methods with help of `--super` switch + finds super methods with multiple --super + finds super methods without explicit method argument + finds super methods with explicit method argument + on commands + create_command commands + should show source for a command defined inside pry + should show source for a command + real class-based commands + should show source for a command + should show source for a command defined inside pry + block commands + should show source for an ordinary command + should show source for a command by listing name + should show source for a command with spaces in its name + should output source of commands using special characters on modules - should lookup module name with respect to current context should lookup nested modules - when show-source is invoked without a method or class argument - inside a module - displays method code (rather than class) if Pry started inside method binding - should display module source by default - should allow options to be passed - should display class source when inside instance - should be unable to find module source if no methods defined - should skip over broken modules - should return source for first valid module - monkey-patched C modules - when current context is a C object - should display a warning, and not monkey-patched definition - recommends to use the --all switch when other candidates are found - when current context is something other than a C object - should display a candidate, not a warning - in REPL - should find class defined in repl - should find superclass defined in repl + should lookup module name with respect to current context basic functionality, should find top-level module definitions - should show source for a module when Const = Module.new syntax is used + should show source for a super class when Const = Class.new syntax is used + should show source for a module should show source for an ancestor module + should show source for a class when Const = Class.new syntax is used should show source for a class should show source for a super class - should show source for a super class when Const = Class.new syntax is used - should show source for a class when Const = Class.new syntax is used - should show source for a module + should show source for a module when Const = Module.new syntax is used show-source -a + when there are instance-eval monkeypatches in different files + shows the source for all monkeypatches + when there are class method monkeypatches in different files + shows the source for all monkeypatches when -a is not used and there's only one candidate for the class doesn't mention anything about monkeypatches + when there are instance method monkeypatches in different files + shows the source for all monkeypatches when -a is not used and there are multiple monkeypatches mentions available monkeypatches when there are class-eval monkeypatches in different files - shows the source for all monkeypatches ignores -a because object is not a module - when there are instance method monkeypatches in different files - shows the source for all monkeypatches - when there are instance-eval monkeypatches in different files - shows the source for all monkeypatches - when there are class method monkeypatches in different files shows the source for all monkeypatches - should set _file_ and _dir_ - should set _file_ and _dir_ to file containing method source + in REPL + should find class defined in repl + should find superclass defined in repl + when show-source is invoked without a method or class argument + inside a module + should be unable to find module source if no methods defined + displays method code (rather than class) if Pry started inside method binding + should display module source by default + should display class source when inside instance + should allow options to be passed + should skip over broken modules + should return source for first valid module + monkey-patched C modules + when current context is something other than a C object + should display a candidate, not a warning + when current context is a C object + recommends to use the --all switch when other candidates are found + should display a warning, and not monkey-patched definition with -e option shows the source code for the returned value as Ruby - on variable or constant - outputs source of its class if variable doesn't respond to source_location - outputs source of its class if constant doesn't respond to source_location - on commands - create_command commands - should show source for a command - should show source for a command defined inside pry - real class-based commands - should show source for a command defined inside pry - should show source for a command - block commands - should show source for an ordinary command - should show source for a command by listing name - should show source for a command with spaces in its name - should output source of commands using special characters - finding super methods with help of `--super` switch - finds super methods without explicit method argument - finds super methods with explicit method argument - finds super methods with multiple --super - when there's no source code but the comment exists - outputs zero line numbers + on sourcable objects + should output source for procs/lambdas stored in variables + should output source defined inside pry + should output source for method objects + should output source for procs/lambdas stored in constants + on variables that shadow methods + source of variable takes precedence over method that is being shadowed + source of method being shadowed should take precedence over variable + if given self.meth_name syntax + should set _file_ and _dir_ + should set _file_ and _dir_ to file containing method source -Pry::ControlDHandler - when given eval string is empty & pry instance has 2+ bindings - saves a dup of the current binding stack in the 'cd' command - pops the binding off the stack - when given eval string is non-empty - clears input buffer - when given eval string is empty & pry instance has one binding - throws :breakout - clears binding stack +Pry::WrappedModule + candidates + number_of_candidates + should return 0 candidates for a class with no nested modules or methods + should return the correct number of candidates + should return 1 candidate for a class with a nested module with methods + doc + should return primary candidates doc by default + should return doc for highest ranked candidate + should return doc for third ranked candidate + should return doc for second ranked candidate + should return docs for deeply nested class + source + should return source for highest ranked candidate + should return primary candidates source by default + should return source for deeply nested class + should return source for second ranked candidate + should return source for third ranked candidate + source_location + returns the location of the outer module if an inner module has methods + should return primary candidates source_location by default + should return nil if no source_location can be found + ordering of candidates + should raise when trying to access non-existent candidate + should return class with largest number of methods as primary candidate + returns class with second largest number of methods as second ranked candidate + returns class with third largest number of methods as third ranked candidate + .super + receiver is a class + should return self when .super(0) is used + should ignore modules when retrieving nth superclass + should return superclass for a wrapped class + should return nil when no nth superclass exists + should return nth superclass for a wrapped class + receiver is a module + should retrieve nth super + should not ignore modules when retrieving supers + should return self when .super(0) is used + .singleton_instance + should return the attached object + should raise an exception when called on a non-singleton-class + #initialize + should raise an exception when a non-module is passed + .from_str + should lookup an ivar + should lookup a constant + should lookup a local + .method_prefix + should return Foo. for singleton classes of classes + should return Foo# for normal classes + should return Bar# for modules + of singleton classes of objects + of anonymous classes should not be empty + of singleton classes of anonymous classes should not be empty + .singleton_class? + should be false for modules + should be true for singleton classes + should be false for normal classes + +Readline + is not loaded on requiring 'pry' + is loaded on invoking 'pry' + is not loaded on invoking 'pry' if Pry.input is set + +reload_code + reload_current_file + raises an error when class not found + reloads pry commmand + raises an error when pry command not found + raises an error source code not found + +Pry::Output + #tty? + when the output responds to #tty? and is a TTY + returns true + when the output doesn't respond to #tty? + returns false + when the output responds to #tty? and is not a TTY + returns false + #size + when the output is not a tty, and no info in ENV and no Readline info + and when there's ANSICON ENV variable + and when it can be matched + and when the size has a zero column + returns the default winsize + and when the size consists of positive integers + returns the ansicon winsize + and when it cannot be matched + returns the default winsize + and when there's no ANSICON ENV variable + returns the default winsize + when the output is a tty and responds to winsize + returns the io/console winsize + when the output is not a tty and no info in ENV + when Readline's size has no zeroes + returns the Readline winsize + when Readline's size has zero column + returns the default size + when the output is not a tty + and ENV has size info in ROWS and COLUMNS + returns the ENV variable winsize + and ENV has size info in LINES and COLUMNS + returns ENV variable winsize + #respond_to_missing? + when the output doesn't respond to the given method name + doesn't find the method + when the output responds to the given method name + finds the method that is not defined on self + #puts + returns nil + when given convertible to array objects + prints the converted objects + when given multiple empty arrays + prints multiple newline + when the given pry instance has 'color' disabled + decolorizes output + when given an empty array + prints a newline + when the given pry instance has 'color' enabled + doesn't decolorize output + when given non-convertible to array objects + prints the non-converted objects in its string form + and when the object's #to_s has a newline + doesn't print a double newline + #<< + is expected to eq # + #decolorize_maybe + when the given pry instance has 'color' disabled + returns decolorized string + when the given pry instance has 'color' enabled + returns the given string without modifications + #method_missing + when the output responds to the given method name + forwards the method to the output + when the output doesn't respond to the given method name + raises NoMethodError + #width + returns the number of columns + #write + is expected to eq # + #height + returns the number of rows + #print + returns nil + when the given pry instance has 'color' disabled + decolorizes output + when the given pry instance has 'color' enabled + doesn't decolorize output + +pry_backtrace + should print a backtrace + +show-doc + shows docs + emits a deprecation warning + +Pry.config.unrescued_exceptions + should NOT rescue exceptions specified on unrescued_exceptions + should rescue all exceptions NOT specified on unrescued_exceptions + +Pry::Pager + PageTracker + records a string with an embedded newline + doesn't count ansi color codes towards length + doesn't count a line until it ends + treats a long line as taking up more than one row + records short lines that don't add up to a page + records short lines that do add up to a page + +Pry::Env + #[] + when ENV contains the passed key + is expected to eq "val" + when ENV contains the passed key but its value is nil + is expected to be nil + when ENV doesn't contain the passed key + is expected to be nil + +Pry::Config::Attributable + #attribute + creates a reader attribute for the given name + creates a writer attribute for the given name + and when the attribute is invoked + sends the 'call' message to the value + +Pry::Method::Patcher + should return a new method with new source + should change the source of new Pry::Method objects + should preserve visibility + should change the behaviour of the method Pry::Command - #process_line - sets arg_string - sets captures - collision warnings - when collision warnings are configured - prints a warning when there's a collision - when collision warnings are not set - prints a warning when there's a collision - .convert_to_regex - when given object is a String - escapes the string as a Regexp - when given object is an Object - returns the given object + .command_regex + when use_prefix is false + returns a Regexp with a prefix + when use_prefix is true + returns a Regexp without a prefix + .name + returns the name of the command + when super command name exists + returns the name of the parent command + #tokenize + when command regex has captures + returns the captures + when given string doesn't match a command + raises CommandError + when shellwords is enabled + strips quotes from the arguments + when shellwords is disabled + doesn't split quotes from the arguments + when target is not set + still returns tokens + when given string uses interpolation + interpolates the string in the target's context + and when interpolation is disabled + doesn't interpolate the string .match_score when command regex doesn't match given value returns -1 @@ -2426,1017 +3193,293 @@ returns the length of the last match and when the size of last match is more than 1 returns the length of the first match - .block - when block doesn't exist - uses #process method - when block exists - returns the block - #commands - returns command set as a hash - .command_name - returns listing - .banner - when given an argument - merges the argument with command options - when no argument is given - and when banner was not defined previously - return nil - and when banner was defined previously - returns the memoized banner - .command_regex - when use_prefix is false - returns a Regexp with a prefix - when use_prefix is true - returns a Regexp without a prefix - .group - when source file matches 'pryrc' - sets group name to pryrc - when source file matches a pry plugin - sets group name to plugin name - when source file matches a pry command - sets group name to command name - when source file doesn't match anything - returns '(other)' - when name is given - sets group to that name - #interpolate_string - when given string contains #{ - returns the result of eval within target - when given string doesn't contain #{ - returns the given string - .matches? - when given value doesn't match command regex - returns false - when given value matches command regex - returns true - .default_options - when given an Object argument - returns default options with object's inspect as listing - when given a String argument - returns default options with string listing - #state - remembers the state - returns a state object - .command_options - when given an argument - merges the argument with command options - when no argument is given - and when command options were not defined previously - sets command options to default options - and when command options were defined previously - returns memoized command options .match when given an argument - and when match is a string - sets command options with listing as match and when match is an object sets command options with listing as object's inspect + and when match is a string + sets command options with listing as match when no argument is given - and when match was defined previously - doesn't overwrite match and when match was not defined previously sets match to nil - .doc - returns help output - .source_file - returns source file + and when match was defined previously + doesn't overwrite match + .convert_to_regex + when given object is a String + escapes the string as a Regexp + when given object is an Object + returns the given object + .matches? + when given value doesn't match command regex + returns false + when given value matches command regex + returns true .description - when given an argument - sets description - and when description was not defined previously - sets description to nil and when description was defined previously doesn't overwrite match - .source - returns source code of the method + and when description was not defined previously + sets description to nil + when given an argument + sets description + #run + runs a command from another command + .subclass + returns a new class + includes helpers to the new class + sets description on the new class + sets block on the new class + sets match on the new class + sets command options on the new class #void returns void value #complete returns empty array + .command_options + when given an argument + merges the argument with command options + when no argument is given + and when command options were defined previously + returns memoized command options + and when command options were not defined previously + sets command options to default options #target_self returns the value of self inside the target binding + .source + returns source code of the method + .default_options + when given a String argument + returns default options with string listing + when given an Object argument + returns default options with object's inspect as listing + .group + when source file doesn't match anything + returns '(other)' + when source file matches 'pryrc' + sets group name to pryrc + when source file matches a pry command + sets group name to command name + when source file matches a pry plugin + sets group name to plugin name + when name is given + sets group to that name + #commands + returns command set as a hash + .command_name + returns listing + .source_file + returns source file + .source_line + returns source line + .banner + when given an argument + merges the argument with command options + when no argument is given + and when banner was defined previously + returns the memoized banner + and when banner was not defined previously + return nil + .block + when block doesn't exist + uses #process method + when block exists + returns the block + #state + returns a state object + remembers the state #check_for_command_collision - when a command doesn't collide - doesn't display a warning when a command collides with a method displays a warning + when a command doesn't collide + doesn't display a warning when a command collides with a local variable displays a warning - .subclass - sets command options on the new class - returns a new class - includes helpers to the new class - sets block on the new class - sets match on the new class - sets description on the new class - #run - runs a command from another command - .source_line - returns source line - .inspect - returns command name + #process_line + sets captures + sets arg_string + collision warnings + when collision warnings are configured + prints a warning when there's a collision + when collision warnings are not set + prints a warning when there's a collision .state returns a command state - #tokenize - when target is not set - still returns tokens - when command regex has captures - returns the captures - when shellwords is enabled - strips quotes from the arguments - when shellwords is disabled - doesn't split quotes from the arguments - when given string doesn't match a command - raises CommandError - when given string uses interpolation - interpolates the string in the target's context - and when interpolation is disabled - doesn't interpolate the string - .name - returns the name of the command - when super command name exists - returns the name of the parent command - -Pry::Method - should use String names for compatibility - #owner - when it is overriden in Object - correctly reports the owner - super - should be able to find super methods defined on super-classes when there are modules in the way - should be able to find the super method of an unbound method - jumps up multiple levels of bound method, even through modules - should return nil if no super method exists - should be able to find the super method on a bound method - should be able to find super methods defined on modules - .signature - should print the name of regular args - should print the name of block args, with an & label - should print the name of additional args, with an * label - should print the name of keyword args, with :? after the arg name - should print the name of keyword args, with : after the arg name - should print the name of optional args, with =? after the arg name - .from_str - should look up methods if :methods option provided - should NOT look up methods using the object.method syntax if no methods defined - should look up methods using the object.method syntax - looks up instance methods if no methods available and no options provided - should NOT look up instance methods using the Class#method syntax if no instance methods defined - should look up methods using klass.new.method syntax - should take care of corner cases like mongo[] e.g Foo::Bar.new[]- issue 998 - should look up methods using instance::bar syntax - should take care of cases like $ mongo[] - issue 998 - should look up instance methods using the Class#method syntax - looks up methods if no instance methods available and no options provided - should look up instance methods using klass.meth#method syntax - looks up instance methods first even if methods available and no options provided - should not raise an exception if receiver does not exist - should look up instance methods if "instance-methods" option provided - method aliases - should not include the own name in the list of aliases - should return an empty Array if cannot find aliases - should find aliases for top-level methods - should be able to find aliases for methods implemented in C - should be able to find method aliases - .from_binding - should find the super method correctly - should find the right method if a super method exists - should find methods that have been undef'd - should be able to pick a method out of a binding - should find the right method from a BasicObject - should NOT find a method from the toplevel binding - should find the right method even if it was renamed and replaced - #parameters - when it is overriden in Object - correctly reports the parameters - all_from_class - should find methods all the way up to Kernel - finds instance methods defined in modules included into super-classes - should be able to find methods defined on a singleton class - finds private and protected instance methods defined in a class - should be able to find public instance methods defined in a class - should attribute overridden methods to the sub-class - should be able to find instance methods defined in a super-class - should be able to find methods on super-classes when given a singleton class - finds instance methods defined in modules included into this class - method_name_from_first_line - should work in all simple cases - #receiver - when it is overriden in Object - correctly reports the receiver - all_from_obj - method resolution order - should include modules at most once - should include modules at the point which they would be reached - should not include modules extended into the class - should include the included modules between a class and its superclass - should not include singleton classes of numbers - includes the Pry::Method.instance_resolution_order of Class after the singleton classes - should include modules included into singleton classes - should include included modules for Modules - should include the singleton class of objects - should look at a class and then its superclass - should include singleton classes for classes - on normal objects - should find methods all the way up to Kernel - should find methods defined in the object's class - should not find methods defined on the classes singleton class - should find methods defined in modules included into the object's class - should find methods in modules included into the object's singleton class - should find methods defined in the object's singleton class - should work in the face of an overridden send - on classes - should find methods defined on Kernel - should find methods defined in the class' singleton class - should find methods defined on Class - should attribute overridden methods to the sub-class' singleton class - should attrbute overridden methods to the class not the module - attributes overridden methods to the relevant singleton class in preference to Class - should not find methods defined within the class - should find methods defined on modules extended into the class - should find methods defined on the singleton class of super-classes - -Pry::Editor - invoke_editor with a proc - should not shell-escape files - build_editor_invocation_string on windows - should not shell-escape files - build_editor_invocation_string - should shell-escape files (PENDING: No reason given) - .default - when $VISUAL is defined - returns the value of $VISUAL - when platform is Windows - returns 'notepad' - when $EDITOR is defined - returns the value of $EDITOR - when no editor is detected - shells out to find 'nano' - shells out to find 'vi' - shells out to find 'editor' + #interpolate_string + when given string contains #{ + returns the result of eval within target + when given string doesn't contain #{ + returns the given string + .doc + returns help output + .inspect + returns command name -Pry::CLI - .parse_options - when argv is passed with a double dash (--) - sets everything after the double dash as input args - when option doesn't exist - raises error - when multiple options exist - processes only called options - when invalid option is provided - exits program - when argv is passed with a dash (-) - sets everything after the dash as input args - when option exists - finalizes session setup - removes the existing option from ARGV - initializes session setup - .add_options - returns self - when options is nil and a block is provided - sets the block as options - when options were previously set - overwrites the options proc that executes the provided block - overwrites the options proc that executes original options - .add_plugin_options - loads cli options of plugins - returns self - .start - sets Pry.cli to true - when there are some input args - loads files through repl and exits - when the context option is not provided - starts Pry in the top level - when the context option is provided - starts Pry in the provided context - finalizes session setup - initializes session setup - when the help option is provided - exits - when 'pry' is passed as an input arg - does not load files through repl - .add_option_processor - adds an option processor - returns self +find-method + should work with badly behaved constants + should escape regexes correctly + find matching methods by name regex (-n option) + should NOT match a method that does not match the regex + should find a method by regex + find matching methods by content regex (-c option) + should find a method by regex + should NOT match a method that does not match the regex -Pry::Command::Wtf - #process - when given a nested exception - and when the verbose flag present - prints both original and nested exception backtrace - and when the verbose flag is missing - prints parts of both original and nested exception backtrace - when captures contains exclamations (wtf?! invocation) - prints more of backtrace - when there wasn't an exception raised - raises Pry::CommandError - when the verbose flag is present - prints full exception backtrace - when the code flag is present - prints lines of code that exception frame references - and when referenced frame doesn't exist - skips code and prints only the backtrace frame - when the verbose flag is missing - prints only a part of the exception backtrace +Pry::Command::Cat::FileFormatter + #format + formats given files with line number + formats given files + #file_and_line + parses relative path with line_num + parses relative path without line_num + windows filesystem + parses '\'style absolute path with line_num + parses '/'style absolute path with line_num + parses '\'style absolute path without line_num + parses '/'style absolute path without line_num + UNIX-like filesystem + parses absolute path with line_num + parses absolute path without line_num -Sticky locals (_file_ and friends) - locals should keep value after cd-ing (_file_ and _dir_) - locals should return last result (_) - locals should return second last result (__) - locals should keep value after cd-ing (pry_instance) - locals should all exist upon initialization - locals should still exist after cd-ing into a new context - _ex_ - returns the last exception without wrapping it in a LastException - keeps its value after cd-ing - User defined sticky locals - should still exist after cd-ing into new binding - should create a new sticky local - should provide different values for successive block invocations - setting as Pry.config option - should define a new sticky local for the session (proc) - should define a new sticky local for the session (normal value) - hash option value should override config value - should define a new sticky local for the session (normal value) - passing in as hash option when creating pry instance - should define a new sticky local for the session (normal value) - should define a new sticky local for the session (as Proc) - should define multiple sticky locals +Pry::CodeObject + .lookup + when looking up empty string while being inside a class instance + infers the module + when looking up method + finds methods defined on objects + when looking up Pry commands by listing + finds Pry::WrappedModule + when looking up instance methods of a class + finds instance methods + when looking up commands with the super option + finds the command ignoring the super option + when looking up 'nil' while being inside a module + infers the module + when looking up classes with 'super: 1' + finds the parent class + when looking up class methods of a named class + finds instance methods via the # notation + when there is a class and a method who is a namesake + finds the class before the method when it's namespaced + finds the method when the look up ends with () + finds the class before the method + when looking up empty string while being inside a module + infers the module + when looking up instance methods + finds instance methods via the . notation + finds instance methods via the # notation + when looking up 'nil' while being inside a class instance + infers the module + when looking up classes with 'super: 0' + finds the child class + when looking up anonymous class methods + finds instance methods via the # notation + when looking up classes + finds classes + when looking up Pry::BlockCommand + finds Pry:BlockCommand + when looking up procs + finds classes + when looking up 'nil' + returns nil + when looking up Pry::ClassCommand + finds Pry:BlockCommand + when looking up modules + finds modules + when looking up classes by names of variables + finds instance methods via the # notation + when looking up Pry commands by class + finds Pry::WrappedModule + when looking up 'nil' while being inside a method + infers the method + when looking up empty string while being inside a method + infers the method clear-screen calls the "cls" command on Windows calls the "clear" command on non-Windows platforms -Pry::InputCompleter - completes expressions with all available methods - should complete for target symbols - should take parenthesis and other characters into account for symbols - should complete for arbitrary scopes - should complete for stdlib symbols - should complete for stdlib symbols - should complete instance variables - should not return nil in its output - ignores methods from modules that override Object#hash incompatibly - should not crash if there's a Module that has a symbolic name. (PENDING: No reason given) - does not offer methods from restricted modules - should complete for arbitrary scopes - should complete for target symbols - -edit - with --in - should edit a multi-line expression as it occupies one line of _in_ - should edit a range of lines if a range is given - should edit the last line if no argument is given - should not work with nonsense - should not work with a filename - should edit the nth line of _in_ - with FILE - should not delete the file! - should not allow patching any known kind of file - should invoke Pry.config.editor with absolutified filenames - should guess the line number from a colon - works with files that contain blanks in their names - should work with require relative - should use the line number from -l - - should not reload the file if it is not a ruby file - should reload the file if it is a ruby file - should not reload a ruby file if -n is given - should reload a non-ruby file if -r is given - - should pass the editor a reloading arg - with --ex - with a real file - should reload the file - should not reload the file if -n is passed - edits the exception even when in a patched method context - with --patch - should apply changes only in memory (monkey patching) - with --ex NUM - should display error message when backtrace level is invalid - should start editor on first level of backtrace with --ex 0 - should start editor on third level of backtrace with --ex 2 - should start editor on second level of backtrace with --ex 1 - should start on first level of backtrace with just --ex - pretty error messages - should display a nice error message when cannot open a file - old edit-method tests now migrated to edit - on a method defined in a file - on an aliased method - should change the alias, but not the original, without breaking super - without -p - should correctly find a class method - should correctly find an aliased method - should correctly find an instance method - should correctly find a method on an instance - should correctly find a method from a module - with -p - should successfully replace a class method - should preserve module nesting - should successfully replace an instance method - should successfully replace a method from a module - should successfully replace a method on an instance - should successfully replace a method with a question mark - monkey-patching - should work for a method with a question mark - should work for a method from a module - should work for an instance method - should work with nesting - should work for a method on an instance - should work for a class method - with three-arg editor - should pass the editor a reloading arg - --method flag - errors when a filename arg is passed with --method - should edit method context - errors when cannot find method context - when editing a method by name - uses patch editing on methods that were previously patched - can repeatedly edit methods that were defined in the console - without FILE - should use a blank file if -t is specified - should evaluate the expression - should edit the current expression if it's incomplete - should edit the previous expression if the current is empty - should ignore -n for tempfiles - should position the cursor at the end of the expression - should use a blank file if -t given, even during an expression - should not evaluate a file with -n - should write the evaluated command to history - -hist - raises CommandError when index of `--replay` points out to another `hist --replay` - should replay history correctly (single item) - should apply --head after --grep - should show lines between lines A and B with the --show switch - should store a call with `--replay` flag - should return first N lines in history with --head switch - should disallow execution of `--replay ` when CommandError raised - should start from beginning if tail number is longer than history - should show lines between offsets A and B with the --show switch - should replay a range of history correctly (range of items) - should not contain lines produced by `--replay` flag - should grep for correct lines in history - excludes Pry commands from the history with `-e` switch - should return last N lines in history with --tail switch - should replay a range of history correctly (range of commands) - should apply --tail after --grep - sessions - displays history only for current session - displays all history (including the current sesion) with `--all` switch - should not display histignore words in history - -ls - methods - should work for objects with an overridden method method - should show protected/private methods with -p - should handle classes that (pathologically) define .ancestors - should show public methods with -p - should work for objects which instance_variables returns array of symbol but there is no Symbol#downcase - should show error message when instance is given with -M option - should show public methods by default - should not show protected/private by default - BasicObject - should work on BasicObject - should work on subclasses of BasicObject - below ceiling - should stop before Object by default - should include super-classes by default - should include object if -v is given - should not include super-classes when -q is given - constants - should show constants defined on the current module - should show constants for an object's class regardless of mixins - should not autoload constants! - should not show constants defined on parent modules by default - should show constants defined on ancestors with -v - works on top-level - grep - should reduce the number of outputted things - should still output matching things - bug #1407 - behaves as usual when a method of the same name exists. - help - should show help with -h - with -l - should find locals and sort by descending size - should not list pry noise - when no arguments given - when at the top-level - should show local variables - when in a class - should show methods - should show class variables - should show constants - when in an object - should show methods - should show instance variables - on java objects - should include java-esque aliases if requested (PENDING: No reason given) - should omit java-esque aliases by default (PENDING: No reason given) - immediates - should work on Integer - when inside Modules - should behave normally when invoked on Module itself - should work for ivars - should include instance methods by default - should still work +exit + should pop a binding + should break out of the repl when binding_stack has only one binding + should break out of the repl and return user-given value + should break out of the repl even after an exception ri prints an error message without an argument -Readline - is not loaded on invoking 'pry' if Pry.input is set - is not loaded on requiring 'pry' - is loaded on invoking 'pry' - -Pry::Code - #take_lines - takes N lines from start_line - #highlighted - returns a highlighted for terminal string representation of code - #with_indentation - indents lines - #grep - when pattern is nil - returns self - when pattern is specified - returns lines matching the pattern - #select - selects lines matching a condition - returns a code object - #comment_describing - returns a comment describing expression - #raw - when code has a marker - returns an unformatted String of all lines - #after - when line number is nil - returns self - when line number is an integer - selects one line around the specified line number - and we specify how many lines to select - selects more than 1 line around - #with_marker - shows a marker in the right place - #respond_to_missing? - when a String does not respond to the given method - doesn't find the method - when a String responds to the given method - finds the method that is not defined on self - .from_module - sets code type to :ruby - reads line from a class - .from_file - raises error when file doesn't exist - reads lines from a file relative to current pwd - sets code type according to the file - reads lines from a file relative to origin pwd with '.rb' omitted - reads lines from a file on disk - reads lines from a file relative to origin pwd - when readling lines from Pry's line buffer - can specify file type manually - reads entered lines - when reading files from $LOAD_PATH - doesn't confuse files with the same name, but without an extension - finds files in a relative directory with '.rb' extension - finds files with '.rb' extensions - finds Ruby files with omitted '.rb' extension - finds files in a relative directory with '.rb' omitted - recognizes Gemfile as a Ruby file - doesn't confuse files with the same name, but with an extension - when reading lines from a file without an extension - sets code type to :unknown - #to_s - returns a string representation of code - #max_lineno_width - when there are less than 1000 lines - returns 3 - when there are less than 100 lines - returns 2 - when there are less than 10 lines - returns 1 - #== - when a code is compared with another code with identical lines - returns true - when an empty code is compared with another empty code - returns true - when a code is compared with another code with different lines - returns true - Pry::Code() - when given an Array - reads lines from the array - when given a Pry::Method - reads lines from Pry::Method - when given a Method - reads lines from bound method - when given an UnboundMethod - reads lines from unbound methods - when given a Code object - returns the passed parameter unchanged - when given a Proc - reads lines from proc - #length - returns how many lines the code object has - #around - when line number is an integer - selects one line around the specified line number - and we specify how many lines to select - selects more than 1 line around - when line number is nil - returns self - #with_line_numbers - appends line numbers to code - #method_missing - when a String does not respond to the given method - raises NoMethodError - when a String responds to the given method - forwards the method to a String instance - #before - when line number is an integer - selects one line before the specified line number - and we specify how many lines to select - selects more than 1 line before - when line number is nil - returns self - #between - when start_line is a Range - returns a range fo lines corresponding to the given Range - when only start_line is specified - removes leaves only the specified line - returns a code object - when a negative start_line is specified - returns a line from the end - when start_line is nil - returns self - when a negative end_line is specified - returns a range of lines from the end - when both start_line and end_line are specified - removes all lines that aren't in the given range - returns a code object - #reject - returns a code object - rejects lines matching a condition - #expression_at - returns a multiline expressiong starting on the given line number - #push - appends lines to the code - is an alias of #<< - #nesting_at - returns an Array of open modules - .from_method - reads lines from a method's definition - -Pry::CommandState - #reset - resets the command state for the given command - doesn't reset command state for other commands - .default - returns the default command state - when called multiple times - returns the same command state - #state_for - returns new state for new command - returns a state for the matching command - memoizes state for the same command - -Pry::REPL - should let you run commands in the middle of multiline expressions - should rescue exceptions - #piping? - returns false when $stdout is a non-IO object - autoindent - should raise no exception when indented with a tab (PENDING: Temporarily skipped with xit) - space prefix - with more than 1 space - prioritizes commands over variables - with 1 space - it prioritizes variables over commands - eval_string and binding_stack - shouldn't break if we start a nested instance - should immediately evaluate eval_string after cmd if complete - shouldn't break if we pop bindings in Ruby - shouldn't break if we start a nested REPL - -exit-program - should exit the program with the provided value - should raise SystemExit - -Pry::BlockCommand - #call - when passed a variable-length array - calls the block with some arguments - calls the block without arguments - when #process accepts some arguments - calls the block even if there are more arguments than needed - calls the block even if there's not enough arguments - when #process accepts no arguments - calls the block despite passed arguments - #help - returns help output - -Pry::Output - #width - returns the number of columns - #write - is expected to eq # - #<< - is expected to eq # - #respond_to_missing? - when the output doesn't respond to the given method name - doesn't find the method - when the output responds to the given method name - finds the method that is not defined on self - #puts - returns nil - when given non-convertible to array objects - prints the non-converted objects in its string form - and when the object's #to_s has a newline - doesn't print a double newline - when given multiple empty arrays - prints multiple newline - when the given pry instance has 'color' disabled - decolorizes output - when given convertible to array objects - prints the converted objects - when given an empty array - prints a newline - when the given pry instance has 'color' enabled - doesn't decolorize output - #height - returns the number of rows - #tty? - when the output responds to #tty? and is a TTY - returns true - when the output responds to #tty? and is not a TTY - returns false - when the output doesn't respond to #tty? - returns false - #print - returns nil - when the given pry instance has 'color' enabled - doesn't decolorize output - when the given pry instance has 'color' disabled - decolorizes output - #method_missing - when the output responds to the given method name - forwards the method to the output - when the output doesn't respond to the given method name - raises NoMethodError - #size - when the output is not a tty - and ENV has size info in LINES and COLUMNS - returns ENV variable winsize - and ENV has size info in ROWS and COLUMNS - returns the ENV variable winsize - when the output is not a tty and no info in ENV - when Readline's size has no zeroes - returns the Readline winsize - when Readline's size has zero column - returns the default size - when the output is a tty and responds to winsize - returns the io/console winsize - when the output is not a tty, and no info in ENV and no Readline info - and when there's ANSICON ENV variable - and when it can be matched - and when the size has a zero column - returns the default winsize - and when the size consists of positive integers - returns the ansicon winsize - and when it cannot be matched - returns the default winsize - and when there's no ANSICON ENV variable - returns the default winsize - #decolorize_maybe - when the given pry instance has 'color' disabled - returns decolorized string - when the given pry instance has 'color' enabled - returns the given string without modifications - -Pry::Indent - should not indent single-line rescue - should indent an array - should indent statements such as if, else, etc - should indent separate lines - should handle multiple open and closing tokens on a line - should indent a function - should properly indent nested code - should not indent single-line ifs - should indent a module and class - should indent begin rescue end - should indent a hash - should indent cunningly disguised ifs - should differentiate single/multi-line unless - should not indent single/multi-line until - should not indent inside HEREDOCs - should ident case statements - should not indent nested HEREDOCs - should correctly handle while do - should not indent single line statements - should indent correctly with nesting - should not indent inside strings - nesting - should fail to parse nesting on line 21 of example_nesting.rb - should parse nesting on line 13 of example_nesting.rb - should parse nesting on line 26 of example_nesting.rb - should parse nesting on line 15 of example_nesting.rb - should parse nesting on line 32 of example_nesting.rb - should parse nesting on line 11 of example_nesting.rb - should parse nesting on line 24 of example_nesting.rb - should parse nesting on line 9 of example_nesting.rb - should parse nesting on line 7 of example_nesting.rb - should parse nesting on line 1 of example_nesting.rb - should parse nesting on line 16 of example_nesting.rb - should parse nesting on line 2 of example_nesting.rb - should parse nesting on line 10 of example_nesting.rb - should parse nesting on line 12 of example_nesting.rb - should parse nesting on line 14 of example_nesting.rb - should parse nesting on line 8 of example_nesting.rb - should parse nesting on line 3 of example_nesting.rb - should parse nesting on line 31 of example_nesting.rb - should parse nesting on line 23 of example_nesting.rb - should parse nesting on line 4 of example_nesting.rb - should parse nesting on line 5 of example_nesting.rb - should fail to parse nesting on line 19 of example_nesting.rb - should fail to parse nesting on line 17 of example_nesting.rb - should parse nesting on line 6 of example_nesting.rb - should parse nesting on line 25 of example_nesting.rb - should fail to parse nesting on line 18 of example_nesting.rb - should fail to parse nesting on line 30 of example_nesting.rb - should parse nesting on line 33 of example_nesting.rb - should parse nesting on line 29 of example_nesting.rb - should parse nesting on line 27 of example_nesting.rb - should fail to parse nesting on line 20 of example_nesting.rb - should parse nesting on line 22 of example_nesting.rb - should parse nesting on line 28 of example_nesting.rb +watch expression + prints when an expression is mutated + continues to work if you start a second pry instance + doesn't print when an expresison remains the same + watches a local variable + prints no watched expressions + registers the after_eval hook + prints when an expression changes + watches an expression + deleting expressions + deletes delete + keeps keeper Pry - loading rc files - should never run the rc file twice - should not load the pryrc if it cannot expand ENV[HOME] - should not load the pryrc if pryrc's directory permissions do not allow this - should not run the rc file at all if Pry.config.should_load_rc is false - should not load the rc file twice if it's symlinked differently - that raise exceptions - should not raise exceptions - should output an error - should continue to run pry - -show-input - should correctly show the current lines in the input buffer - -Pry::Warning - #warn - prints message with file and line of the calling frame - -Pry::ClassCommand - .source_line - returns source file - #slop - makes Slop's banner unindented - returns a Slop instance - defines the help option - when there are subcommands - adds subcommands to Slop - when there are options - adds subcommands to Slop - #complete - generates option completions - #call - sets command's args - invokes setup - sets command's opts - when help is invoked - returns void value - outputs help info - when help is not invloved - when passed a variable-length array - calls the command with some arguments - calls the command without arguments - when #process accepts no arguments - calls the command despite passed arguments - when #process accepts some arguments - calls the command even if there are more arguments than needed - calls the command even if there's not enough arguments - .source_file - returns source file - #help - returns help output - .source - returns source code for the process method - .source_location - returns source location - .inherited - when command_options is defined - sets command_options on the subclass - when match is defined - sets match on the subclass - when description is defined - sets description on the subclass - .doc - returns source code for the process method - #process - raises CommandError - -Pry::SystemCommandHandler - .default - when doesn't exist - executes the command without printing the warning - when command exists - executes the command without printing the warning - -Pry::Helpers::CommandHelpers - #set_file_and_dir_locals - injects local variable _dir_ - sets pry instance's last_file to _file_ - injects local variable _file_ - sets pry instance's last_dir to _dir_ - #one_index_range - decrements range boundaries - #internal_binding? - when target's __method__ returns __pry__ - returns true - when target's __method__ returns nil - returns true - when target's __method__ returns __binding__ - returns true - #get_method_or_raise - when there's name but no corresponding method - raises MethodNotFound - when super opt is provided and there's a parent method - gets the parent method - when super opt is provided but there's no super method - raises MethodNotFound - when there's no method name - raises MethodNotFound - #one_index_number - when line number is more than 0 - decrements the line number - when line number is 0 - returns the line number - #unindent - removes the same prefix from all lines - should not be phased by empty lines - should also remove tabs if present - should ignore lines starting with -- - should only remove a common prefix - #absolute_index_range - when given an integer - returns an absolute range that was decremented - when given an integer - returns a range based on the integer and array length - #restrict_to_lines - when lines are specified as an integer - restricts the given string to the specified line number - when lines are specified as a range - restricts the given string to the specified range - #temp_file - unlinks the tempfile - closes the tempfile - allows overwriting file extension - yields a tempfile - creates a tempfile with rb extension - #absolute_index_number - when line number is zero - returns the line number - when line number is less than zero - returns the absolute sum of line number and array length - #one_index_range_or_number - when given an integer - decrements the line number - when given a range - decrements range boundaries + should raise an error on invalid syntax like ["puts {key: 'val'}.to_json"] + should not raise an error on broken lines: p = '\n' + should display correct number of errors on invalid syntax like ["1 1"] + should not raise an error on broken lines: p = <