Diff of the two buildlogs: -- --- b1/build.log 2024-07-28 11:00:16.449752812 +0000 +++ b2/build.log 2024-07-28 11:01:30.614603703 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Sat Aug 30 05:22:39 -12 2025 -I: pbuilder-time-stamp: 1756574559 +I: Current time: Mon Jul 29 01:00:18 +14 2024 +I: pbuilder-time-stamp: 1722164418 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bullseye-reproducible-base.tgz] I: copying local configuration @@ -17,8 +17,8 @@ I: copying [./ruby-semantic-puppet_1.0.3-1.debian.tar.xz] I: Extracting source gpgv: unknown type of key resource 'trustedkeys.kbx' -gpgv: keyblock resource '/tmp/dpkg-verify-sig.rlAgxl1d/trustedkeys.kbx': General error -gpgv: Signature made Fri Jan 29 03:37:16 2021 -12 +gpgv: keyblock resource '/tmp/dpkg-verify-sig.XPpIIvm3/trustedkeys.kbx': General error +gpgv: Signature made Sat Jan 30 05:37:16 2021 +14 gpgv: using RSA key 7E43E9ACBF727AB3CF0885338716CE4614A452D8 gpgv: Can't check signature: No public key dpkg-source: warning: failed to verify signature on ./ruby-semantic-puppet_1.0.3-1.dsc @@ -27,135 +27,166 @@ dpkg-source: info: unpacking ruby-semantic-puppet_1.0.3-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/495741/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/3575672/tmp/hooks/D01_modify_environment starting +debug: Running on ionos11-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 Jul 29 01:00 /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/3575672/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/3575672/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build/reproducible-path' - 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,-fixfilepath parallel=42 ' - DISTRIBUTION='bullseye' - HOME='/root' - HOST_ARCH='amd64' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:hostcomplete:interactive_comments:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="1" [2]="4" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") + BASH_VERSION='5.1.4(1)-release' + BUILDDIR=/build/reproducible-path + 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,-fixfilepath parallel=20 ' + DIRSTACK=() + DISTRIBUTION=bullseye + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=x86_64 + HOST_ARCH=amd64 IFS=' ' - INVOCATION_ID='0c3b6347610e4abcb882e454a67f34d3' - 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='495741' - PS1='# ' - PS2='> ' + INVOCATION_ID=26fb8ee61eb048b78327ae08247bd5b0 + 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=3575672 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.DyHdbEsD/pbuilderrc_Lr4H --distribution bullseye --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.DyHdbEsD/b1 --logfile b1/build.log ruby-semantic-puppet_1.0.3-1.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://213.165.73.152: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.DyHdbEsD/pbuilderrc_bW2O --distribution bullseye --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.DyHdbEsD/b2 --logfile b2/build.log ruby-semantic-puppet_1.0.3-1.dsc' + SUDO_GID=111 + SUDO_UID=106 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://46.16.76.132:3128 I: uname -a - Linux ionos15-amd64 6.9.7+bpo-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.9.7-1~bpo12+1 (2024-07-03) x86_64 GNU/Linux + Linux i-capture-the-hostname 6.1.0-23-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.99-1 (2024-07-15) x86_64 GNU/Linux I: ls -l /bin total 5476 - -rwxr-xr-x 1 root root 1234376 Mar 27 2022 bash - -rwxr-xr-x 3 root root 38984 Jul 20 2020 bunzip2 - -rwxr-xr-x 3 root root 38984 Jul 20 2020 bzcat - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzcmp -> bzdiff - -rwxr-xr-x 1 root root 2225 Jul 20 2020 bzdiff - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzegrep -> bzgrep - -rwxr-xr-x 1 root root 4877 Sep 4 2019 bzexe - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzfgrep -> bzgrep - -rwxr-xr-x 1 root root 3775 Jul 20 2020 bzgrep - -rwxr-xr-x 3 root root 38984 Jul 20 2020 bzip2 - -rwxr-xr-x 1 root root 18424 Jul 20 2020 bzip2recover - lrwxrwxrwx 1 root root 6 Jul 20 2020 bzless -> bzmore - -rwxr-xr-x 1 root root 1297 Jul 20 2020 bzmore - -rwxr-xr-x 1 root root 43936 Sep 23 2020 cat - -rwxr-xr-x 1 root root 72672 Sep 23 2020 chgrp - -rwxr-xr-x 1 root root 64448 Sep 23 2020 chmod - -rwxr-xr-x 1 root root 72672 Sep 23 2020 chown - -rwxr-xr-x 1 root root 151168 Sep 23 2020 cp - -rwxr-xr-x 1 root root 125560 Dec 10 2020 dash - -rwxr-xr-x 1 root root 113664 Sep 23 2020 date - -rwxr-xr-x 1 root root 80968 Sep 23 2020 dd - -rwxr-xr-x 1 root root 93936 Sep 23 2020 df - -rwxr-xr-x 1 root root 147176 Sep 23 2020 dir - -rwxr-xr-x 1 root root 84440 Mar 27 2024 dmesg - lrwxrwxrwx 1 root root 8 Nov 6 2019 dnsdomainname -> hostname - lrwxrwxrwx 1 root root 8 Nov 6 2019 domainname -> hostname - -rwxr-xr-x 1 root root 39712 Sep 23 2020 echo - -rwxr-xr-x 1 root root 28 Jan 24 2023 egrep - -rwxr-xr-x 1 root root 39680 Sep 23 2020 false - -rwxr-xr-x 1 root root 28 Jan 24 2023 fgrep - -rwxr-xr-x 1 root root 69032 Mar 27 2024 findmnt - -rwsr-xr-x 1 root root 34896 Feb 26 2021 fusermount - -rwxr-xr-x 1 root root 203072 Jan 24 2023 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 98048 Apr 9 2022 gzip - -rwxr-xr-x 1 root root 22600 Nov 6 2019 hostname - -rwxr-xr-x 1 root root 72840 Sep 23 2020 ln - -rwxr-xr-x 1 root root 56952 Feb 7 2020 login - -rwxr-xr-x 1 root root 147176 Sep 23 2020 ls - -rwxr-xr-x 1 root root 149736 Mar 27 2024 lsblk - -rwxr-xr-x 1 root root 85184 Sep 23 2020 mkdir - -rwxr-xr-x 1 root root 76896 Sep 23 2020 mknod - -rwxr-xr-x 1 root root 48064 Sep 23 2020 mktemp - -rwxr-xr-x 1 root root 59632 Mar 27 2024 more - -rwsr-xr-x 1 root root 55528 Mar 27 2024 mount - -rwxr-xr-x 1 root root 18664 Mar 27 2024 mountpoint - -rwxr-xr-x 1 root root 147080 Sep 23 2020 mv - lrwxrwxrwx 1 root root 8 Nov 6 2019 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Dec 16 2021 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 43872 Sep 23 2020 pwd - lrwxrwxrwx 1 root root 4 Mar 27 2022 rbash -> bash - -rwxr-xr-x 1 root root 52032 Sep 23 2020 readlink - -rwxr-xr-x 1 root root 72704 Sep 23 2020 rm - -rwxr-xr-x 1 root root 52032 Sep 23 2020 rmdir - -rwxr-xr-x 1 root root 27472 Sep 27 2020 run-parts - -rwxr-xr-x 1 root root 122224 Dec 22 2018 sed - lrwxrwxrwx 1 root root 4 Aug 9 03:46 sh -> dash - -rwxr-xr-x 1 root root 43808 Sep 23 2020 sleep - -rwxr-xr-x 1 root root 84928 Sep 23 2020 stty - -rwsr-xr-x 1 root root 71912 Mar 27 2024 su - -rwxr-xr-x 1 root root 39744 Sep 23 2020 sync - -rwxr-xr-x 1 root root 531928 Jan 19 2024 tar - -rwxr-xr-x 1 root root 14456 Sep 27 2020 tempfile - -rwxr-xr-x 1 root root 101408 Sep 23 2020 touch - -rwxr-xr-x 1 root root 39680 Sep 23 2020 true - -rwxr-xr-x 1 root root 14328 Feb 26 2021 ulockmgr_server - -rwsr-xr-x 1 root root 35040 Mar 27 2024 umount - -rwxr-xr-x 1 root root 39744 Sep 23 2020 uname - -rwxr-xr-x 2 root root 2346 Apr 9 2022 uncompress - -rwxr-xr-x 1 root root 147176 Sep 23 2020 vdir - -rwxr-xr-x 1 root root 63744 Mar 27 2024 wdctl - lrwxrwxrwx 1 root root 8 Nov 6 2019 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 5898 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 8049 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/495741/tmp/hooks/D02_print_environment finished + -rwxr-xr-x 1 root root 1234376 Mar 28 2022 bash + -rwxr-xr-x 3 root root 38984 Jul 21 2020 bunzip2 + -rwxr-xr-x 3 root root 38984 Jul 21 2020 bzcat + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzcmp -> bzdiff + -rwxr-xr-x 1 root root 2225 Jul 21 2020 bzdiff + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzegrep -> bzgrep + -rwxr-xr-x 1 root root 4877 Sep 5 2019 bzexe + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzfgrep -> bzgrep + -rwxr-xr-x 1 root root 3775 Jul 21 2020 bzgrep + -rwxr-xr-x 3 root root 38984 Jul 21 2020 bzip2 + -rwxr-xr-x 1 root root 18424 Jul 21 2020 bzip2recover + lrwxrwxrwx 1 root root 6 Jul 21 2020 bzless -> bzmore + -rwxr-xr-x 1 root root 1297 Jul 21 2020 bzmore + -rwxr-xr-x 1 root root 43936 Sep 24 2020 cat + -rwxr-xr-x 1 root root 72672 Sep 24 2020 chgrp + -rwxr-xr-x 1 root root 64448 Sep 24 2020 chmod + -rwxr-xr-x 1 root root 72672 Sep 24 2020 chown + -rwxr-xr-x 1 root root 151168 Sep 24 2020 cp + -rwxr-xr-x 1 root root 125560 Dec 11 2020 dash + -rwxr-xr-x 1 root root 113664 Sep 24 2020 date + -rwxr-xr-x 1 root root 80968 Sep 24 2020 dd + -rwxr-xr-x 1 root root 93936 Sep 24 2020 df + -rwxr-xr-x 1 root root 147176 Sep 24 2020 dir + -rwxr-xr-x 1 root root 84440 Mar 29 00:09 dmesg + lrwxrwxrwx 1 root root 8 Nov 8 2019 dnsdomainname -> hostname + lrwxrwxrwx 1 root root 8 Nov 8 2019 domainname -> hostname + -rwxr-xr-x 1 root root 39712 Sep 24 2020 echo + -rwxr-xr-x 1 root root 28 Jan 25 2023 egrep + -rwxr-xr-x 1 root root 39680 Sep 24 2020 false + -rwxr-xr-x 1 root root 28 Jan 25 2023 fgrep + -rwxr-xr-x 1 root root 69032 Mar 29 00:09 findmnt + -rwsr-xr-x 1 root root 34896 Feb 27 2021 fusermount + -rwxr-xr-x 1 root root 203072 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 98048 Apr 10 2022 gzip + -rwxr-xr-x 1 root root 22600 Nov 8 2019 hostname + -rwxr-xr-x 1 root root 72840 Sep 24 2020 ln + -rwxr-xr-x 1 root root 56952 Feb 8 2020 login + -rwxr-xr-x 1 root root 147176 Sep 24 2020 ls + -rwxr-xr-x 1 root root 149736 Mar 29 00:09 lsblk + -rwxr-xr-x 1 root root 85184 Sep 24 2020 mkdir + -rwxr-xr-x 1 root root 76896 Sep 24 2020 mknod + -rwxr-xr-x 1 root root 48064 Sep 24 2020 mktemp + -rwxr-xr-x 1 root root 59632 Mar 29 00:09 more + -rwsr-xr-x 1 root root 55528 Mar 29 00:09 mount + -rwxr-xr-x 1 root root 18664 Mar 29 00:09 mountpoint + -rwxr-xr-x 1 root root 147080 Sep 24 2020 mv + lrwxrwxrwx 1 root root 8 Nov 8 2019 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Dec 17 2021 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 43872 Sep 24 2020 pwd + lrwxrwxrwx 1 root root 4 Mar 28 2022 rbash -> bash + -rwxr-xr-x 1 root root 52032 Sep 24 2020 readlink + -rwxr-xr-x 1 root root 72704 Sep 24 2020 rm + -rwxr-xr-x 1 root root 52032 Sep 24 2020 rmdir + -rwxr-xr-x 1 root root 27472 Sep 28 2020 run-parts + -rwxr-xr-x 1 root root 122224 Dec 23 2018 sed + lrwxrwxrwx 1 root root 9 Jul 29 01:00 sh -> /bin/bash + -rwxr-xr-x 1 root root 43808 Sep 24 2020 sleep + -rwxr-xr-x 1 root root 84928 Sep 24 2020 stty + -rwsr-xr-x 1 root root 71912 Mar 29 00:09 su + -rwxr-xr-x 1 root root 39744 Sep 24 2020 sync + -rwxr-xr-x 1 root root 531928 Jan 20 2024 tar + -rwxr-xr-x 1 root root 14456 Sep 28 2020 tempfile + -rwxr-xr-x 1 root root 101408 Sep 24 2020 touch + -rwxr-xr-x 1 root root 39680 Sep 24 2020 true + -rwxr-xr-x 1 root root 14328 Feb 27 2021 ulockmgr_server + -rwsr-xr-x 1 root root 35040 Mar 29 00:09 umount + -rwxr-xr-x 1 root root 39744 Sep 24 2020 uname + -rwxr-xr-x 2 root root 2346 Apr 10 2022 uncompress + -rwxr-xr-x 1 root root 147176 Sep 24 2020 vdir + -rwxr-xr-x 1 root root 63744 Mar 29 00:09 wdctl + lrwxrwxrwx 1 root root 8 Nov 8 2019 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 5898 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 8049 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/3575672/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -328,7 +359,7 @@ Get: 129 http://deb.debian.org/debian bullseye/main amd64 ruby-rspec-expectations all 3.9.0c2e2m1s3-2 [89.9 kB] Get: 130 http://deb.debian.org/debian bullseye/main amd64 ruby-rspec-mocks all 3.9.0c2e2m1s3-2 [81.4 kB] Get: 131 http://deb.debian.org/debian bullseye/main amd64 ruby-rspec all 3.9.0c2e2m1s3-2 [8348 B] -Fetched 44.2 MB in 0s (130 MB/s) +Fetched 44.2 MB in 1s (45.9 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package bsdextrautils. (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 ... 19711 files and directories currently installed.) @@ -877,7 +908,11 @@ Building tag database... -> Finished parsing the build-deps I: Building the package -I: Running cd /build/reproducible-path/ruby-semantic-puppet-1.0.3/ && 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 > ../ruby-semantic-puppet_1.0.3-1_source.changes +I: user script /srv/workspace/pbuilder/3575672/tmp/hooks/A99_set_merged_usr starting +Not re-configuring usrmerge for bullseye +I: user script /srv/workspace/pbuilder/3575672/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/reproducible-path/ruby-semantic-puppet-1.0.3/ && 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 > ../ruby-semantic-puppet_1.0.3-1_source.changes dpkg-buildpackage: info: source package ruby-semantic-puppet dpkg-buildpackage: info: source version 1.0.3-1 dpkg-buildpackage: info: source distribution unstable @@ -914,16 +949,16 @@ └──────────────────────────────────────────────────────────────────────────────┘ install -d /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby -install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/gem_version.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/gem_version.rb -install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency.rb -install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/graph_node.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/graph_node.rb +install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet.rb install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/graph.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/graph.rb -install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/source.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/source.rb -install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/module_release.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/module_release.rb install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/unsatisfiable_graph.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/unsatisfiable_graph.rb -install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/version.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/version.rb +install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/graph_node.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/graph_node.rb +install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/module_release.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/module_release.rb +install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/source.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/source.rb +install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency.rb install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/version_range.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/version_range.rb -install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet.rb +install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/gem_version.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/gem_version.rb +install -D -m644 /build/reproducible-path/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/version.rb /build/reproducible-path/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/version.rb ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install Rubygems integration metadata │ @@ -949,1111 +984,1111 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 7390 - -SemanticPuppet::VersionRange - The version - 2.2.3 should be above range 1.0.0 - 2.0.0 - 2.3.0 should be below range ~2.4 - 1.0.0-beta should be below range 1 - 2.0.0 should not be below range 1.0.0 - 2.0.0 - 2.3.2 should be below range ~>3.2.1 - 2.0.0 should not be above range <= 2.0.0(<=2.0.0) - 1.0.2 should not be above range ~1.0(>=1.0.0 <1.1.0) - 2.4.0 should not be below range ~2.4 - 1.0.0 should be below range >=2.0.0 - 2.3.0 should be below range ~2.4 - 2.5.0 should be above range ~2.4 - 0.5.4-alpha should be below range ~v0.5.4-pre - 0.7.2 should not be below range >=0.7.x - 1.1.1 should not be above range <1.2(<1.2.0) - 1.1.3 should be below range 1.2.* || 2.* - 0.2.3 should be below range ~1 - 1.0.2 should not be below range ~ 1.0 - 0.2.9 should not be below range <= 2.0.0 - 1.1.1 should not be below range < 1.2 - 5.0.1 should be above range 2.*.* - 3.1.2 should be above range 2 - 1.0.0 should not be above range (*) - 1.9999.9999 should not be above range < 2.0.0(<2.0.0) - 4.0.0 should be above range 1.2.* || 2.* - 1.0.1 should not be below range >1.0.0 - 1.2.0 should be above range <1.2 - 0.0.0 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) - 2.4.5 should not be above range ~2.4(>=2.4.0 <2.5.0) - 0.2.3 should be below range ~>1 - 1.2.9 should be below range >=2.0.0 - 3.2.0 should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) - 0.2.3 should be below range ~1 - 1.1.3 should be below range 2.*.* - 1.1.9999 should be below range 1.2.* || 2.* - 1.1.3 should be below range 1.2.x || 2.x - 1.0.0-beta should be above range <1 - 3.1.3 should be above range 2.x.x - 1.2.3 should not be below range 1.2.x || 2.x - 4.0.0 should not be below range ^3.0.0 - 1.1.0 should not be below range >=1.0.0 - 0.2.9 should not be above range <2.0.0(<2.0.0) - 0.2.3 should not be below range >=0.2.3 || <0.0.1 - 2.2.9 should be above range <=2.0.0 - 1.0.0 should not be below range >= 1.0.0 - 1.9999.9999 should not be above range <2.0.0(<2.0.0) - 0.2.4 should not be below range >=* - 1.3.4 should not be below range || - 2.0.0 should not be above range ^1.0.0 || ~2.0.1(>=1.0.0 <2.0.0 || >=2.0.1 <2.1.0) - 1.2.3 should not be below range * - 1.0.2 should not be below range ~1.0 - 1.0.2 should not be above range ~ 1.0(>=1.0.0 <1.1.0) - 1.0.0-beta should be below range > 1 - 1.0.1 should be above range 1.0.0 - 1.2.3 should not be below range ~1 - 1.0.0 should be below range 2 - 1.2.9 should be below range >2.0.0 - 1.3.0 should be above range ~1.2.2 - 2.0.0 should not be above range <=2.0.0(<=2.0.0) - 1.2.3 should not be above range *(*) - 0.2.4 should not be below range >=0.2.3 <=0.2.4 - 1.2.3 should not be below range ~>1 - 3.0.0 should be above range 2 - 1.0.1 should not be below range >=1.0.0 - 0.6.2 should not be below range <=0.7.x - 2.3.1 should not be below range 2.3 - 1.3.0 should be above range 1.2.x - 5.0.0-0 should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) - 0.6.0 should be below range >=0.7.x - 5.0.0-0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 - 1.2.4 should not be below range 0.1.20 || 1.2.4 - 3.0.0 should be above range <=2.0.0 - 1.0.0-beta should not be below range ~1.0.0-alpha - 2.9999.9999 should be above range <=2.0.0 - 2.2.3 should be above range ~1 - 0.6.2 should not be above range <=0.7.x(<0.8.0) - 2.5.0 should be above range ~2.4 - 1.0.0 should not be below range - 1.1.0 should not be above range > 1.0.0(>1.0.0) - 0.1.97 should not be above range >=0.1.97(>=0.1.97) - 0.0.0 should not be below range >=0.2.3 || <0.0.1 - 1.1.0 should be below range 1.2.x - 1.0.0 should not be below range 1.0.0 - 0.1.97 should not be below range >=0.1.97 - 1.1.0 should not be below range >1.0.0 - 1.1.3 should be below range 2.x.x - 2.9999.9999 should be above range <2.0.0 - 2.0.0 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) - 1.2.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) - 1.2.1 should be below range ~1.2.2 - 2.0.0 should not be below range <=2.0.0 - 1.2.3 should not be below range x - 2.4.0 should not be above range ~2.4(>=2.4.0 <2.5.0) - 1.1.3 should be below range 1.2.* - 1.0.0 should not be below range >=1.0.0 - 0.2.9 should not be below range < 2.0.0 - 1.2.3 should not be above range ~> 1(>=1.0.0 <2.0.0) - 2.1.2 should not be above range 2(>=2.0.0 <3.0.0) - 0.8.2 should be above range =0.7.x - 1.0.1-beta1 should be above range 1.0.0 - 1.2.3 should not be above range ~1(>=1.0.0 <2.0.0) - 0.7.0-asdf should not be above range >=0.7.x(>=0.7.0) - 1.2.1 should be below range > 1.2 - 1.9999.9999 should not be above range <= 2.0.0(<=2.0.0) - 0.7.0-asdf should be below range =0.7.x - 3.2.9 should be above range <=2.0.0 - 0.2.4 should be below range ~>1 - 0.7.2 should be above range <0.7.x - 3.3.2 should be above range ~>3.2.1 - 0.6.1-0 should be below range ~0.6.1-1 - 2.1.3 should not be above range 2.x.x(>=2.0.0 <3.0.0) - 3.2.0 should be below range ~>3.2.1 - 1.2.3 should not be below range 1.2.* - 2.2.3 should be above range ~1 - 2.0.0-beta should be above range 1 - 2.4.5 should not be below range ~2.4 - 2.0.0 should be above range 1.0.0 - 0.7.2 should not be below range =0.7.x - 1.1.0 should not be above range >1.0.0(>1.0.0) - 0.7.2 should not be above range >=0.7.x(>=0.7.0) - 0.5.4 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) - 1.0.0-beta should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) - 0.2.9 should not be below range <=2.0.0 - 3.2.3 should be above range ~> 1 - 2.4.1 should be above range 2.3 - 1.0.0 should not be above range >=1(>=1.0.0) - 3.5.0 should not be below range ^0.1.0 || ~3.0.1 || >4 <=5.0.0 - 2.1.3 should not be below range 2.x.x - 0.5.5 should not be below range ~v0.5.4-pre - 1.0.0 should not be below range >=1 - 0.1.20 should not be below range 0.1.20 || 1.2.4 - 2.1.1 should be above range <=2.0.0 - 1.0.0 should not be below range >= 1 - 1.9999.9999 should not be below range < 2.0.0 - 0.5.4 should not be below range ~v0.5.4-pre - 1.0.1 should not be below range >= 1.0.0 - 0.0.0-beta should be below range 1 - 1.0.0-beta should be above range < 1 - 1.2.0 should be below range >1.2 - 2.0.0 should be below range >2.0.0 - 0.2.3 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) - 1.3.3 should be above range 1.2.x - 1.9999.9999 should not be below range <2.0.0 - 0.1.97 should not be above range >=0.1.97(>=0.1.97) - 0.2.4 should not be below range >=0.2.3 || <0.0.1 - 1.2.1 should be below range ~1.2.2 - 1.0.0-0 should be below range ^1 - 1.0.0 should be above range <1 - 0.0.1 should be below range 1.0.0 - 1.0.1 should not be above range >=1.0.0(>=1.0.0) - 0.8.0-asdf should be above range =0.7.x - 0.7.0 should be above range <0.7.x - 0.7.0-asdf should not be above range =0.7.x(>=0.7.0 <0.8.0) - 0.2.4 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) - 1.1.3 should be below range 1.2.x - 0.7.0-asdf should be below range >=0.7.x - 3.0.0 should be above range 2.x.x - 1.0.0-beta should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 - 1.1.0 should be above range ~ 1.0 - 1.2.3 should not be above range *(*) - 3.1.3 should be above range 1.2.x || 2.x - 1.0.0 should not be below range =0.1.0 - 1.1.0 should be above range ~1.0 - 1.2.3-foo should not be above range *(*) - 1.2.5 should be above range 0.1.20 || 1.2.4 - 3.5.0 should not be above range ^0.1.0 || ~3.0.1 || >4 <=5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) - 0.2.9 should not be above range <= 2.0.0(<=2.0.0) - 2.9.9 should not be below range 1.0.0 - 2.0.0 - 1.1.1 should not be above range < 1.2(<1.2.0) - 1.3.3 should be above range 1.2.* - 3.2.2 should not be below range ~>3.2.1 - 2.1.3 should not be below range 1.2.* || 2.* - 1.1.0 should not be above range >=1.0.0(>=1.0.0) - 0.6.0 should be above range ~v0.5.4-pre - 2.1.3 should not be below range 1.2.x || 2.x - 0.1.0 should be below range ~ 1.0 - 1.9999.9999 should not be below range <=2.0.0 - 2.1.3 should not be below range 2.*.* - 1.2.4 should not be above range 0.1.20 || >1.2.4(0.1.20 || >1.2.4) - 2.1.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) - 3.2.0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 - 3.0.0 should be above range 1.2.x || 2.x - 1.0.1 should not be below range > 1.0.0 - 0.7.1-1 should be above range ~0.6.1-1 - 2.2.4 should be above range ~>1 - 1.0.1 should not be above range >= 1.0.0(>=1.0.0) - 1.0.0-beta should be below range 2 - 1.2.3 should not be below range 1.2.* || 2.* - 2.2.2 should be below range 2.3 - 2.5.5 should be above range ~2.4 - 0.2.4 should not be above range >=0.2.3 <=0.2.4(>=0.2.3 <=0.2.4) - 3.3.0 should be above range ~>3.2.1 - 1.0.0 should be below range >1 - 1.0.1 should not be above range >1.0.0(>1.0.0) - 0.2.9 should not be above range < 2.0.0(<2.0.0) - 1.2.3 should not be below range 1.2.* || 2.* - 0.2.4 should not be above range >=*(>=0.0.0) - 0.8.0 should be above range =0.7.x - 2.3.5 should be below range ~2.4 - 0.0.1 should be below range 1.0.0 - 2.0.0 - 1.3.4 should not be above range ||(*) - 1.1.0 should not be below range >= 1.0.0 - 1.0.0-beta should not be above range 1(>=1.0.0 <2.0.0) - 0.6.2 should be below range >=0.7.x - 0.2.5 should not be above range >0.2.3 >0.2.4 <=0.2.5(>0.2.4 <=0.2.5) - 2.2.9 should be above range <2.0.0 - 2.2.3 should be above range ~>1 - 1.2.3 should not be below range 0.1.20 || 1.2.4 - 1.0.0-beta.1 should be below range 1.0.0-beta.2 - 1.2.1 should be above range < 1.2 - 1.0.0-beta should be below range >1 - 1.1.1 should be below range >=2.0.0 - 1.0.1 should be below range 2.*.* - 2.1.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) - 1.2.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) - 1.3.3 should be above range 1.2.* - 3.1.3 should be above range 1.2.* || 2.* - 1.2.3 should not be below range 1.0.0 - 2.0.0 - 2.0.1 should be above range 1.0.0 - 2.0.0 - 1.2.3 should not be below range ~> 1 - 1.2.4 should not be below range 0.1.20 || >1.2.4 - 2.0.0 should not be below range <= 2.0.0 - 2.0.0-beta should be above range 1 - 2.0.0 should be below range >2.0.0 - 0.7.2 should not be above range =0.7.x(>=0.7.0 <0.8.0) - 3.1.3 should be above range 2.*.* - 1.2.3 should not be above range 1.2.x(>=1.2.0 <1.3.0) - 1.9999.9999 should not be above range <=2.0.0(<=2.0.0) - 1.1.3 should be below range 1.2.* - 0.2.5 should not be below range >0.2.3 >0.2.4 <=0.2.5 - 1.9999.9999 should not be below range <= 2.0.0 - 0.2.9 should not be below range <2.0.0 - 1.0.0 should not be above range 1.0.0(1.0.0) - 2.2.1 should be below range 2.3 - 0.0.0 should be below range ~1.0 - 0.1.2 should be below range ~1.0 - 0.6.1-1 should not be below range ~0.6.1-1 - 1.1.0 should not be above range >= 1.0.0(>=1.0.0) - 0.9.9 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) - 1.1.0 should not be below range ~ 1.0 - 1.2.3 should not be above range ~>1(>=1.0.0 <2.0.0) - 1.2.3 should not be above range x(*) - 1.2.4 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) - 2.0.0 should not be above range ^3.0.0(>=3.0.0 <4.0.0) - 0.2.9 should not be above range <=2.0.0(<=2.0.0) - 0.5.4-alpha should be below range ~v0.5.4-pre - 0.2.3 should be below range ~> 1 - 0.6.1-pre should be above range ~v0.5.4-pre - 0.0.0 should be below range 1.0.0 - 1.0.0 should not be above range >= 1.0.0(>=1.0.0) - 1.1.2 should be above range ~1.0 - 0.1.20 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) - 3.2.2 should not be above range ~>3.2.1(>=3.2.1 <3.3.0) - 0.6.1-1 should not be above range ~0.6.1-1(>=0.6.1-1 <0.7.0) - 2.3.1 should not be above range 2.3(>=2.3.0 <2.4.0) - 0.6.0 should be below range =0.7.x - 1.1.0 should not be below range > 1.0.0 - 0.6.2 should be below range =0.7.x - 1.0.0 should not be above range >=1.0.0(>=1.0.0) - 2.4.2 should be above range 2.3 - 2.0.0 should be above range <2.0.0 - 2.0.0 should not be below range ^1.0.0 || ~2.0.1 - 1.0.1 should not be above range > 1.0.0(>1.0.0) - 1.0.0-beta should not be below range ^1.0.0-alpha - 1.2.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) - 1.9999.9999 should be below range >=2.0.0 - 1.9999.9999 should be below range 2 - 0.0.0-0 should not be above range ^1(>=1.0.0 <2.0.0) - 1.2.3 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) - 1.0.0 should be below range 2.x.x - 2.1.3 should not be above range 2.*.*(>=2.0.0 <3.0.0) - 1.2.9 should be below range >=2.0.0 - 1.2.3 should not be below range 1.2.x - 1.2.3 should not be above range 1.2.*(>=1.2.0 <1.3.0) - 2.1.2 should not be below range 2 - 0.6.0-asdf should be below range =0.7.x - 1.0.0 should not be above range >= 1(>=1.0.0) - 0.2.3 should be below range 1.0.0 - 2.0.0 - 1.3.0 should be above range ~1.2.2 - 1.1.1 should not be below range <1.2 - 0.5.5 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) - 0.1.5 should be below range 0.1.20 || 1.2.4 - 1.0.0 should be below range 1.2.x || 2.x - 1.2.3 should not be below range * - 1.2.3 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) - #intersection - cannot intersect with non-VersionRanges - is commutative - between >=10.0.0 <5.0.0 & 11.0.0 - 4.0.0 - between >=10.0.0 <5.0.0 & 4.0.0 - 1.0.0 - between 10.0.0 - 5.0.0 & >=10.0.0 <5.0.0 - between 10.0.0 - 5.0.0 & 5.0.0 - 1.0.0 - between 10.0.0 - 5.0.0 & 15.0.0 - 11.0.0 - between 10.0.0 - 5.0.0 & >=7.0.0 <1.0.0 - between >=10.0.0 <5.0.0 & 5.0.0 - 1.0.0 - between >=10.0.0 <5.0.0 & 15.0.0 - 11.0.0 - between >=10.0.0 <5.0.0 & 15.0.0 - 9.0.0 - between >=10.0.0 <5.0.0 & >=10.0.0 <5.0.0 - between >=10.0.0 <5.0.0 & 6.0.0 - 1.0.0 - between 10.0.0 - 5.0.0 & 4.0.0 - 1.0.0 - between 10.0.0 - 5.0.0 & 6.0.0 - 1.0.0 - between >=10.0.0 <5.0.0 & 15.0.0 - 10.0.0 - between 10.0.0 - 5.0.0 & 9.0.0 - 6.0.0 - between >=10.0.0 <5.0.0 & >=5.0.0 <1.0.0 - between >=10.0.0 <5.0.0 & >=7.0.0 <1.0.0 - between >=10.0.0 <5.0.0 & 10.0.0 - 5.0.0 - between 10.0.0 - 5.0.0 & 15.0.0 - 10.0.0 - between 10.0.0 - 5.0.0 & 15.0.0 - 9.0.0 - between >=10.0.0 <5.0.0 & 9.0.0 - 6.0.0 - between 10.0.0 - 5.0.0 & 10.0.0 - 5.0.0 - between 10.0.0 - 5.0.0 & >=5.0.0 <1.0.0 - between 10.0.0 - 5.0.0 & 11.0.0 - 4.0.0 - between 10.0.0 - 5.0.0 & - 4.0.0 - 1.0.0 - 10.0.0 - 5.0.0 - 9.0.0 - 6.0.0 - >=5.0.0 <1.0.0 - >=10.0.0 <5.0.0 - 15.0.0 - 11.0.0 - 5.0.0 - 1.0.0 - 6.0.0 - 1.0.0 - 15.0.0 - 10.0.0 - 15.0.0 - 9.0.0 - >=7.0.0 <1.0.0 - 11.0.0 - 4.0.0 - between >=10.0.0 <5.0.0 & - >=10.0.0 <5.0.0 - 15.0.0 - 9.0.0 - 10.0.0 - 5.0.0 - 6.0.0 - 1.0.0 - >=7.0.0 <1.0.0 - 15.0.0 - 11.0.0 - 4.0.0 - 1.0.0 - >=5.0.0 <1.0.0 - 9.0.0 - 6.0.0 - 11.0.0 - 4.0.0 - 15.0.0 - 10.0.0 - 5.0.0 - 1.0.0 - .parse - inclusive range expressions - parse("1.2.3 - 1.3.4").to_s includes 1.3.4 - "1.2.3 - 1.3.4-alpha" includes 1.2.3 - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.5 - "1.2.3-alpha - 1.3.4" includes 1.3.4 - "1.2.3 - 1.3.4" excludes 1.2.2 - parse("1.2.3 - 1.3.4-alpha").to_s includes 1.2.3 - "1.2.3 - 1.3.4" includes 1.2.3 - parse("1.2.3-alpha - 1.3.4").to_s excludes 1.3.5-0 - "1.2.3-alpha - 1.3.4" includes 1.2.3-alpha - "1.2.3 - 1.3.4" excludes 1.2.3-0 - parse("1.2.3 - 1.3.4-alpha").to_s includes 1.3.4-alpha - "1.2.3 - 1.3.4-alpha" stringifies as >=1.2.3 <=1.3.4-alpha - "1.2.3-alpha - 1.3.4-alpha" includes 1.2.3-alpha - "1.2.3 - 1.3.4" excludes 1.3.5-0 - "1.2.3-alpha - 1.3.4" excludes 1.3.5-0 - parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.5 - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 - "1.2.3-alpha - 1.3.4" stringifies as >=1.2.3-alpha <=1.3.4 - "1.2.3 - 1.3.4-alpha" includes 1.3.4-alpha - parse("1.2.3 - 1.3.4").to_s excludes 1.2.2 - "1.2.3 - 1.3.4" stringifies as >=1.2.3 <=1.3.4 - "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.4-alpha0 - "1.2.3 - 1.3.4" includes 1.3.4 - "1.2.3 - 1.3.4-alpha" excludes 1.3.4-alpha0 - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.3-0 - "1.2.3 - 1.3.4-alpha" excludes 1.2.3-0 - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.2 - "1.2.3 - 1.3.4-alpha" excludes 1.3.5 - parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.3.4-alpha - parse("1.2.3 - 1.3.4").to_s includes 1.2.3 - "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.5 - parse("1.2.3-alpha - 1.3.4").to_s excludes 1.2.3-alph - parse("1.2.3 - 1.3.4").to_s excludes 1.2.3-0 - parse("1.2.3-alpha - 1.3.4").to_s includes 1.2.3-alpha - parse("1.2.3-alpha - 1.3.4").to_s includes 1.3.4 - "1.2.3-alpha - 1.3.4-alpha" includes 1.3.4-alpha - "1.2.3-alpha - 1.3.4-alpha" excludes 1.2.3-alph - "1.2.3-alpha - 1.3.4" excludes 1.2.3-alph - "1.2.3 - 1.3.4-alpha" excludes 1.2.2 - parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.2.3-alph - parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.2.3-alpha - "1.2.3-alpha - 1.3.4-alpha" stringifies as >=1.2.3-alpha <=1.3.4-alpha - parse("1.2.3 - 1.3.4").to_s excludes 1.3.5-0 - parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 - loose version expressions - "1.x" excludes 2.0.0-0 - parse("1").to_s includes 1.0.0 - "1.2.3" excludes 1.2.4-alpha - parse("1.2.3").to_s excludes 1.2.4-alpha - parse("1.2.X").to_s includes 1.2.0 - parse("1.2.X").to_s includes 1.2.999 - parse("1.2").to_s excludes 1.1.999 - "1.2" excludes 1.2.0-alpha - "1.2.X" includes 1.2.999 - "1.x" includes 1.999.0 - "1.X" excludes 1.0.0-alpha - parse("1").to_s excludes 1.0.0-alpha - "1.2.x" includes 1.2.0 - parse("1.X").to_s excludes 2.0.0-0 - "1.2" excludes 1.3.0-0 - "1" excludes 2.0.0-0 - parse("1.2.X").to_s excludes 1.3.0-0 - parse("1.X").to_s excludes 0.999.999 - parse("1.x").to_s includes 1.0.0 - parse("1.2.3").to_s excludes 1.2.2 - "1.2.3" excludes 1.2.2 - "1.2.x" stringifies as >=1.2.0 <1.3.0 - "1.2.X" stringifies as >=1.2.0 <1.3.0 - "1.x" includes 1.0.0 - "1" excludes 1.0.0-alpha - parse("1.2.3").to_s includes 1.2.3 - "1.2.x" excludes 1.2.0-alpha - "1.X" includes 1.999.0 - "1.2.x" includes 1.2.999 - parse("1.2").to_s excludes 1.2.0-alpha - "1.2.3" includes 1.2.3 - "1" stringifies as >=1.0.0 <2.0.0 - parse("1.2.3").to_s excludes 1.2.3-alpha - parse("1.2.3-alpha").to_s includes 1.2.3-alpha - "1.2.3" excludes 1.2.3-alpha - parse("1.2.x").to_s excludes 1.2.0-alpha - parse("1.X").to_s includes 1.0.0 - "1.2" includes 1.2.999 - parse("1.x").to_s excludes 1.0.0-alpha - parse("1.2.x").to_s excludes 1.3.0-0 - "1.2.x" excludes 1.3.0-0 - "1.2.X" includes 1.2.0 - parse("1").to_s includes 1.999.0 - "1" includes 1.999.0 - parse("1.2.x").to_s excludes 1.1.999 - parse("1").to_s excludes 2.0.0-0 - parse("1.2.3-alpha").to_s excludes 1.2.3-beta - "1" includes 1.0.0 - "1.2" includes 1.2.0 - parse("1.2.x").to_s includes 1.2.0 - "1.2.3-alpha" stringifies as 1.2.3-alpha - parse("1.x").to_s excludes 2.0.0-0 - "1.X" excludes 0.999.999 - parse("1.X").to_s excludes 1.0.0-alpha - parse("1.2.3-alpha").to_s excludes 1.2.3-999 - "1.2" excludes 1.1.999 - "1.X" includes 1.0.0 - "1.x" excludes 1.0.0-alpha - parse("1.x").to_s excludes 0.999.999 - "1.x" stringifies as >=1.0.0 <2.0.0 - "1.2" stringifies as >=1.2.0 <1.3.0 - "1.2.3-alpha" excludes 1.2.3-beta - "1.2.3-alpha" includes 1.2.3-alpha - "1.X" excludes 2.0.0-0 - parse("1.2").to_s includes 1.2.0 - parse("1.2").to_s excludes 1.3.0-0 - "1.2.x" excludes 1.1.999 - parse("1.X").to_s includes 1.999.0 - "1.2.X" excludes 1.1.999 - parse("1.x").to_s includes 1.999.0 - parse("1.2").to_s includes 1.2.999 - "1.2.3-alpha" excludes 1.2.3-999 - parse("1").to_s excludes 0.999.999 - "1.x" excludes 0.999.999 - "1.2.X" excludes 1.3.0-0 - parse("1.2.x").to_s includes 1.2.999 - "1.X" stringifies as >=1.0.0 <2.0.0 - parse("1.2.X").to_s excludes 1.2.0-alpha - "1.2.3" stringifies as 1.2.3 - parse("1.2.X").to_s excludes 1.1.999 - "1" excludes 0.999.999 - "1.2.X" excludes 1.2.0-alpha - invalid expressions - raise an appropriate exception - ored expressions - non-overlapping - returns nil on begin - parse("1.2.3 || 1.2.5").to_s includes 1.2.5 - parse("1.2.3 || 1.2.5").to_s includes 1.2.3 - "1.2.3 || 1.2.5" includes 1.2.5 - "1.2.3 || 1.2.5" stringifies as 1.2.3 || 1.2.5 - "1.2.3 || 1.2.5" excludes 1.2.5-0 - "1.2.3 || 1.2.5" includes 1.2.3 - parse("1.2.3 || 1.2.5").to_s excludes 1.2.5-0 - returns nil on end - parse("1.2.3 || 1.2.5").to_s excludes 1.2.3-0 - parse("1.2.3 || 1.2.5").to_s excludes 1.2.4 - returns nil on exclude_end? - "1.2.3 || 1.2.5" excludes 1.2.3-0 - "1.2.3 || 1.2.5" excludes 1.2.4 - returns nil on exclude_begin? - adjacent - returns expected begin - "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.5 - returns nil on exclude_end? - "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.3 - parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.5 - parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.3 - parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.5-0 - ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 - ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 - parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 - parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.6 - parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.6-0 - ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 - parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 - ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 - "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.3-0 - ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 - "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.5-0 - returns nil on exclude_begin? - parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.3-0 - "1.2.3 || 1.2.4 || 1.2.5" stringifies as >=1.2.3 <=1.2.5 - returns nil on end - overlapping - parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.4-0 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 - ">=1.2.3 || 1.2.5" stringifies as >=1.2.3 - ">=1.2.3 || 1.2.5" excludes 1.2.4-0 - ">=1.2.3 || 1.2.5" includes 1.2.4 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 - parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.3-0 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 - parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.6 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 - parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 - parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 - parse(">=1.2.3 || 1.2.5").to_s includes 1.2.4 - parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.6-0 - parse(">=1.2.3 || 1.2.5").to_s includes 1.2.3 - ">=1.2.3 || 1.2.5" includes 1.2.3 - ">=1.2.3 || 1.2.5" excludes 1.2.3-0 - open-ended expressions - parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha0 - parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha0 - parse("> 1.2.3").to_s excludes 1.2.4-0 - parse("< 1.2.3").to_s includes 0.0.0 - "<= 1.2.3-alpha" excludes 1.2.3-alpha.0 - parse("<1.2.3").to_s excludes 1.2.3-0 - ">=1.2.3" includes 999.0.0 - "> 1.2.3-alpha" includes 1.2.3-alpha.0 - parse("<1.2.3").to_s includes 1.2.2 - "< 1.2.3" stringifies as <1.2.3 - parse("< 1.2.3-alpha").to_s excludes 1.2.3-alpha - "<= 1.2.3-alpha" excludes 0.0.0-0 - ">= 1.2.3" includes 999.0.0 - "< 1.2.3" includes 0.0.0 - "<1.2.3" includes 1.2.2 - ">= 1.2.3-alpha" stringifies as >=1.2.3-alpha - "< 1.2.3" excludes 2.0.0 - parse("<= 1.2.3").to_s includes 1.2.3 - "<=1.2.3" includes 0.0.0 - parse(">1.2.3").to_s excludes 1.2.3 - ">=1.2.3-alpha" includes 999.0.0 - "<= 1.2.3" includes 0.0.0 - ">= 1.2.3-alpha" includes 1.2.3-alpha - ">= 1.2.3-alpha" includes 999.0.0 - "> 1.2.3" includes 999.0.0 - "<=1.2.3-alpha" includes 0.0.0 - "<1.2.3-alpha" excludes 2.0.0 - parse(">= 1.2.3").to_s excludes 1.2.2 - ">= 1.2.3-alpha" excludes 1.2.4-alpha - ">=1.2.3" excludes 1.2.3-0 - "<= 1.2.3-alpha" includes 1.2.3-alpha - "< 1.2.3-alpha" excludes 0.0.0-0 - "<=1.2.3" excludes 0.0.0-0 - "> 1.2.3-alpha" includes 999.0.0 - "<1.2.3-alpha" includes 1.2.3-alph - parse(">1.2.3-alpha").to_s includes 1.2.3-alpha0 - ">=1.2.3" stringifies as >=1.2.3 - parse(">1.2.3-alpha").to_s excludes 1.2.3-alpha - "<=1.2.3" excludes 1.2.3-0 - ">1.2.3-alpha" includes 999.0.0 - ">= 1.2.3" stringifies as >=1.2.3 - "< 1.2.3" excludes 0.0.0-0 - "< 1.2.3-alpha" excludes 2.0.0 - "<= 1.2.3-alpha" excludes 1.2.3-alphb - parse("<1.2.3").to_s excludes 0.0.0-0 - ">=1.2.3" excludes 1.2.2 - parse("<=1.2.3").to_s includes 0.0.0 - parse("< 1.2.3").to_s excludes 2.0.0 - "<=1.2.3-alpha" stringifies as <=1.2.3-alpha - parse("< 1.2.3-alpha").to_s includes 0.0.0 - parse(">= 1.2.3-alpha").to_s excludes 1.2.4-alpha - "<1.2.3-alpha" stringifies as <1.2.3-alpha - "<1.2.3" stringifies as <1.2.3 - parse("< 1.2.3-alpha").to_s excludes 0.0.0-0 - parse("<=1.2.3-alpha").to_s excludes 0.0.0-0 - "<= 1.2.3" excludes 0.0.0-0 - ">1.2.3-alpha" includes 1.2.3-alpha.0 - parse("<=1.2.3").to_s excludes 0.0.0-0 - "<= 1.2.3-alpha" stringifies as <=1.2.3-alpha - ">= 1.2.3-alpha" excludes 1.2.3-alph - ">=1.2.3-alpha" stringifies as >=1.2.3-alpha - "<=1.2.3" stringifies as <=1.2.3 - "< 1.2.3" excludes 1.2.3-0 - "<=1.2.3-alpha" excludes 1.2.3-alpha0 - ">1.2.3-alpha" includes 1.2.3-alpha0 - "> 1.2.3-alpha" stringifies as >1.2.3-alpha - ">= 1.2.3" excludes 1.2.2 - parse(">= 1.2.3").to_s includes 999.0.0 - "<=1.2.3-alpha" includes 1.2.3-alpha - parse("< 1.2.3-alpha").to_s includes 1.2.3-alph - parse("<=1.2.3-alpha").to_s excludes 1.2.3-alphb - "<=1.2.3-alpha" excludes 1.2.3-alpha.0 - "< 1.2.3" includes 1.2.2 - "<= 1.2.3-alpha" excludes 1.2.3-alpha0 - parse("< 1.2.3").to_s excludes 0.0.0-0 - "<= 1.2.3-alpha" includes 0.0.0 - ">1.2.3" excludes 1.2.4-0 - ">1.2.3" excludes 1.2.3 - ">=1.2.3-alpha" includes 1.2.3-alpha0 - ">1.2.3" stringifies as >1.2.3 - "<=1.2.3" includes 1.2.3 - ">=1.2.3-alpha" includes 1.2.3-alpha - "> 1.2.3-alpha" excludes 1.2.3-alpha - parse("<1.2.3").to_s includes 0.0.0 - "<1.2.3-alpha" excludes 1.2.3-alpha - parse("<=1.2.3-alpha").to_s includes 1.2.3-alpha - parse(">1.2.3").to_s excludes 1.2.4-0 - parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha.0 - "<=1.2.3-alpha" excludes 1.2.3-alphb - ">=1.2.3-alpha" excludes 1.2.3-alph - ">=1.2.3-alpha" excludes 1.2.4-alpha - parse("<= 1.2.3-alpha").to_s includes 1.2.3-alpha - "< 1.2.3-alpha" stringifies as <1.2.3-alpha - parse("<1.2.3-alpha").to_s excludes 2.0.0 - parse(">=1.2.3").to_s excludes 1.2.2 - parse(">1.2.3-alpha").to_s includes 999.0.0 - ">= 1.2.3" excludes 1.2.3-0 - parse(">=1.2.3").to_s includes 999.0.0 - "<1.2.3" excludes 0.0.0-0 - parse("<1.2.3").to_s excludes 2.0.0 - parse("< 1.2.3").to_s includes 1.2.2 - parse(">=1.2.3-alpha").to_s excludes 1.2.3-alph - parse("<= 1.2.3-alpha").to_s excludes 0.0.0-0 - parse("<1.2.3-alpha").to_s excludes 0.0.0-0 - parse(">1.2.3-alpha").to_s includes 1.2.3-alpha.0 - "<=1.2.3-alpha" excludes 0.0.0-0 - parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha.0 - parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha0 - parse("<1.2.3-alpha").to_s includes 0.0.0 - "<= 1.2.3" stringifies as <=1.2.3 - parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha0 - "< 1.2.3-alpha" includes 0.0.0 - "< 1.2.3-alpha" includes 1.2.3-alph - "<= 1.2.3" includes 1.2.3 - ">1.2.3-alpha" stringifies as >1.2.3-alpha - parse("> 1.2.3-alpha").to_s excludes 1.2.3-alpha - parse(">=1.2.3-alpha").to_s includes 999.0.0 - ">1.2.3" includes 999.0.0 - parse("<= 1.2.3-alpha").to_s includes 0.0.0 - parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alphb - parse("<1.2.3-alpha").to_s includes 1.2.3-alph - parse("<= 1.2.3").to_s excludes 0.0.0-0 - parse(">=1.2.3").to_s excludes 1.2.3-0 - parse(">=1.2.3-alpha").to_s excludes 1.2.4-alpha - "<1.2.3" excludes 2.0.0 - ">1.2.3-alpha" excludes 1.2.3-alpha - parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha - parse(">= 1.2.3-alpha").to_s excludes 1.2.3-alph - "<1.2.3" includes 0.0.0 - parse("<=1.2.3").to_s excludes 1.2.3-0 - "< 1.2.3-alpha" excludes 1.2.3-alpha - parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha0 - parse("< 1.2.3").to_s excludes 1.2.3-0 - parse(">= 1.2.3-alpha").to_s includes 999.0.0 - parse("< 1.2.3-alpha").to_s excludes 2.0.0 - parse("<=1.2.3").to_s includes 1.2.3 - parse("<= 1.2.3").to_s excludes 1.2.3-0 - parse("> 1.2.3").to_s includes 999.0.0 - "<1.2.3-alpha" excludes 0.0.0-0 - parse("> 1.2.3").to_s excludes 1.2.3 - "> 1.2.3-alpha" includes 1.2.3-alpha0 - parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha.0 - "<1.2.3-alpha" includes 0.0.0 - "<1.2.3" excludes 1.2.3-0 - "> 1.2.3" excludes 1.2.3 - parse("<1.2.3-alpha").to_s excludes 1.2.3-alpha - parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha - parse("<=1.2.3-alpha").to_s includes 0.0.0 - parse(">1.2.3").to_s includes 999.0.0 - parse(">= 1.2.3").to_s excludes 1.2.3-0 - "<= 1.2.3" excludes 1.2.3-0 - parse("> 1.2.3-alpha").to_s includes 999.0.0 - "> 1.2.3" stringifies as >1.2.3 - parse("<= 1.2.3").to_s includes 0.0.0 - "> 1.2.3" excludes 1.2.4-0 - ">= 1.2.3-alpha" includes 1.2.3-alpha0 - "reasonably close" expressions - parse("~ 1.2.3").to_s excludes 1.3.0-0 - parse("~1.2.3").to_s includes 1.2.5 - "~ 1" includes 1.0.0 - "~1.2.3-alpha" includes 1.2.3-alpha - parse("~ 1").to_s excludes 2.0.0-0 - parse("~1").to_s excludes 0.999.999 - "~ 1.2.3" includes 1.2.3 - parse("~ 1.2.3").to_s includes 1.2.5 - "~1.2" excludes 1.2.0-0 - parse("~1.2.3").to_s includes 1.2.3 - parse("~ 1.2.3-alpha").to_s includes 1.2.3-alpha - parse("~ 1.2").to_s includes 1.2.999 - "~ 1.2" includes 1.2.999 - parse("~1.2.3").to_s excludes 1.2.3-0 - "~ 1.2" excludes 1.2.0-0 - parse("~ 1.2").to_s excludes 1.3.0-0 - "~1.2.3" includes 1.2.5 - "~ 1.2.3" excludes 1.3.0-0 - "~1.2" includes 1.2.999 - "~ 1.2.3-alpha" includes 1.2.3-alpha - parse("~1.2").to_s includes 1.2.0 - parse("~1.2.3-alpha").to_s includes 1.2.3-alpha - parse("~ 1.2.3").to_s excludes 1.2.3-0 - "~1.2.3" includes 1.2.3 - parse("~ 1.2").to_s includes 1.2.0 - parse("~ 1.2.3-alpha").to_s excludes 1.2.4-0 - parse("~1.2").to_s excludes 1.1.999 - "~1.2.3" excludes 1.3.0-0 - parse("~1.2.3").to_s excludes 1.2.2 - "~1.2.3-alpha" excludes 1.2.3-alph - "~1" stringifies as >=1.0.0 <2.0.0 - parse("~1.2.3-alpha").to_s excludes 1.2.4-0 - parse("~1").to_s excludes 2.0.0-0 - parse("~ 1.2").to_s excludes 1.1.999 - parse("~1.2").to_s excludes 1.2.0-0 - "~ 1" stringifies as >=1.0.0 <2.0.0 - parse("~ 1.2.3").to_s excludes 1.2.2 - "~1" excludes 1.0.0-0 - "~ 1.2" stringifies as >=1.2.0 <1.3.0 - parse("~1.2.3-alpha").to_s includes 1.2.3 - "~ 1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 - parse("~ 1").to_s includes 1.999.999 - parse("~1").to_s includes 1.0.0 - parse("~1.2").to_s excludes 1.3.0-0 - "~ 1.2.3-alpha" excludes 1.2.4-0 - "~1.2" excludes 1.3.0-0 - "~ 1" excludes 0.999.999 - "~ 1.2" includes 1.2.0 - parse("~ 1.2").to_s excludes 1.2.0-0 - "~1.2.3-alpha" includes 1.2.3 - parse("~ 1.2.3-alpha").to_s includes 1.2.3 - "~ 1.2.3" excludes 1.2.2 - parse("~ 1.2.3").to_s includes 1.2.3 - "~1.2" includes 1.2.0 - "~ 1.2.3-alpha" excludes 1.2.3-alph - "~1" excludes 2.0.0-0 - "~1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 - "~1.2.3" excludes 1.2.3-0 - "~1.2.3" excludes 1.2.2 - parse("~ 1").to_s excludes 0.999.999 - "~ 1.2.3" excludes 1.2.3-0 - parse("~ 1").to_s excludes 1.0.0-0 - "~ 1.2" excludes 1.1.999 - parse("~1.2").to_s includes 1.2.999 - "~ 1.2" excludes 1.3.0-0 - "~ 1.2.3-alpha" includes 1.2.3 - "~1.2.3-alpha" excludes 1.2.4-0 - parse("~1.2.3-alpha").to_s excludes 1.2.3-alph - "~ 1" includes 1.999.999 - "~ 1" excludes 1.0.0-0 - parse("~1.2.3").to_s excludes 1.3.0-0 - "~1.2" excludes 1.1.999 - "~ 1" excludes 2.0.0-0 - parse("~ 1.2.3-alpha").to_s excludes 1.2.3-alph - "~1.2.3" stringifies as >=1.2.3 <1.3.0 - "~1" includes 1.999.999 - "~1" includes 1.0.0 - parse("~ 1").to_s includes 1.0.0 - "~1" excludes 0.999.999 - "~ 1.2.3" stringifies as >=1.2.3 <1.3.0 - "~1.2" stringifies as >=1.2.0 <1.3.0 - parse("~1").to_s includes 1.999.999 - parse("~1").to_s excludes 1.0.0-0 - "~ 1.2.3" includes 1.2.5 - unioned expressions - parse("1 <=1.2.5").to_s includes 1.0.0 - parse("<1.0.0 >2.0.0").to_s excludes 0.0.0-0 - parse("1.2 <1.2.5").to_s excludes 1.2.5-0 - "<1.0.0 >2.0.0" excludes 0.0.0-0 - "1.2 <1.2.5" excludes 1.9.0 - "1.2 <1.2.5" excludes 1.2.5-0 - parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 3.0.0 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 3.0.0 - parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 3.0.0-0 - "<1.0.0 >2.0.0" excludes 0.0.0 - parse("1 <=1.2.5").to_s excludes 1.2.6-0 - "1 <=1.2.5" excludes 1.9.0 - parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 4.999.999 - "1 <=1.2.5" stringifies as >=1.0.0 <=1.2.5 - parse("1 <=1.2.5").to_s includes 1.2.5 - parse("<1.0.0 >2.0.0").to_s excludes 0.0.0 - "1 <=1.2.5" includes 1.0.0 - parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 2.999.999 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" stringifies as >=3.0.0 <5.0.0 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 3.0.0-0 - parse("1.2 <1.2.5").to_s includes 1.2.0 - parse("1.2 <1.2.5").to_s includes 1.2.4 - "1 <=1.2.5" excludes 1.0.0-0 - parse("1 <=1.2.5").to_s excludes 0.999.999 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 5.0.0-0 - parse("1.2 <1.2.5").to_s excludes 1.1.999 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 4.999.999 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 2.999.999 - "1.2 <1.2.5" stringifies as >=1.2.0 <1.2.5 - "1 <=1.2.5" excludes 0.999.999 - parse("1.2 <1.2.5").to_s excludes 1.9.0 - parse("1 <=1.2.5").to_s excludes 1.9.0 - "1 <=1.2.5" includes 1.2.5 - parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 5.0.0-0 - "1.2 <1.2.5" excludes 1.2.0-0 - "1 <=1.2.5" excludes 1.2.6-0 - "1.2 <1.2.5" includes 1.2.4 - "1.2 <1.2.5" includes 1.2.0 - "<1.0.0 >2.0.0" stringifies as <0.0.0 - parse("1.2 <1.2.5").to_s excludes 1.2.0-0 - parse("1 <=1.2.5").to_s excludes 1.0.0-0 - "1.2 <1.2.5" excludes 1.1.999 - -SemanticPuppet::Dependency::Graph - #add_graph_constraint - can create a new constraint on a graph - permits multiple graph constraints - #satisfies_graph? - returns false if the solution violates a graph constraint - returns false if the solution violates any graph constraint - returns true if the solution violates no graph constraints - #initialize - adds constraints for every key in the passed hash - implements the GraphNode protocol - can be called without arguments - adds the named dependencies for every key in the passed hash - #add_constraint - can create a new constraint on a module - permits multiple constraints against the same module name - #satisfies_dependency? - is not satisfied by modules it does not depend on - is not satisfied by modules that do not fulfill the constraint - is not satisfied by modules that do not fulfill all the constraints - is satisfied by modules that do fulfill all the constraints +Randomized with seed 21693 SemanticPuppet::Dependency + .query + with one source + queries the source for each dependency + queries the source for release information + populates all returned ModuleReleases with related dependencies + returns a ModuleRelease with the requested dependencies + queries the source for each dependency only once + populates the returned ModuleRelease with related dependencies + with multiple sources + resolves all dependencies against all sources + queries each source in turn + without sources + returns an unsatisfied ModuleRelease + .sources + can be modified by using #add_source + can be emptied by using #clear_sources + defaults to an empty list + is frozen .resolve - for a module with competing dependencies - that do not overlap - fails with an appropriate message - that overlap - returns the greatest release satisfying all dependencies - that violate graph constraints - that can be resolved - terminates - that cannot be resolved - fails with an appropriate message for a module without dependencies returns the greatest release matching the version range + when the query omits all stable versions + returns the greatest prerelease version matching the range when the query omits all versions fails with an appropriate message when the query includes both stable and prerelease versions returns the greatest stable release matching the range - when the query omits all stable versions - returns the greatest prerelease version matching the range + for a module with circular dependencies + that cannot be resolved + fails with an appropriate message + that can be resolved + terminates for a module with dependencies returns the greatest releases matching the dependency range - when the dependency has both stable and prerelease versions - returns the greatest stable release matching the range when the dependency cannot be satisfied fails with an appropriate message + when the dependency has both stable and prerelease versions + returns the greatest stable release matching the range when the dependency has no stable versions returns the greatest prerelease version matching the range - for a module with circular dependencies + that violate graph constraints that cannot be resolved fails with an appropriate message that can be resolved terminates + for a module with competing dependencies + that do not overlap + fails with an appropriate message + that overlap + returns the greatest release satisfying all dependencies for a module with dependencies that violate module constraints on the graph that can be resolved terminates that cannot be resolved fails with an appropriate message - .sources - can be emptied by using #clear_sources - can be modified by using #add_source - defaults to an empty list - is frozen - .query - without sources - returns an unsatisfied ModuleRelease - with multiple sources - resolves all dependencies against all sources - queries each source in turn - with one source - queries the source for release information - queries the source for each dependency only once - queries the source for each dependency - populates all returned ModuleReleases with related dependencies - returns a ModuleRelease with the requested dependencies - populates the returned ModuleRelease with related dependencies - -SemanticPuppet::Dependency::UnsatisfiableGraph - #sentence_from_list - with a list of one item - is expected to eql "foo" - with a list of more than three items - is expected to eql "foo, bar, baz, and quux" - with a list of two items - is expected to eql "foo and bar" - with a list of three items - is expected to eql "foo, bar, and baz" - #message - is expected to match /foo, bar, and baz/ SemanticPuppet::Dependency::ModuleRelease + #satisfied? + returns false when not all dependency versions have been satisified + returns false when no dependencies have been satisified + returns true when all dependencies have been satisified + returns false when not all dependencies have been satisified + returns true when there are no dependencies to satisfy + #dependency_names + lists the names of all the release's dependencies #<< marks matching dependencies as satisfied - does not mark mis-matching dependency versions as satisfied does not mark mis-matching dependency names as satisfied + does not mark mis-matching dependency versions as satisfied + #<=> + orders releases by name first + considers releases with lesser version numbers lesser + orders releases with different names lexographically + considers releases with greater version numbers greater #== considers a release different from something that is not a release + considers two equal releases to be equal considers two releases with different names to be different can compare a release with something that is not a release considers two releases with different versions to be different - considers two equal releases to be equal - #<=> - orders releases by name first - orders releases with different names lexographically - considers releases with lesser version numbers lesser - considers releases with greater version numbers greater - #satisfied? - returns false when no dependencies have been satisified - returns true when there are no dependencies to satisfy - returns false when not all dependency versions have been satisified - returns false when not all dependencies have been satisified - returns true when all dependencies have been satisified - #satisfies_dependency? - returns true when the release matches the dependency - returns false when the release does not match the dependency name - returns false when the release does not match the dependency version - returns false when there are no dependencies to satisfy #to_s is expected to =~ /1.2.3/ is expected to =~ /foobarbaz/ - #dependency_names - lists the names of all the release's dependencies + #satisfies_dependency? + returns false when there are no dependencies to satisfy + returns false when the release does not match the dependency name + returns true when the release matches the dependency + returns false when the release does not match the dependency version + +SemanticPuppet::Dependency::Graph + #initialize + can be called without arguments + adds the named dependencies for every key in the passed hash + adds constraints for every key in the passed hash + implements the GraphNode protocol + #add_constraint + permits multiple constraints against the same module name + can create a new constraint on a module + #add_graph_constraint + permits multiple graph constraints + can create a new constraint on a graph + #satisfies_graph? + returns true if the solution violates no graph constraints + returns false if the solution violates any graph constraint + returns false if the solution violates a graph constraint + #satisfies_dependency? + is not satisfied by modules that do not fulfill the constraint + is not satisfied by modules that do not fulfill all the constraints + is not satisfied by modules it does not depend on + is satisfied by modules that do fulfill all the constraints + +SemanticPuppet::Dependency::UnsatisfiableGraph + #sentence_from_list + with a list of two items + is expected to eql "foo and bar" + with a list of more than three items + is expected to eql "foo, bar, baz, and quux" + with a list of three items + is expected to eql "foo, bar, and baz" + with a list of one item + is expected to eql "foo" + #message + is expected to match /foo, bar, and baz/ + +SemanticPuppet::Dependency::GraphNode + #<=> + can be compared + #populate_children + saves all relevant nodes as its children + accepts a graph solution and populates it across all nodes + #satisfied + is unsatisfied when any dependencies are missing + is satisfied when all dependencies are fulfilled + is unsatisfied when no nodes have been appended + dependencies + are added by #add_dependency + are maintained in the #dependencies Hash + #<< + appends satisfying nodes to the dependencies + does not append unsatisfying nodes + does not append nodes with unknown names SemanticPuppet::Version + #== + should yield false when the major differs + should yield false when the prerelease differs + should yield false when compared to something that is not a Version + should yield false when the patch differs + should yield false when the minor differs + should yield true when comparing two equal instances .parse Spec v1.0.0 Section 4 - permits non-numeric prerelease identifiers with leading zeroes - permits numeric prerelease identifiers of zero - rejects empty prerelease versions rejects numeric prerelease identifiers with leading zeroes rejects prerelease identifiers with non-alphanumerics + permits numeric prerelease identifiers of zero + permits non-numeric prerelease identifiers with leading zeroes + rejects empty prerelease versions examples - 1.0.0-beta1 - 1.0.0-beta2 1.0.0-rc1 + 1.0.0-beta2 1.0.0-alpha1 + 1.0.0-beta1 Section 2 + rejects versions that contain too many parts + rejects versions that contain non-integers permits zeroes in version number parts rejects versions that contain too few parts - rejects versions that contain non-integers - rejects versions that contain too many parts examples - 1.10.0 - 1.11.0 1.9.0 + 1.11.0 + 1.10.0 Spec v2.0.0 Section 9 + permits numeric prerelease identifiers of zero rejects empty prerelease version identifiers + rejects empty prerelease versions + permits non-numeric prerelease identifiers with leading zeroes rejects numeric prerelease identifiers with leading zeroes rejects prerelease identifiers with non-alphanumerics - permits non-numeric prerelease identifiers with leading zeroes - rejects empty prerelease versions - permits numeric prerelease identifiers of zero examples - 1.0.0-0.3.7 - 1.0.0-alpha.1 1.0.0-alpha 1.0.0-x.7.z.92 - Section 10 - permits numeric build identifiers of zero - rejects build identifiers with non-alphanumerics - rejects empty build metadata - rejects empty build identifiers - permits numeric build identifiers with leading zeroes - permits non-numeric build identifiers with leading zeroes - examples - 1.0.0-beta+exp.sha.5114f85 - 1.0.0-alpha+001 - 1.0.0+20130313144700 + 1.0.0-0.3.7 + 1.0.0-alpha.1 Section 2 - rejects versions that contain too many parts - permits zeroes in version number parts rejects versions that contain negative integers - rejects versions that contain non-integers - rejects version numbers containing leading zeroes + permits zeroes in version number parts rejects versions that contain too few parts + rejects versions that contain too many parts + rejects version numbers containing leading zeroes + rejects versions that contain non-integers examples 1.10.0 1.9.0 1.11.0 - #next - with :patch - does not modify the original version - removes any build information - returns the next patch version - removes any prerelease information - with :major - resets the minor and patch versions to 0 - removes any build information - returns the next major version - does not modify the original version - removes any prerelease information - with :minor - resets the patch version to 0 - removes any prerelease information - returns the next minor version - does not modify the original version - removes any build information - #== - should yield false when the prerelease differs - should yield false when the major differs - should yield true when comparing two equal instances - should yield false when the minor differs - should yield false when the patch differs - should yield false when compared to something that is not a Version - .valid? - Spec v1.0.0 - Section 4 - permits non-numeric prerelease identifiers with leading zeroes - rejects numeric prerelease identifiers with leading zeroes - permits numeric prerelease identifiers of zero - rejects prerelease identifiers with non-alphanumerics - rejects empty prerelease versions - Section 2 - permits zeroes in version number parts - rejects versions that contain too few parts - rejects versions that contain too many parts - rejects versions that contain non-integers - Spec v2.0.0 Section 10 - rejects build identifiers with non-alphanumerics - permits numeric build identifiers with leading zeroes - rejects empty build identifiers - rejects empty build metadata permits non-numeric build identifiers with leading zeroes + rejects empty build identifiers + permits numeric build identifiers with leading zeroes permits numeric build identifiers of zero - Section 2 - rejects versions that contain too many parts - rejects versions that contain non-integers - rejects versions that contain too few parts - rejects version numbers containing leading zeroes - rejects versions that contain negative integers - permits zeroes in version number parts - Section 9 - permits numeric prerelease identifiers of zero - rejects numeric prerelease identifiers with leading zeroes - rejects prerelease identifiers with non-alphanumerics - permits non-numeric prerelease identifiers - rejects empty prerelease version identifiers - rejects empty prerelease versions - permits non-numeric prerelease identifiers with leading zeroes + rejects build identifiers with non-alphanumerics + rejects empty build metadata + examples + 1.0.0+20130313144700 + 1.0.0-alpha+001 + 1.0.0-beta+exp.sha.5114f85 #<=> + Spec v1.0.0 + Section 4 + sorted order Spec v2.0.0 Section 11 - comparisons without prereleases - sorted order comparisons against prereleases prereleases have lower precedence - comparisions between prereleases - build metadata does figure into equality + comparisons without prereleases sorted order + comparisions between prereleases + non-numeric identifiers have a higher precendence identical prereleases are equal - numeric identifiers sort numerically identifiers are parsed left-to-right - non-numeric identifiers sort ASCIIbetically - non-numeric identifiers have a higher precendence + sorted order build metadata does not figure into precendence + non-numeric identifiers sort ASCIIbetically + build metadata does figure into equality + numeric identifiers sort numerically larger identifier sets have precendence + .valid? Spec v1.0.0 + Section 2 + rejects versions that contain too few parts + rejects versions that contain non-integers + rejects versions that contain too many parts + permits zeroes in version number parts Section 4 - sorted order + rejects prerelease identifiers with non-alphanumerics + rejects empty prerelease versions + permits numeric prerelease identifiers of zero + permits non-numeric prerelease identifiers with leading zeroes + rejects numeric prerelease identifiers with leading zeroes + Spec v2.0.0 + Section 9 + permits non-numeric prerelease identifiers with leading zeroes + rejects numeric prerelease identifiers with leading zeroes + permits numeric prerelease identifiers of zero + rejects empty prerelease version identifiers + permits non-numeric prerelease identifiers + rejects empty prerelease versions + rejects prerelease identifiers with non-alphanumerics + Section 2 + rejects versions that contain too few parts + rejects versions that contain non-integers + rejects versions that contain negative integers + rejects version numbers containing leading zeroes + permits zeroes in version number parts + rejects versions that contain too many parts + Section 10 + rejects empty build identifiers + rejects empty build metadata + permits non-numeric build identifiers with leading zeroes + permits numeric build identifiers with leading zeroes + rejects build identifiers with non-alphanumerics + permits numeric build identifiers of zero + #next + with :major + does not modify the original version + resets the minor and patch versions to 0 + returns the next major version + removes any build information + removes any prerelease information + with :patch + does not modify the original version + removes any build information + removes any prerelease information + returns the next patch version + with :minor + returns the next minor version + removes any build information + removes any prerelease information + resets the patch version to 0 + does not modify the original version -SemanticPuppet::Dependency::GraphNode - #<=> - can be compared - #<< - does not append unsatisfying nodes - appends satisfying nodes to the dependencies - does not append nodes with unknown names - #populate_children - accepts a graph solution and populates it across all nodes - saves all relevant nodes as its children - dependencies - are maintained in the #dependencies Hash - are added by #add_dependency - #satisfied - is unsatisfied when no nodes have been appended - is unsatisfied when any dependencies are missing - is satisfied when all dependencies are fulfilled +SemanticPuppet::VersionRange + #intersection + cannot intersect with non-VersionRanges + between >=10.0.0 <5.0.0 & + 15.0.0 - 9.0.0 + 9.0.0 - 6.0.0 + 5.0.0 - 1.0.0 + >=5.0.0 <1.0.0 + 4.0.0 - 1.0.0 + 15.0.0 - 10.0.0 + >=10.0.0 <5.0.0 + 10.0.0 - 5.0.0 + 6.0.0 - 1.0.0 + 11.0.0 - 4.0.0 + >=7.0.0 <1.0.0 + 15.0.0 - 11.0.0 + is commutative + between >=10.0.0 <5.0.0 & >=7.0.0 <1.0.0 + between 10.0.0 - 5.0.0 & >=10.0.0 <5.0.0 + between >=10.0.0 <5.0.0 & 15.0.0 - 11.0.0 + between >=10.0.0 <5.0.0 & 15.0.0 - 9.0.0 + between >=10.0.0 <5.0.0 & >=5.0.0 <1.0.0 + between 10.0.0 - 5.0.0 & 4.0.0 - 1.0.0 + between >=10.0.0 <5.0.0 & 10.0.0 - 5.0.0 + between 10.0.0 - 5.0.0 & 15.0.0 - 9.0.0 + between >=10.0.0 <5.0.0 & 15.0.0 - 10.0.0 + between 10.0.0 - 5.0.0 & 10.0.0 - 5.0.0 + between >=10.0.0 <5.0.0 & 6.0.0 - 1.0.0 + between >=10.0.0 <5.0.0 & 5.0.0 - 1.0.0 + between 10.0.0 - 5.0.0 & 15.0.0 - 11.0.0 + between 10.0.0 - 5.0.0 & 11.0.0 - 4.0.0 + between 10.0.0 - 5.0.0 & 6.0.0 - 1.0.0 + between >=10.0.0 <5.0.0 & 4.0.0 - 1.0.0 + between 10.0.0 - 5.0.0 & >=5.0.0 <1.0.0 + between >=10.0.0 <5.0.0 & >=10.0.0 <5.0.0 + between 10.0.0 - 5.0.0 & 5.0.0 - 1.0.0 + between 10.0.0 - 5.0.0 & >=7.0.0 <1.0.0 + between >=10.0.0 <5.0.0 & 11.0.0 - 4.0.0 + between 10.0.0 - 5.0.0 & 15.0.0 - 10.0.0 + between 10.0.0 - 5.0.0 & 9.0.0 - 6.0.0 + between >=10.0.0 <5.0.0 & 9.0.0 - 6.0.0 + between 10.0.0 - 5.0.0 & + 15.0.0 - 10.0.0 + 9.0.0 - 6.0.0 + >=5.0.0 <1.0.0 + >=7.0.0 <1.0.0 + 11.0.0 - 4.0.0 + 5.0.0 - 1.0.0 + 15.0.0 - 9.0.0 + 6.0.0 - 1.0.0 + >=10.0.0 <5.0.0 + 4.0.0 - 1.0.0 + 10.0.0 - 5.0.0 + 15.0.0 - 11.0.0 + .parse + ored expressions + non-overlapping + returns nil on begin + parse("1.2.3 || 1.2.5").to_s includes 1.2.3 + returns nil on exclude_begin? + parse("1.2.3 || 1.2.5").to_s includes 1.2.5 + "1.2.3 || 1.2.5" excludes 1.2.5-0 + "1.2.3 || 1.2.5" includes 1.2.3 + returns nil on exclude_end? + parse("1.2.3 || 1.2.5").to_s excludes 1.2.4 + "1.2.3 || 1.2.5" includes 1.2.5 + returns nil on end + parse("1.2.3 || 1.2.5").to_s excludes 1.2.5-0 + parse("1.2.3 || 1.2.5").to_s excludes 1.2.3-0 + "1.2.3 || 1.2.5" excludes 1.2.3-0 + "1.2.3 || 1.2.5" stringifies as 1.2.3 || 1.2.5 + "1.2.3 || 1.2.5" excludes 1.2.4 + overlapping + ">=1.2.3 || 1.2.5" excludes 1.2.4-0 + parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 + parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.4-0 + ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 + ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 + parse(">=1.2.3 || 1.2.5").to_s includes 1.2.4 + ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 + ">=1.2.3 || 1.2.5" stringifies as >=1.2.3 + parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.6-0 + parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.6 + ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 + parse(">=1.2.3 || 1.2.5").to_s includes 1.2.3 + ">=1.2.3 || 1.2.5" includes 1.2.4 + ">=1.2.3 || 1.2.5" excludes 1.2.3-0 + parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.3-0 + ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 + parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 + ">=1.2.3 || 1.2.5" includes 1.2.3 + adjacent + parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.3 + parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.6-0 + parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.3-0 + returns nil on exclude_begin? + ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 + parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 + ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 + ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 + parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.6 + ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 + "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.3 + returns expected begin + "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.5 + "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.5-0 + parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.5-0 + parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.5 + ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 + returns nil on exclude_end? + "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.3-0 + parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 + "1.2.3 || 1.2.4 || 1.2.5" stringifies as >=1.2.3 <=1.2.5 + returns nil on end + unioned expressions + parse("1.2 <1.2.5").to_s excludes 1.9.0 + "1 <=1.2.5" includes 1.0.0 + parse("1 <=1.2.5").to_s includes 1.0.0 + "1 <=1.2.5" stringifies as >=1.0.0 <=1.2.5 + "1 <=1.2.5" excludes 1.9.0 + "1.2 <1.2.5" excludes 1.2.5-0 + "1.2 <1.2.5" excludes 1.2.0-0 + parse("1.2 <1.2.5").to_s excludes 1.2.5-0 + parse("1 <=1.2.5").to_s excludes 1.0.0-0 + "1.2 <1.2.5" includes 1.2.0 + "1 <=1.2.5" excludes 1.0.0-0 + "<1.0.0 >2.0.0" excludes 0.0.0-0 + parse("<1.0.0 >2.0.0").to_s excludes 0.0.0 + parse("1 <=1.2.5").to_s includes 1.2.5 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 4.999.999 + "1.2 <1.2.5" excludes 1.1.999 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 2.999.999 + parse("1.2 <1.2.5").to_s excludes 1.2.0-0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 3.0.0-0 + "1 <=1.2.5" excludes 1.2.6-0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 2.999.999 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 3.0.0 + "1 <=1.2.5" includes 1.2.5 + "1.2 <1.2.5" excludes 1.9.0 + "<1.0.0 >2.0.0" excludes 0.0.0 + parse("1.2 <1.2.5").to_s excludes 1.1.999 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 3.0.0-0 + "<1.0.0 >2.0.0" stringifies as <0.0.0 + "1 <=1.2.5" excludes 0.999.999 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 4.999.999 + parse("1.2 <1.2.5").to_s includes 1.2.4 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 5.0.0-0 + parse("1.2 <1.2.5").to_s includes 1.2.0 + parse("1 <=1.2.5").to_s excludes 1.9.0 + parse("<1.0.0 >2.0.0").to_s excludes 0.0.0-0 + "1.2 <1.2.5" includes 1.2.4 + parse("1 <=1.2.5").to_s excludes 0.999.999 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" stringifies as >=3.0.0 <5.0.0 + "1.2 <1.2.5" stringifies as >=1.2.0 <1.2.5 + parse("1 <=1.2.5").to_s excludes 1.2.6-0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 5.0.0-0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 3.0.0 + "reasonably close" expressions + "~ 1.2" excludes 1.3.0-0 + "~ 1.2.3-alpha" includes 1.2.3 + parse("~ 1.2").to_s includes 1.2.0 + "~ 1" excludes 0.999.999 + "~ 1.2" includes 1.2.0 + "~1.2.3" excludes 1.2.3-0 + "~ 1.2.3-alpha" excludes 1.2.4-0 + parse("~1.2.3-alpha").to_s includes 1.2.3-alpha + "~1" excludes 0.999.999 + "~ 1.2" excludes 1.2.0-0 + "~1.2" excludes 1.2.0-0 + parse("~1.2.3-alpha").to_s includes 1.2.3 + "~ 1.2.3" stringifies as >=1.2.3 <1.3.0 + "~1.2.3-alpha" excludes 1.2.4-0 + parse("~1.2").to_s excludes 1.1.999 + "~ 1.2.3" includes 1.2.3 + parse("~1").to_s includes 1.999.999 + "~1.2.3" excludes 1.3.0-0 + "~ 1.2.3" excludes 1.2.3-0 + parse("~1.2.3-alpha").to_s excludes 1.2.3-alph + "~ 1.2.3-alpha" includes 1.2.3-alpha + "~1.2.3-alpha" includes 1.2.3-alpha + "~1.2" includes 1.2.0 + "~ 1.2" excludes 1.1.999 + "~1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 + "~1.2" stringifies as >=1.2.0 <1.3.0 + parse("~ 1.2.3").to_s excludes 1.2.2 + parse("~1").to_s excludes 2.0.0-0 + "~ 1" includes 1.999.999 + parse("~ 1.2").to_s excludes 1.1.999 + "~ 1" includes 1.0.0 + parse("~ 1.2").to_s excludes 1.2.0-0 + "~ 1" stringifies as >=1.0.0 <2.0.0 + "~ 1" excludes 2.0.0-0 + "~1.2.3" includes 1.2.5 + "~ 1.2.3" excludes 1.2.2 + parse("~ 1").to_s includes 1.999.999 + "~ 1" excludes 1.0.0-0 + "~1" excludes 2.0.0-0 + "~1.2" excludes 1.1.999 + "~1.2.3-alpha" excludes 1.2.3-alph + parse("~ 1.2.3-alpha").to_s excludes 1.2.3-alph + parse("~ 1.2").to_s excludes 1.3.0-0 + parse("~1.2.3").to_s excludes 1.3.0-0 + "~ 1.2.3-alpha" excludes 1.2.3-alph + parse("~1.2").to_s excludes 1.3.0-0 + parse("~ 1.2.3-alpha").to_s includes 1.2.3 + "~1.2.3" stringifies as >=1.2.3 <1.3.0 + parse("~1.2").to_s includes 1.2.999 + "~1.2.3" includes 1.2.3 + parse("~1.2.3").to_s excludes 1.2.2 + "~1" stringifies as >=1.0.0 <2.0.0 + parse("~ 1.2.3").to_s includes 1.2.3 + "~ 1.2" stringifies as >=1.2.0 <1.3.0 + parse("~ 1").to_s includes 1.0.0 + "~ 1.2" includes 1.2.999 + parse("~1.2.3-alpha").to_s excludes 1.2.4-0 + parse("~ 1.2.3-alpha").to_s includes 1.2.3-alpha + parse("~1").to_s includes 1.0.0 + "~1" excludes 1.0.0-0 + parse("~1.2.3").to_s includes 1.2.5 + "~1.2.3-alpha" includes 1.2.3 + parse("~1").to_s excludes 0.999.999 + "~1.2.3" excludes 1.2.2 + parse("~ 1.2.3-alpha").to_s excludes 1.2.4-0 + parse("~ 1").to_s excludes 1.0.0-0 + parse("~1.2").to_s excludes 1.2.0-0 + "~1" includes 1.999.999 + "~ 1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 + parse("~ 1.2.3").to_s excludes 1.3.0-0 + "~ 1.2.3" excludes 1.3.0-0 + "~ 1.2.3" includes 1.2.5 + parse("~ 1.2.3").to_s excludes 1.2.3-0 + parse("~1.2.3").to_s includes 1.2.3 + "~1" includes 1.0.0 + parse("~ 1").to_s excludes 0.999.999 + parse("~1").to_s excludes 1.0.0-0 + parse("~ 1").to_s excludes 2.0.0-0 + parse("~1.2.3").to_s excludes 1.2.3-0 + parse("~1.2").to_s includes 1.2.0 + "~1.2" includes 1.2.999 + parse("~ 1.2").to_s includes 1.2.999 + "~1.2" excludes 1.3.0-0 + parse("~ 1.2.3").to_s includes 1.2.5 + loose version expressions + "1" stringifies as >=1.0.0 <2.0.0 + "1.2" excludes 1.3.0-0 + "1.2.3" excludes 1.2.3-alpha + parse("1.2.3-alpha").to_s excludes 1.2.3-beta + parse("1.2").to_s excludes 1.3.0-0 + parse("1.X").to_s includes 1.999.0 + parse("1").to_s excludes 2.0.0-0 + "1" includes 1.999.0 + "1.x" excludes 0.999.999 + parse("1.x").to_s excludes 0.999.999 + "1.2.x" includes 1.2.0 + parse("1.x").to_s includes 1.0.0 + parse("1.2").to_s includes 1.2.999 + "1.2.3" excludes 1.2.2 + parse("1.2.3").to_s includes 1.2.3 + parse("1.x").to_s includes 1.999.0 + parse("1.x").to_s excludes 1.0.0-alpha + "1.X" stringifies as >=1.0.0 <2.0.0 + parse("1.2.3").to_s excludes 1.2.3-alpha + parse("1.2.X").to_s excludes 1.1.999 + parse("1.2.X").to_s excludes 1.3.0-0 + "1" excludes 2.0.0-0 + "1.2.x" excludes 1.3.0-0 + parse("1.2.3").to_s excludes 1.2.2 + parse("1.2.X").to_s includes 1.2.0 + "1.x" includes 1.0.0 + parse("1.X").to_s excludes 0.999.999 + "1.X" excludes 1.0.0-alpha + "1.2.x" stringifies as >=1.2.0 <1.3.0 + parse("1.2").to_s excludes 1.1.999 + parse("1.x").to_s excludes 2.0.0-0 + "1.x" stringifies as >=1.0.0 <2.0.0 + parse("1.2.x").to_s includes 1.2.0 + parse("1.2.3").to_s excludes 1.2.4-alpha + parse("1.X").to_s excludes 2.0.0-0 + "1.2.3-alpha" stringifies as 1.2.3-alpha + "1.x" includes 1.999.0 + "1.2.3-alpha" excludes 1.2.3-beta + "1.2.x" excludes 1.1.999 + "1.2.3" stringifies as 1.2.3 + "1.2.x" includes 1.2.999 + "1.x" excludes 2.0.0-0 + "1.2.3" includes 1.2.3 + parse("1.2.3-alpha").to_s includes 1.2.3-alpha + "1.2" includes 1.2.0 + parse("1.2.x").to_s excludes 1.1.999 + parse("1.X").to_s excludes 1.0.0-alpha + "1.2.X" excludes 1.2.0-alpha + parse("1.2.x").to_s includes 1.2.999 + parse("1.2.x").to_s excludes 1.3.0-0 + parse("1.2.X").to_s includes 1.2.999 + "1" excludes 0.999.999 + "1.2.X" excludes 1.1.999 + parse("1.2").to_s excludes 1.2.0-alpha + "1.2.X" includes 1.2.0 + "1.2" stringifies as >=1.2.0 <1.3.0 + "1.X" excludes 0.999.999 + "1.2.x" excludes 1.2.0-alpha + "1.x" excludes 1.0.0-alpha + "1.2.3-alpha" includes 1.2.3-alpha + "1.X" includes 1.999.0 + parse("1.2.3-alpha").to_s excludes 1.2.3-999 + "1.2.X" excludes 1.3.0-0 + "1.2.3-alpha" excludes 1.2.3-999 + "1" includes 1.0.0 + parse("1").to_s excludes 1.0.0-alpha + parse("1.2.X").to_s excludes 1.2.0-alpha + "1.2.X" includes 1.2.999 + "1.2" includes 1.2.999 + "1.X" excludes 2.0.0-0 + parse("1").to_s includes 1.999.0 + "1.2.X" stringifies as >=1.2.0 <1.3.0 + parse("1").to_s includes 1.0.0 + parse("1.2.x").to_s excludes 1.2.0-alpha + "1" excludes 1.0.0-alpha + "1.2" excludes 1.1.999 + "1.2" excludes 1.2.0-alpha + "1.2.3" excludes 1.2.4-alpha + "1.X" includes 1.0.0 + parse("1").to_s excludes 0.999.999 + parse("1.2").to_s includes 1.2.0 + parse("1.X").to_s includes 1.0.0 + invalid expressions + raise an appropriate exception + open-ended expressions + parse(">1.2.3-alpha").to_s excludes 1.2.3-alpha + "<=1.2.3-alpha" excludes 0.0.0-0 + parse("<= 1.2.3-alpha").to_s includes 1.2.3-alpha + ">= 1.2.3" stringifies as >=1.2.3 + parse("<=1.2.3-alpha").to_s excludes 0.0.0-0 + parse(">= 1.2.3-alpha").to_s excludes 1.2.4-alpha + ">=1.2.3" includes 999.0.0 + "> 1.2.3" includes 999.0.0 + "<=1.2.3-alpha" includes 0.0.0 + "> 1.2.3-alpha" excludes 1.2.3-alpha + parse(">= 1.2.3").to_s excludes 1.2.2 + parse("< 1.2.3-alpha").to_s includes 1.2.3-alph + "< 1.2.3" excludes 0.0.0-0 + ">1.2.3-alpha" includes 999.0.0 + "> 1.2.3-alpha" includes 1.2.3-alpha0 + parse("< 1.2.3-alpha").to_s includes 0.0.0 + parse("< 1.2.3-alpha").to_s excludes 2.0.0 + parse(">=1.2.3-alpha").to_s includes 999.0.0 + parse(">1.2.3-alpha").to_s includes 1.2.3-alpha0 + "<=1.2.3" includes 0.0.0 + ">1.2.3-alpha" includes 1.2.3-alpha0 + parse(">1.2.3-alpha").to_s includes 1.2.3-alpha.0 + ">=1.2.3" stringifies as >=1.2.3 + parse("<1.2.3").to_s includes 0.0.0 + parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha0 + parse("< 1.2.3-alpha").to_s excludes 1.2.3-alpha + ">= 1.2.3" excludes 1.2.3-0 + parse("> 1.2.3-alpha").to_s includes 999.0.0 + parse(">= 1.2.3").to_s excludes 1.2.3-0 + parse("< 1.2.3").to_s includes 1.2.2 + "<1.2.3-alpha" excludes 1.2.3-alpha + "<=1.2.3-alpha" excludes 1.2.3-alpha0 + parse(">1.2.3").to_s includes 999.0.0 + ">=1.2.3-alpha" includes 1.2.3-alpha + ">= 1.2.3-alpha" stringifies as >=1.2.3-alpha + parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha + ">= 1.2.3-alpha" includes 999.0.0 + ">=1.2.3-alpha" excludes 1.2.3-alph + "<1.2.3-alpha" excludes 2.0.0 + ">1.2.3-alpha" stringifies as >1.2.3-alpha + parse("<=1.2.3").to_s excludes 1.2.3-0 + "<= 1.2.3" includes 1.2.3 + parse("<= 1.2.3").to_s excludes 0.0.0-0 + "<= 1.2.3-alpha" excludes 1.2.3-alpha.0 + "<=1.2.3" includes 1.2.3 + "<=1.2.3-alpha" excludes 1.2.3-alphb + parse(">=1.2.3").to_s excludes 1.2.3-0 + "<= 1.2.3-alpha" includes 1.2.3-alpha + "< 1.2.3-alpha" excludes 0.0.0-0 + "< 1.2.3" stringifies as <1.2.3 + parse(">1.2.3").to_s excludes 1.2.4-0 + parse("<=1.2.3-alpha").to_s includes 1.2.3-alpha + ">1.2.3" excludes 1.2.4-0 + ">= 1.2.3-alpha" excludes 1.2.3-alph + "<1.2.3" excludes 2.0.0 + parse("< 1.2.3-alpha").to_s excludes 0.0.0-0 + "<1.2.3-alpha" includes 1.2.3-alph + "> 1.2.3" excludes 1.2.3 + ">=1.2.3" excludes 1.2.3-0 + "<=1.2.3-alpha" excludes 1.2.3-alpha.0 + "<1.2.3-alpha" includes 0.0.0 + parse("<1.2.3-alpha").to_s excludes 0.0.0-0 + "<= 1.2.3-alpha" excludes 1.2.3-alpha0 + "> 1.2.3-alpha" includes 999.0.0 + "<1.2.3" includes 1.2.2 + "<= 1.2.3-alpha" excludes 0.0.0-0 + parse("< 1.2.3").to_s excludes 0.0.0-0 + parse("<=1.2.3-alpha").to_s includes 0.0.0 + "<1.2.3" excludes 0.0.0-0 + parse("<1.2.3-alpha").to_s excludes 1.2.3-alpha + ">1.2.3" excludes 1.2.3 + parse("> 1.2.3-alpha").to_s excludes 1.2.3-alpha + parse("<1.2.3-alpha").to_s includes 1.2.3-alph + "<= 1.2.3-alpha" stringifies as <=1.2.3-alpha + parse("<=1.2.3").to_s includes 1.2.3 + parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha.0 + "<1.2.3-alpha" excludes 0.0.0-0 + ">= 1.2.3" excludes 1.2.2 + parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha0 + "<1.2.3" excludes 1.2.3-0 + "<= 1.2.3-alpha" excludes 1.2.3-alphb + parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha.0 + parse(">= 1.2.3-alpha").to_s excludes 1.2.3-alph + parse("<1.2.3").to_s excludes 2.0.0 + parse("<=1.2.3-alpha").to_s excludes 1.2.3-alphb + ">= 1.2.3-alpha" includes 1.2.3-alpha + "<= 1.2.3" includes 0.0.0 + parse(">= 1.2.3").to_s includes 999.0.0 + "<1.2.3" includes 0.0.0 + parse(">=1.2.3-alpha").to_s excludes 1.2.4-alpha + parse(">=1.2.3-alpha").to_s excludes 1.2.3-alph + "< 1.2.3-alpha" excludes 2.0.0 + parse("<1.2.3-alpha").to_s includes 0.0.0 + ">=1.2.3" excludes 1.2.2 + parse("<=1.2.3").to_s excludes 0.0.0-0 + "< 1.2.3-alpha" includes 0.0.0 + "<=1.2.3" excludes 0.0.0-0 + "< 1.2.3" includes 1.2.2 + parse("> 1.2.3").to_s excludes 1.2.3 + "<= 1.2.3" stringifies as <=1.2.3 + parse("<=1.2.3").to_s includes 0.0.0 + parse("<= 1.2.3").to_s includes 1.2.3 + parse(">=1.2.3").to_s includes 999.0.0 + "> 1.2.3" stringifies as >1.2.3 + ">1.2.3" stringifies as >1.2.3 + parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha0 + ">=1.2.3-alpha" excludes 1.2.4-alpha + parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alphb + "> 1.2.3" excludes 1.2.4-0 + parse("< 1.2.3").to_s includes 0.0.0 + "<=1.2.3" stringifies as <=1.2.3 + "<=1.2.3-alpha" stringifies as <=1.2.3-alpha + ">=1.2.3-alpha" includes 999.0.0 + "< 1.2.3-alpha" includes 1.2.3-alph + "<=1.2.3" excludes 1.2.3-0 + ">1.2.3" includes 999.0.0 + parse("<= 1.2.3").to_s includes 0.0.0 + "<= 1.2.3-alpha" includes 0.0.0 + parse("<1.2.3").to_s excludes 1.2.3-0 + parse("<= 1.2.3-alpha").to_s includes 0.0.0 + ">=1.2.3-alpha" stringifies as >=1.2.3-alpha + parse("<= 1.2.3").to_s excludes 1.2.3-0 + parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha0 + "<1.2.3" stringifies as <1.2.3 + parse("< 1.2.3").to_s excludes 2.0.0 + ">1.2.3-alpha" excludes 1.2.3-alpha + ">= 1.2.3-alpha" includes 1.2.3-alpha0 + "<1.2.3-alpha" stringifies as <1.2.3-alpha + "<= 1.2.3" excludes 0.0.0-0 + parse("<1.2.3").to_s excludes 0.0.0-0 + parse(">1.2.3").to_s excludes 1.2.3 + "<=1.2.3-alpha" includes 1.2.3-alpha + "< 1.2.3" excludes 1.2.3-0 + parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha + parse("> 1.2.3").to_s excludes 1.2.4-0 + "< 1.2.3" excludes 2.0.0 + parse(">1.2.3-alpha").to_s includes 999.0.0 + ">=1.2.3-alpha" includes 1.2.3-alpha0 + "> 1.2.3-alpha" stringifies as >1.2.3-alpha + parse(">=1.2.3").to_s excludes 1.2.2 + parse("<1.2.3").to_s includes 1.2.2 + ">1.2.3-alpha" includes 1.2.3-alpha.0 + "<= 1.2.3" excludes 1.2.3-0 + ">= 1.2.3-alpha" excludes 1.2.4-alpha + "> 1.2.3-alpha" includes 1.2.3-alpha.0 + parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha0 + parse("<1.2.3-alpha").to_s excludes 2.0.0 + parse(">= 1.2.3-alpha").to_s includes 999.0.0 + "< 1.2.3" includes 0.0.0 + ">= 1.2.3" includes 999.0.0 + "< 1.2.3-alpha" excludes 1.2.3-alpha + parse("> 1.2.3").to_s includes 999.0.0 + parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha.0 + parse("<= 1.2.3-alpha").to_s excludes 0.0.0-0 + parse("< 1.2.3").to_s excludes 1.2.3-0 + "< 1.2.3-alpha" stringifies as <1.2.3-alpha + inclusive range expressions + "1.2.3 - 1.3.4-alpha" includes 1.2.3 + parse("1.2.3 - 1.3.4").to_s excludes 1.2.3-0 + "1.2.3 - 1.3.4-alpha" excludes 1.3.4-alpha0 + "1.2.3 - 1.3.4-alpha" stringifies as >=1.2.3 <=1.3.4-alpha + "1.2.3-alpha - 1.3.4" stringifies as >=1.2.3-alpha <=1.3.4 + parse("1.2.3-alpha - 1.3.4").to_s excludes 1.2.3-alph + parse("1.2.3 - 1.3.4").to_s includes 1.3.4 + parse("1.2.3-alpha - 1.3.4").to_s excludes 1.3.5-0 + "1.2.3-alpha - 1.3.4-alpha" includes 1.2.3-alpha + parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.5 + "1.2.3 - 1.3.4-alpha" includes 1.3.4-alpha + "1.2.3-alpha - 1.3.4-alpha" excludes 1.2.3-alph + "1.2.3-alpha - 1.3.4" excludes 1.2.3-alph + parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.5 + parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.3.4-alpha + "1.2.3 - 1.3.4-alpha" excludes 1.2.2 + parse("1.2.3 - 1.3.4-alpha").to_s includes 1.3.4-alpha + "1.2.3 - 1.3.4-alpha" excludes 1.2.3-0 + "1.2.3 - 1.3.4" includes 1.2.3 + parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 + "1.2.3 - 1.3.4" excludes 1.3.5-0 + parse("1.2.3-alpha - 1.3.4").to_s includes 1.2.3-alpha + "1.2.3 - 1.3.4" excludes 1.2.2 + "1.2.3-alpha - 1.3.4-alpha" stringifies as >=1.2.3-alpha <=1.3.4-alpha + "1.2.3 - 1.3.4" stringifies as >=1.2.3 <=1.3.4 + "1.2.3-alpha - 1.3.4-alpha" includes 1.3.4-alpha + "1.2.3 - 1.3.4-alpha" excludes 1.3.5 + "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.5 + "1.2.3-alpha - 1.3.4" includes 1.2.3-alpha + parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.2.3-alpha + "1.2.3-alpha - 1.3.4" includes 1.3.4 + parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.3-0 + parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 + parse("1.2.3 - 1.3.4").to_s includes 1.2.3 + parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.2 + parse("1.2.3 - 1.3.4-alpha").to_s includes 1.2.3 + "1.2.3-alpha - 1.3.4" excludes 1.3.5-0 + parse("1.2.3-alpha - 1.3.4").to_s includes 1.3.4 + parse("1.2.3 - 1.3.4").to_s excludes 1.2.2 + "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.4-alpha0 + parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.2.3-alph + parse("1.2.3 - 1.3.4").to_s excludes 1.3.5-0 + "1.2.3 - 1.3.4" excludes 1.2.3-0 + "1.2.3 - 1.3.4" includes 1.3.4 + The version + 2.0.0 should not be below range 1.0.0 - 2.0.0 + 1.1.0 should be below range 1.2.x + 0.1.97 should not be below range >=0.1.97 + 1.1.0 should be above range ~1.0 + 1.2.3 should not be below range 1.2.x || 2.x + 5.0.0-0 should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) + 1.0.0-beta should be below range > 1 + 2.2.3 should be above range 1.0.0 - 2.0.0 + 1.2.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) + 0.2.4 should not be below range >=0.2.3 <=0.2.4 + 1.2.3 should not be below range 1.2.* || 2.* + 0.2.4 should be below range ~>1 + 1.0.0 should be below range >1 + 1.2.3 should not be below range 1.2.x + 1.0.0-beta should not be below range ~1.0.0-alpha + 1.1.3 should be below range 1.2.x || 2.x + 2.1.2 should not be above range 2(>=2.0.0 <3.0.0) + 0.0.0-beta should be below range 1 + 2.0.0-beta should be above range 1 + 3.0.0 should be above range 2 + 3.1.3 should be above range 2.x.x + 1.9999.9999 should not be below range <2.0.0 + 1.0.0 should be above range <1 + 0.2.4 should not be below range >=0.2.3 || <0.0.1 + 0.7.0-asdf should not be above range >=0.7.x(>=0.7.0) + 0.6.2 should not be above range <=0.7.x(<0.8.0) + 0.2.3 should be below range ~1 + 1.1.0 should not be below range >= 1.0.0 + 3.1.3 should be above range 1.2.x || 2.x + 1.0.1 should not be below range > 1.0.0 + 3.2.3 should be above range ~> 1 + 2.9999.9999 should be above range <2.0.0 + 5.0.0-0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 + 1.1.1 should be below range >=2.0.0 + 1.9999.9999 should not be below range <=2.0.0 + 1.9999.9999 should not be above range < 2.0.0(<2.0.0) + 3.2.9 should be above range <=2.0.0 + 1.1.3 should be below range 2.x.x + 0.6.1-pre should be above range ~v0.5.4-pre + 0.7.0-asdf should be below range =0.7.x + 1.2.3-foo should not be above range *(*) + 0.5.4 should not be below range ~v0.5.4-pre + 2.0.0 should be above range <2.0.0 + 1.0.1 should be above range 1.0.0 + 1.0.1 should not be above range >= 1.0.0(>=1.0.0) + 2.3.1 should not be below range 2.3 + 0.9.9 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) + 1.0.0 should not be above range >= 1(>=1.0.0) + 0.5.4-alpha should be below range ~v0.5.4-pre + 0.2.4 should not be above range >=0.2.3 <=0.2.4(>=0.2.3 <=0.2.4) + 1.3.0 should be above range 1.2.x + 1.1.9999 should be below range 1.2.* || 2.* + 0.6.1-0 should be below range ~0.6.1-1 + 2.2.3 should be above range ~>1 + 1.0.0-beta should be above range < 1 + 0.6.0-asdf should be below range =0.7.x + 2.2.4 should be above range ~>1 + 0.0.0 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) + 0.2.9 should not be above range <= 2.0.0(<=2.0.0) + 1.2.3 should not be above range *(*) + 2.0.0-beta should be above range 1 + 2.1.3 should not be below range 1.2.x || 2.x + 0.0.1 should be below range 1.0.0 - 2.0.0 + 1.9999.9999 should be below range 2 + 1.0.0-beta should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 + 3.5.0 should not be above range ^0.1.0 || ~3.0.1 || >4 <=5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) + 0.7.1-1 should be above range ~0.6.1-1 + 1.0.1 should not be above range >1.0.0(>1.0.0) + 0.2.5 should not be below range >0.2.3 >0.2.4 <=0.2.5 + 1.2.3 should not be above range 1.2.x(>=1.2.0 <1.3.0) + 1.0.0 should be below range 2.x.x + 1.1.3 should be below range 1.2.* + 1.0.2 should not be above range ~1.0(>=1.0.0 <1.1.0) + 2.2.1 should be below range 2.3 + 0.1.97 should not be above range >=0.1.97(>=0.1.97) + 2.0.0 should not be below range ^1.0.0 || ~2.0.1 + 2.2.9 should be above range <2.0.0 + 2.3.1 should not be above range 2.3(>=2.3.0 <2.4.0) + 1.1.0 should not be above range >= 1.0.0(>=1.0.0) + 0.7.2 should be above range <0.7.x + 1.0.0 should not be below range >= 1 + 4.0.0 should be above range 1.2.* || 2.* + 1.0.1 should not be below range >1.0.0 + 0.2.4 should not be above range >=*(>=0.0.0) + 1.2.0 should be above range <1.2 + 3.0.0 should be above range 1.2.x || 2.x + 1.1.0 should not be below range >=1.0.0 + 1.2.3 should not be below range ~>1 + 1.0.0 should not be below range + 0.6.1-1 should not be below range ~0.6.1-1 + 0.7.0-asdf should be below range >=0.7.x + 0.1.20 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) + 1.1.1 should not be above range < 1.2(<1.2.0) + 0.2.9 should not be above range < 2.0.0(<2.0.0) + 0.0.0 should be below range 1.0.0 + 2.1.1 should be above range <=2.0.0 + 1.0.0 should not be below range >= 1.0.0 + 2.3.0 should be below range ~2.4 + 1.1.3 should be below range 1.2.* || 2.* + 1.2.9 should be below range >2.0.0 + 0.6.2 should not be below range <=0.7.x + 1.2.3 should not be below range 1.2.* + 2.0.0 should not be below range <=2.0.0 + 0.7.2 should not be below range >=0.7.x + 0.0.0-0 should not be above range ^1(>=1.0.0 <2.0.0) + 1.2.3 should not be below range * + 0.2.9 should not be above range <2.0.0(<2.0.0) + 1.2.9 should be below range >=2.0.0 + 2.3.2 should be below range ~>3.2.1 + 1.3.3 should be above range 1.2.* + 2.0.0 should not be below range <= 2.0.0 + 0.7.2 should not be above range >=0.7.x(>=0.7.0) + 1.0.0-beta should be below range 2 + 2.3.0 should be below range ~2.4 + 2.5.0 should be above range ~2.4 + 0.8.2 should be above range =0.7.x + 1.2.3 should not be above range 1.2.*(>=1.2.0 <1.3.0) + 2.0.1 should be above range 1.0.0 - 2.0.0 + 3.2.0 should be below range ~>3.2.1 + 1.3.4 should not be below range || + 0.0.0 should be below range ~1.0 + 2.3.5 should be below range ~2.4 + 1.9999.9999 should not be above range <=2.0.0(<=2.0.0) + 2.1.3 should not be below range 1.2.* || 2.* + 1.0.1 should not be below range >= 1.0.0 + 0.0.0 should not be below range >=0.2.3 || <0.0.1 + 0.2.9 should not be below range <2.0.0 + 0.7.0-asdf should not be above range =0.7.x(>=0.7.0 <0.8.0) + 2.9999.9999 should be above range <=2.0.0 + 3.5.0 should not be below range ^0.1.0 || ~3.0.1 || >4 <=5.0.0 + 1.0.0 should not be above range 1.0.0(1.0.0) + 1.0.0 should not be above range (*) + 1.9999.9999 should not be above range <2.0.0(<2.0.0) + 0.1.2 should be below range ~1.0 + 5.0.1 should be above range 2.*.* + 1.1.0 should not be below range > 1.0.0 + 0.7.0 should be above range <0.7.x + 1.9999.9999 should not be below range < 2.0.0 + 1.3.3 should be above range 1.2.* + 3.0.0 should be above range 2.x.x + 2.2.9 should be above range <=2.0.0 + 1.2.3 should not be below range x + 1.0.0-beta should not be above range 1(>=1.0.0 <2.0.0) + 1.2.3 should not be above range ~> 1(>=1.0.0 <2.0.0) + 2.4.5 should not be above range ~2.4(>=2.4.0 <2.5.0) + 1.0.0-beta should be below range 1 + 2.2.2 should be below range 2.3 + 3.3.0 should be above range ~>3.2.1 + 1.2.1 should be below range ~1.2.2 + 3.1.2 should be above range 2 + 1.2.5 should be above range 0.1.20 || 1.2.4 + 1.2.4 should not be above range 0.1.20 || >1.2.4(0.1.20 || >1.2.4) + 1.0.1 should not be below range >=1.0.0 + 0.6.0 should be below range >=0.7.x + 1.2.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) + 0.2.4 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) + 0.6.0 should be above range ~v0.5.4-pre + 1.1.0 should not be above range >1.0.0(>1.0.0) + 1.0.0 should not be above range >= 1.0.0(>=1.0.0) + 1.0.0 should not be below range 1.0.0 + 2.9.9 should not be below range 1.0.0 - 2.0.0 + 2.4.5 should not be below range ~2.4 + 1.0.0-beta should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) + 0.0.1 should be below range 1.0.0 + 2.0.0 should not be above range ^1.0.0 || ~2.0.1(>=1.0.0 <2.0.0 || >=2.0.1 <2.1.0) + 2.0.0 should not be above range ^3.0.0(>=3.0.0 <4.0.0) + 0.8.0-asdf should be above range =0.7.x + 1.2.4 should not be below range 0.1.20 || >1.2.4 + 1.2.3 should not be above range ~1(>=1.0.0 <2.0.0) + 0.7.2 should not be below range =0.7.x + 0.6.1-1 should not be above range ~0.6.1-1(>=0.6.1-1 <0.7.0) + 0.8.0 should be above range =0.7.x + 1.0.0 should not be below range >=1.0.0 + 0.1.20 should not be below range 0.1.20 || 1.2.4 + 0.2.9 should not be below range <= 2.0.0 + 2.2.3 should be above range ~1 + 1.1.3 should be below range 2.*.* + 1.0.0 should be below range 2 + 1.0.2 should not be below range ~1.0 + 1.0.0 should not be above range >=1.0.0(>=1.0.0) + 2.0.0 should be above range 1.0.0 + 1.0.1-beta1 should be above range 1.0.0 + 1.2.3 should not be above range *(*) + 0.5.5 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) + 1.2.4 should not be below range 0.1.20 || 1.2.4 + 2.5.5 should be above range ~2.4 + 1.1.0 should not be below range ~ 1.0 + 1.2.0 should be below range >1.2 + 1.0.0 should not be below range =0.1.0 + 1.1.1 should not be above range <1.2(<1.2.0) + 2.5.0 should be above range ~2.4 + 1.2.1 should be below range > 1.2 + 2.0.0 should not be above range <=2.0.0(<=2.0.0) + 1.2.3 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) + 2.0.0 should not be above range <= 2.0.0(<=2.0.0) + 4.0.0 should not be below range ^3.0.0 + 1.2.9 should be below range >=2.0.0 + 1.0.0 should be below range 1.2.x || 2.x + 2.1.3 should not be below range 2.x.x + 1.2.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) + 1.1.0 should not be above range >=1.0.0(>=1.0.0) + 0.2.3 should be below range 1.0.0 - 2.0.0 + 2.4.0 should not be below range ~2.4 + 1.9999.9999 should be below range >=2.0.0 + 1.1.0 should be above range ~ 1.0 + 1.2.3 should not be below range 0.1.20 || 1.2.4 + 1.1.3 should be below range 1.2.x + 0.2.3 should be below range ~1 + 2.4.1 should be above range 2.3 + 1.2.3 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) + 2.0.0 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) + 2.4.0 should not be above range ~2.4(>=2.4.0 <2.5.0) + 1.0.2 should not be below range ~ 1.0 + 1.1.0 should not be below range >1.0.0 + 0.6.2 should be below range >=0.7.x + 1.1.2 should be above range ~1.0 + 1.3.4 should not be above range ||(*) + 1.0.1 should be below range 2.*.* + 1.0.1 should not be above range > 1.0.0(>1.0.0) + 1.2.3 should not be below range * + 1.0.0-0 should be below range ^1 + 1.1.1 should not be below range < 1.2 + 1.9999.9999 should not be above range <= 2.0.0(<=2.0.0) + 1.2.1 should be above range < 1.2 + 3.3.2 should be above range ~>3.2.1 + 0.1.5 should be below range 0.1.20 || 1.2.4 + 0.5.4-alpha should be below range ~v0.5.4-pre + 0.6.2 should be below range =0.7.x + 2.0.0 should be below range >2.0.0 + 2.4.2 should be above range 2.3 + 2.2.3 should be above range ~1 + 0.6.0 should be below range =0.7.x + 2.1.3 should not be below range 2.*.* + 1.2.3 should not be above range x(*) + 0.2.3 should not be below range >=0.2.3 || <0.0.1 + 0.5.4 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) + 0.7.2 should not be above range =0.7.x(>=0.7.0 <0.8.0) + 0.2.9 should not be below range < 2.0.0 + 1.1.1 should not be below range <1.2 + 1.0.0-beta should not be below range ^1.0.0-alpha + 3.2.2 should not be above range ~>3.2.1(>=3.2.1 <3.3.0) + 2.1.3 should not be above range 2.x.x(>=2.0.0 <3.0.0) + 1.2.1 should be below range ~1.2.2 + 0.1.97 should not be above range >=0.1.97(>=0.1.97) + 1.3.3 should be above range 1.2.x + 1.0.0-beta.1 should be below range 1.0.0-beta.2 + 1.0.2 should not be above range ~ 1.0(>=1.0.0 <1.1.0) + 0.2.4 should not be below range >=* + 1.0.0 should be below range >=2.0.0 + 1.2.3 should not be below range ~> 1 + 1.3.0 should be above range ~1.2.2 + 3.1.3 should be above range 2.*.* + 3.2.2 should not be below range ~>3.2.1 + 1.0.0 should not be above range >=1(>=1.0.0) + 1.0.0-beta should be below range >1 + 1.1.0 should not be above range > 1.0.0(>1.0.0) + 0.1.0 should be below range ~ 1.0 + 1.2.3 should not be above range ~>1(>=1.0.0 <2.0.0) + 2.1.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) + 0.2.5 should not be above range >0.2.3 >0.2.4 <=0.2.5(>0.2.4 <=0.2.5) + 3.2.0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 + 1.2.4 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) + 3.0.0 should be above range <=2.0.0 + 0.2.9 should not be below range <=2.0.0 + 1.0.0 should not be below range >=1 + 1.0.0-beta should be above range <1 + 1.3.0 should be above range ~1.2.2 + 3.2.0 should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) + 2.1.3 should not be above range 2.*.*(>=2.0.0 <3.0.0) + 1.9999.9999 should not be below range <= 2.0.0 + 2.1.2 should not be below range 2 + 1.2.3 should not be below range 1.2.* || 2.* + 1.2.3 should not be below range 1.0.0 - 2.0.0 + 0.2.3 should be below range ~> 1 + 1.1.3 should be below range 1.2.* + 1.0.1 should not be above range >=1.0.0(>=1.0.0) + 2.1.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) + 0.2.3 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) + 1.2.3 should not be below range ~1 + 2.0.0 should be below range >2.0.0 + 3.1.3 should be above range 1.2.* || 2.* + 0.2.3 should be below range ~>1 + 0.2.9 should not be above range <=2.0.0(<=2.0.0) + 0.5.5 should not be below range ~v0.5.4-pre -Finished in 0.30346 seconds (files took 0.17451 seconds to load) +Finished in 0.43298 seconds (files took 0.28708 seconds to load) 985 examples, 0 failures -Randomized with seed 7390 +Randomized with seed 21693 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -2084,12 +2119,14 @@ dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration +I: user script /srv/workspace/pbuilder/3575672/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/3575672/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env -I: removing directory /srv/workspace/pbuilder/495741 and its subdirectories -I: Current time: Sat Aug 30 05:23:15 -12 2025 -I: pbuilder-time-stamp: 1756574595 +I: removing directory /srv/workspace/pbuilder/3575672 and its subdirectories +I: Current time: Mon Jul 29 01:01:29 +14 2024 +I: pbuilder-time-stamp: 1722164489