Diff of the two buildlogs: -- --- b1/build.log 2021-07-21 09:06:11.342615915 +0000 +++ b2/build.log 2021-07-21 09:16:10.584063478 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Tue Jul 20 21:04:06 -12 2021 -I: pbuilder-time-stamp: 1626858246 +I: Current time: Wed Jul 21 23:06:27 +14 2021 +I: pbuilder-time-stamp: 1626858387 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bullseye-reproducible-base.tgz] I: copying local configuration @@ -16,8 +16,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.sSLvxcat/trustedkeys.kbx': General error -gpgv: Signature made Fri Jan 29 03:37:16 2021 -12 +gpgv: keyblock resource '/tmp/dpkg-verify-sig.xI8HJUXQ/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 @@ -26,135 +26,169 @@ 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/21729/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/16176/tmp/hooks/D01_modify_environment starting +debug: Running on cbxi4b. +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 +Removing 'diversion of /bin/sh to /bin/sh.distrib by dash' +Adding 'diversion of /bin/sh to /bin/sh.distrib by bash' +Removing 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by dash' +Adding 'diversion of /usr/share/man/man1/sh.1.gz to /usr/share/man/man1/sh.distrib.1.gz by 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/16176/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/16176/tmp/hooks/D02_print_environment starting I: set - BUILDDIR='/build' - BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' - BUILDUSERNAME='pbuilder1' - BUILD_ARCH='armhf' - DEBIAN_FRONTEND='noninteractive' - DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=3' - DISTRIBUTION='' - HOME='/root' - HOST_ARCH='armhf' + 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]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.1.4(1)-release' + BUILDDIR=/build + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all,-fixfilepath parallel=4' + DIRSTACK=() + DISTRIBUTION= + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='d7760f68c40c44fa91adb541c2b7743b' - 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='21729' - PS1='# ' - PS2='> ' + INVOCATION_ID=e9bedf165a324ae990a104fe74532a42 + LANG=C + LANGUAGE=it_CH:it + LC_ALL=C + MACHTYPE=arm-unknown-linux-gnueabihf + MAIL=/var/mail/root + OPTERR=1 + OPTIND=1 + OSTYPE=linux-gnueabihf + 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=16176 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/tmp.eUbThdFGFa/pbuilderrc_WRW1 --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.eUbThdFGFa/b1 --logfile b1/build.log ruby-semantic-puppet_1.0.3-1.dsc' - SUDO_GID='114' - SUDO_UID='108' - SUDO_USER='jenkins' - TERM='unknown' - TZ='/usr/share/zoneinfo/Etc/GMT+12' - USER='root' - _='/usr/bin/systemd-run' - http_proxy='http://10.0.0.15:8000/' + 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/tmp.eUbThdFGFa/pbuilderrc_WL2O --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bullseye-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/tmp.eUbThdFGFa/b2 --logfile b2/build.log --extrapackages usrmerge ruby-semantic-puppet_1.0.3-1.dsc' + SUDO_GID=116 + SUDO_UID=112 + SUDO_USER=jenkins + TERM=unknown + TZ=/usr/share/zoneinfo/Etc/GMT-14 + UID=0 + USER=root + _='I: set' + http_proxy=http://10.0.0.15:8000/ I: uname -a - Linux virt64a 5.10.0-7-arm64 #1 SMP Debian 5.10.40-1 (2021-05-28) aarch64 GNU/Linux + Linux i-capture-the-hostname 5.10.0-7-armmp #1 SMP Debian 5.10.40-1 (2021-05-28) armv7l GNU/Linux I: ls -l /bin total 3580 - -rwxr-xr-x 1 root root 816764 Jun 21 14:26 bash - -rwxr-xr-x 3 root root 26052 Jul 20 2020 bunzip2 - -rwxr-xr-x 3 root root 26052 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 26052 Jul 20 2020 bzip2 - -rwxr-xr-x 1 root root 9636 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 26668 Sep 22 2020 cat - -rwxr-xr-x 1 root root 43104 Sep 22 2020 chgrp - -rwxr-xr-x 1 root root 38984 Sep 22 2020 chmod - -rwxr-xr-x 1 root root 43112 Sep 22 2020 chown - -rwxr-xr-x 1 root root 92616 Sep 22 2020 cp - -rwxr-xr-x 1 root root 75524 Dec 10 2020 dash - -rwxr-xr-x 1 root root 75880 Sep 22 2020 date - -rwxr-xr-x 1 root root 55436 Sep 22 2020 dd - -rwxr-xr-x 1 root root 59912 Sep 22 2020 df - -rwxr-xr-x 1 root root 96764 Sep 22 2020 dir - -rwxr-xr-x 1 root root 55012 Feb 7 02:38 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 22508 Sep 22 2020 echo - -rwxr-xr-x 1 root root 28 Nov 9 2020 egrep - -rwxr-xr-x 1 root root 22496 Sep 22 2020 false - -rwxr-xr-x 1 root root 28 Nov 9 2020 fgrep - -rwxr-xr-x 1 root root 47492 Feb 7 02:38 findmnt - -rwsr-xr-x 1 root root 26076 Feb 26 04:12 fusermount - -rwxr-xr-x 1 root root 124508 Nov 9 2020 grep - -rwxr-xr-x 2 root root 2346 Mar 2 11:30 gunzip - -rwxr-xr-x 1 root root 6376 Mar 2 11:30 gzexe - -rwxr-xr-x 1 root root 64212 Mar 2 11:30 gzip - -rwxr-xr-x 1 root root 13784 Nov 6 2019 hostname - -rwxr-xr-x 1 root root 43180 Sep 22 2020 ln - -rwxr-xr-x 1 root root 35068 Feb 7 2020 login - -rwxr-xr-x 1 root root 96764 Sep 22 2020 ls - -rwxr-xr-x 1 root root 99940 Feb 7 02:38 lsblk - -rwxr-xr-x 1 root root 51408 Sep 22 2020 mkdir - -rwxr-xr-x 1 root root 43184 Sep 22 2020 mknod - -rwxr-xr-x 1 root root 30780 Sep 22 2020 mktemp - -rwxr-xr-x 1 root root 34408 Feb 7 02:38 more - -rwsr-xr-x 1 root root 34400 Feb 7 02:38 mount - -rwxr-xr-x 1 root root 9824 Feb 7 02:38 mountpoint - -rwxr-xr-x 1 root root 88524 Sep 22 2020 mv - lrwxrwxrwx 1 root root 8 Nov 6 2019 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Apr 18 03:38 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 26652 Sep 22 2020 pwd - lrwxrwxrwx 1 root root 4 Jun 21 14:26 rbash -> bash - -rwxr-xr-x 1 root root 30740 Sep 22 2020 readlink - -rwxr-xr-x 1 root root 43104 Sep 22 2020 rm - -rwxr-xr-x 1 root root 30732 Sep 22 2020 rmdir - -rwxr-xr-x 1 root root 14144 Sep 27 2020 run-parts - -rwxr-xr-x 1 root root 76012 Dec 22 2018 sed - lrwxrwxrwx 1 root root 4 Jul 18 21:25 sh -> dash - -rwxr-xr-x 1 root root 22532 Sep 22 2020 sleep - -rwxr-xr-x 1 root root 55360 Sep 22 2020 stty - -rwsr-xr-x 1 root root 46704 Feb 7 02:38 su - -rwxr-xr-x 1 root root 22532 Sep 22 2020 sync - -rwxr-xr-x 1 root root 340872 Feb 16 21:55 tar - -rwxr-xr-x 1 root root 9808 Sep 27 2020 tempfile - -rwxr-xr-x 1 root root 67696 Sep 22 2020 touch - -rwxr-xr-x 1 root root 22496 Sep 22 2020 true - -rwxr-xr-x 1 root root 9636 Feb 26 04:12 ulockmgr_server - -rwsr-xr-x 1 root root 22108 Feb 7 02:38 umount - -rwxr-xr-x 1 root root 22520 Sep 22 2020 uname - -rwxr-xr-x 2 root root 2346 Mar 2 11:30 uncompress - -rwxr-xr-x 1 root root 96764 Sep 22 2020 vdir - -rwxr-xr-x 1 root root 38512 Feb 7 02:38 wdctl - lrwxrwxrwx 1 root root 8 Nov 6 2019 ypdomainname -> hostname - -rwxr-xr-x 1 root root 1984 Mar 2 11:30 zcat - -rwxr-xr-x 1 root root 1678 Mar 2 11:30 zcmp - -rwxr-xr-x 1 root root 5880 Mar 2 11:30 zdiff - -rwxr-xr-x 1 root root 29 Mar 2 11:30 zegrep - -rwxr-xr-x 1 root root 29 Mar 2 11:30 zfgrep - -rwxr-xr-x 1 root root 2081 Mar 2 11:30 zforce - -rwxr-xr-x 1 root root 7585 Mar 2 11:30 zgrep - -rwxr-xr-x 1 root root 2206 Mar 2 11:30 zless - -rwxr-xr-x 1 root root 1842 Mar 2 11:30 zmore - -rwxr-xr-x 1 root root 4553 Mar 2 11:30 znew -I: user script /srv/workspace/pbuilder/21729/tmp/hooks/D02_print_environment finished + -rwxr-xr-x 1 root root 816764 Jun 22 16:26 bash + -rwxr-xr-x 3 root root 26052 Jul 21 2020 bunzip2 + -rwxr-xr-x 3 root root 26052 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 26052 Jul 21 2020 bzip2 + -rwxr-xr-x 1 root root 9636 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 26668 Sep 23 2020 cat + -rwxr-xr-x 1 root root 43104 Sep 23 2020 chgrp + -rwxr-xr-x 1 root root 38984 Sep 23 2020 chmod + -rwxr-xr-x 1 root root 43112 Sep 23 2020 chown + -rwxr-xr-x 1 root root 92616 Sep 23 2020 cp + -rwxr-xr-x 1 root root 75524 Dec 11 2020 dash + -rwxr-xr-x 1 root root 75880 Sep 23 2020 date + -rwxr-xr-x 1 root root 55436 Sep 23 2020 dd + -rwxr-xr-x 1 root root 59912 Sep 23 2020 df + -rwxr-xr-x 1 root root 96764 Sep 23 2020 dir + -rwxr-xr-x 1 root root 55012 Feb 8 04:38 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 22508 Sep 23 2020 echo + -rwxr-xr-x 1 root root 28 Nov 10 2020 egrep + -rwxr-xr-x 1 root root 22496 Sep 23 2020 false + -rwxr-xr-x 1 root root 28 Nov 10 2020 fgrep + -rwxr-xr-x 1 root root 47492 Feb 8 04:38 findmnt + -rwsr-xr-x 1 root root 26076 Feb 27 06:12 fusermount + -rwxr-xr-x 1 root root 124508 Nov 10 2020 grep + -rwxr-xr-x 2 root root 2346 Mar 3 13:30 gunzip + -rwxr-xr-x 1 root root 6376 Mar 3 13:30 gzexe + -rwxr-xr-x 1 root root 64212 Mar 3 13:30 gzip + -rwxr-xr-x 1 root root 13784 Nov 8 2019 hostname + -rwxr-xr-x 1 root root 43180 Sep 23 2020 ln + -rwxr-xr-x 1 root root 35068 Feb 8 2020 login + -rwxr-xr-x 1 root root 96764 Sep 23 2020 ls + -rwxr-xr-x 1 root root 99940 Feb 8 04:38 lsblk + -rwxr-xr-x 1 root root 51408 Sep 23 2020 mkdir + -rwxr-xr-x 1 root root 43184 Sep 23 2020 mknod + -rwxr-xr-x 1 root root 30780 Sep 23 2020 mktemp + -rwxr-xr-x 1 root root 34408 Feb 8 04:38 more + -rwsr-xr-x 1 root root 34400 Feb 8 04:38 mount + -rwxr-xr-x 1 root root 9824 Feb 8 04:38 mountpoint + -rwxr-xr-x 1 root root 88524 Sep 23 2020 mv + lrwxrwxrwx 1 root root 8 Nov 8 2019 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Apr 19 05:38 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 26652 Sep 23 2020 pwd + lrwxrwxrwx 1 root root 4 Jun 22 16:26 rbash -> bash + -rwxr-xr-x 1 root root 30740 Sep 23 2020 readlink + -rwxr-xr-x 1 root root 43104 Sep 23 2020 rm + -rwxr-xr-x 1 root root 30732 Sep 23 2020 rmdir + -rwxr-xr-x 1 root root 14144 Sep 28 2020 run-parts + -rwxr-xr-x 1 root root 76012 Dec 23 2018 sed + lrwxrwxrwx 1 root root 4 Jul 21 23:07 sh -> bash + lrwxrwxrwx 1 root root 4 Jul 17 23:29 sh.distrib -> dash + -rwxr-xr-x 1 root root 22532 Sep 23 2020 sleep + -rwxr-xr-x 1 root root 55360 Sep 23 2020 stty + -rwsr-xr-x 1 root root 46704 Feb 8 04:38 su + -rwxr-xr-x 1 root root 22532 Sep 23 2020 sync + -rwxr-xr-x 1 root root 340872 Feb 17 23:55 tar + -rwxr-xr-x 1 root root 9808 Sep 28 2020 tempfile + -rwxr-xr-x 1 root root 67696 Sep 23 2020 touch + -rwxr-xr-x 1 root root 22496 Sep 23 2020 true + -rwxr-xr-x 1 root root 9636 Feb 27 06:12 ulockmgr_server + -rwsr-xr-x 1 root root 22108 Feb 8 04:38 umount + -rwxr-xr-x 1 root root 22520 Sep 23 2020 uname + -rwxr-xr-x 2 root root 2346 Mar 3 13:30 uncompress + -rwxr-xr-x 1 root root 96764 Sep 23 2020 vdir + -rwxr-xr-x 1 root root 38512 Feb 8 04:38 wdctl + lrwxrwxrwx 1 root root 8 Nov 8 2019 ypdomainname -> hostname + -rwxr-xr-x 1 root root 1984 Mar 3 13:30 zcat + -rwxr-xr-x 1 root root 1678 Mar 3 13:30 zcmp + -rwxr-xr-x 1 root root 5880 Mar 3 13:30 zdiff + -rwxr-xr-x 1 root root 29 Mar 3 13:30 zegrep + -rwxr-xr-x 1 root root 29 Mar 3 13:30 zfgrep + -rwxr-xr-x 1 root root 2081 Mar 3 13:30 zforce + -rwxr-xr-x 1 root root 7585 Mar 3 13:30 zgrep + -rwxr-xr-x 1 root root 2206 Mar 3 13:30 zless + -rwxr-xr-x 1 root root 1842 Mar 3 13:30 zmore + -rwxr-xr-x 1 root root 4553 Mar 3 13:30 znew +I: user script /srv/workspace/pbuilder/16176/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -327,7 +361,7 @@ Get: 129 http://deb.debian.org/debian bullseye/main armhf ruby-rspec-expectations all 3.9.0c2e2m1s3-2 [89.9 kB] Get: 130 http://deb.debian.org/debian bullseye/main armhf ruby-rspec-mocks all 3.9.0c2e2m1s3-2 [81.4 kB] Get: 131 http://deb.debian.org/debian bullseye/main armhf ruby-rspec all 3.9.0c2e2m1s3-2 [8348 B] -Fetched 42.4 MB in 11s (3877 kB/s) +Fetched 42.4 MB in 12s (3522 kB/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 ... 19398 files and directories currently installed.) @@ -875,8 +909,45 @@ Writing extended state information... Building tag database... -> Finished parsing the build-deps +Reading package lists... +Building dependency tree... +Reading state information... +The following additional packages will be installed: + libfile-find-rule-perl libnumber-compare-perl libtext-glob-perl +The following NEW packages will be installed: + libfile-find-rule-perl libnumber-compare-perl libtext-glob-perl usrmerge +0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded. +Need to get 59.5 kB of archives. +After this operation, 157 kB of additional disk space will be used. +Get:1 http://deb.debian.org/debian bullseye/main armhf libnumber-compare-perl all 0.03-1.1 [6956 B] +Get:2 http://deb.debian.org/debian bullseye/main armhf libtext-glob-perl all 0.11-1 [8888 B] +Get:3 http://deb.debian.org/debian bullseye/main armhf libfile-find-rule-perl all 0.34-1 [30.6 kB] +Get:4 http://deb.debian.org/debian bullseye/main armhf usrmerge all 25 [13.0 kB] +debconf: delaying package configuration, since apt-utils is not installed +Fetched 59.5 kB in 0s (330 kB/s) +Selecting previously unselected package libnumber-compare-perl. +(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 ... 26566 files and directories currently installed.) +Preparing to unpack .../libnumber-compare-perl_0.03-1.1_all.deb ... +Unpacking libnumber-compare-perl (0.03-1.1) ... +Selecting previously unselected package libtext-glob-perl. +Preparing to unpack .../libtext-glob-perl_0.11-1_all.deb ... +Unpacking libtext-glob-perl (0.11-1) ... +Selecting previously unselected package libfile-find-rule-perl. +Preparing to unpack .../libfile-find-rule-perl_0.34-1_all.deb ... +Unpacking libfile-find-rule-perl (0.34-1) ... +Selecting previously unselected package usrmerge. +Preparing to unpack .../archives/usrmerge_25_all.deb ... +Unpacking usrmerge (25) ... +Setting up libtext-glob-perl (0.11-1) ... +Setting up libnumber-compare-perl (0.03-1.1) ... +Setting up libfile-find-rule-perl (0.34-1) ... +Setting up usrmerge (25) ... +The system has been successfully converted. +Processing triggers for man-db (2.9.4-2) ... +Not building database; man-db/auto-update is not 'true'. I: Building the package -I: Running cd /build/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 +hostname: Name or service not known +I: Running cd /build/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 @@ -913,16 +984,16 @@ └──────────────────────────────────────────────────────────────────────────────┘ install -d /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby -install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet.rb +install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency.rb install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/version.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/version.rb -install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/source.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/source.rb +install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/gem_version.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/gem_version.rb +install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/version_range.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/version_range.rb +install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/graph_node.rb /build/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/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/unsatisfiable_graph.rb /build/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/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/module_release.rb /build/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/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/graph_node.rb /build/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/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/graph.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/graph.rb -install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/gem_version.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/gem_version.rb -install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency.rb -install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/version_range.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/version_range.rb +install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet/dependency/source.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet/dependency/source.rb +install -D -m644 /build/ruby-semantic-puppet-1.0.3/lib/semantic_puppet.rb /build/ruby-semantic-puppet-1.0.3/debian/ruby-semantic-puppet/usr/lib/ruby/vendor_ruby/semantic_puppet.rb ┌──────────────────────────────────────────────────────────────────────────────┐ │ Install Rubygems integration metadata │ @@ -948,1111 +1019,1111 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 62110 +Randomized with seed 31849 SemanticPuppet::Dependency::ModuleRelease #<< 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 #to_s is expected to =~ /1.2.3/ is expected to =~ /foobarbaz/ + #<=> + considers releases with lesser version numbers lesser + considers releases with greater version numbers greater + orders releases by name first + orders releases with different names lexographically + #== + considers two releases with different versions to be different + can compare a release with something that is not a release + considers a release different from something that is not a release + considers two releases with different names to be different + considers two equal releases to be equal #dependency_names lists the names of all the release's dependencies #satisfies_dependency? + returns false when the release does not match the dependency version returns false when there are no dependencies to satisfy returns true when the release matches the dependency - returns false when the release does not match the dependency version returns false when the release does not match the dependency name - #== - can compare a release with something that is not a release - considers a release different from something that is not a release - considers two equal releases to be equal - considers two releases with different versions to be different - considers two releases with different names to be different - #<=> - orders releases with different names lexographically - considers releases with greater version numbers greater - orders releases by name first - considers releases with lesser version numbers lesser #satisfied? - returns false when not all dependency versions have been satisified - returns true when all dependencies have been satisified + returns false when not all dependencies have been satisified returns false when no dependencies have been satisified returns true when there are no dependencies to satisfy - returns false when not all dependencies have been satisified + returns true when all dependencies have been satisified + returns false when not all dependency versions have been satisified SemanticPuppet::Dependency::UnsatisfiableGraph #sentence_from_list - 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" - 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 one item + is expected to eql "foo" #message is expected to match /foo, bar, and baz/ -SemanticPuppet::Version - .valid? - Spec v2.0.0 - Section 10 - permits non-numeric build identifiers with leading zeroes - rejects build identifiers with non-alphanumerics - permits numeric build identifiers of zero - permits numeric build identifiers with leading zeroes - rejects empty build identifiers - rejects empty build metadata - Section 9 - rejects empty prerelease version identifiers - permits non-numeric prerelease identifiers with leading zeroes - permits non-numeric prerelease identifiers - rejects empty prerelease versions - rejects prerelease identifiers with non-alphanumerics - rejects numeric prerelease identifiers with leading zeroes - permits numeric prerelease identifiers of zero - Section 2 - rejects versions that contain non-integers - permits zeroes in version number parts - rejects version numbers containing leading zeroes - rejects versions that contain too many parts - rejects versions that contain negative integers - rejects versions that contain too few parts - Spec v1.0.0 - Section 2 - rejects versions that contain too few parts - permits zeroes in version number parts - rejects versions that contain non-integers - rejects versions that contain too many parts - Section 4 - rejects prerelease identifiers with non-alphanumerics - permits non-numeric prerelease identifiers with leading zeroes - rejects numeric prerelease identifiers with leading zeroes - rejects empty prerelease versions - permits numeric prerelease identifiers of zero - #<=> - 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 - sorted order - identifiers are parsed left-to-right - larger identifier sets have precendence - build metadata does figure into equality - numeric identifiers sort numerically - build metadata does not figure into precendence - non-numeric identifiers have a higher precendence - non-numeric identifiers sort ASCIIbetically - identical prereleases are equal - #next - with :major - does not modify the original version - removes any prerelease information - returns the next major version - removes any build information - resets the minor and patch versions to 0 - with :minor - does not modify the original version - resets the patch version to 0 - returns the next minor version - removes any prerelease information - removes any build information - with :patch - removes any build information - returns the next patch version - removes any prerelease information - does not modify the original version - #== - should yield false when the major differs - should yield false when compared to something that is not a Version - should yield false when the minor differs - should yield false when the patch differs - should yield true when comparing two equal instances - should yield false when the prerelease differs - .parse - Spec v1.0.0 - Section 2 - rejects versions that contain non-integers - permits zeroes in version number parts - rejects versions that contain too few parts - rejects versions that contain too many parts - examples - 1.9.0 - 1.11.0 - 1.10.0 - Section 4 - rejects empty prerelease versions - permits non-numeric prerelease identifiers with leading zeroes - rejects prerelease identifiers with non-alphanumerics - permits numeric prerelease identifiers of zero - rejects numeric prerelease identifiers with leading zeroes - examples - 1.0.0-beta1 - 1.0.0-alpha1 - 1.0.0-rc1 - 1.0.0-beta2 - Spec v2.0.0 - Section 10 - rejects empty build identifiers - permits non-numeric build identifiers with leading zeroes - rejects empty build metadata - permits numeric build identifiers of zero - permits numeric build identifiers with leading zeroes - rejects build identifiers with non-alphanumerics - examples - 1.0.0-alpha+001 - 1.0.0-beta+exp.sha.5114f85 - 1.0.0+20130313144700 - Section 9 - rejects empty prerelease version identifiers - 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 - examples - 1.0.0-alpha.1 - 1.0.0-x.7.z.92 - 1.0.0-alpha - 1.0.0-0.3.7 - Section 2 - rejects versions that contain negative integers - rejects versions that contain too few parts - permits zeroes in version number parts - rejects version numbers containing leading zeroes - rejects versions that contain non-integers - rejects versions that contain too many parts - examples - 1.9.0 - 1.11.0 - 1.10.0 - SemanticPuppet::VersionRange .parse - unioned expressions - "<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.2.6-0 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 3.0.0 - "1 <=1.2.5" stringifies as >=1.0.0 <=1.2.5 - parse("1.2 <1.2.5").to_s excludes 1.9.0 - "1 <=1.2.5" includes 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-0 - "1 <=1.2.5" excludes 1.0.0-0 - parse("<1.0.0 >2.0.0").to_s excludes 0.0.0 - "1 <=1.2.5" excludes 1.9.0 - "1 <=1.2.5" includes 1.0.0 - parse("1 <=1.2.5").to_s includes 1.0.0 - "1.2 <1.2.5" excludes 1.2.0-0 - "1.2 <1.2.5" includes 1.2.4 - 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" stringifies as >=3.0.0 <5.0.0 - parse("1.2 <1.2.5").to_s includes 1.2.0 - parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 5.0.0-0 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 3.0.0-0 - parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 2.999.999 - "1.2 <1.2.5" includes 1.2.0 - parse("1 <=1.2.5").to_s excludes 1.9.0 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 2.999.999 - "1.2 <1.2.5" excludes 1.9.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 - 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 >=3.0.0 <5.0.0" excludes 5.0.0-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.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 - "1.2 <1.2.5" stringifies as >=1.2.0 <1.2.5 - "1.2 <1.2.5" excludes 1.1.999 - parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 3.0.0 - parse("1 <=1.2.5").to_s excludes 1.0.0-0 - "1 <=1.2.5" excludes 0.999.999 - "1.2 <1.2.5" excludes 1.2.5-0 - parse("1 <=1.2.5").to_s excludes 0.999.999 + "reasonably close" expressions + "~1" excludes 0.999.999 + "~ 1.2.3-alpha" excludes 1.2.3-alph + "~ 1" excludes 0.999.999 + "~ 1.2.3" includes 1.2.5 + parse("~1.2").to_s excludes 1.2.0-0 + parse("~ 1").to_s excludes 0.999.999 + "~1" excludes 1.0.0-0 + parse("~ 1").to_s includes 1.0.0 + parse("~ 1").to_s excludes 2.0.0-0 + parse("~ 1.2.3-alpha").to_s includes 1.2.3-alpha + parse("~1.2.3-alpha").to_s excludes 1.2.4-0 + parse("~1").to_s includes 1.0.0 + parse("~ 1.2.3").to_s excludes 1.3.0-0 + "~1" stringifies as >=1.0.0 <2.0.0 + "~1.2" includes 1.2.999 + parse("~ 1.2.3").to_s includes 1.2.5 + "~ 1" stringifies as >=1.0.0 <2.0.0 + "~ 1.2" includes 1.2.0 + "~1.2.3-alpha" excludes 1.2.3-alph + parse("~1").to_s excludes 1.0.0-0 + parse("~1.2.3-alpha").to_s includes 1.2.3 + "~1.2.3" excludes 1.2.2 + "~1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 + "~ 1" excludes 2.0.0-0 + parse("~1.2.3-alpha").to_s includes 1.2.3-alpha + parse("~ 1.2.3").to_s includes 1.2.3 + "~ 1" excludes 1.0.0-0 + "~ 1.2.3" includes 1.2.3 + "~1" includes 1.0.0 + parse("~1.2").to_s excludes 1.3.0-0 + parse("~ 1.2").to_s excludes 1.2.0-0 + "~ 1.2.3" excludes 1.2.2 + parse("~1.2.3").to_s excludes 1.2.3-0 + "~1.2" excludes 1.1.999 + parse("~1").to_s includes 1.999.999 + "~1.2.3" includes 1.2.5 + parse("~ 1").to_s excludes 1.0.0-0 + parse("~1.2").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-alph + parse("~1.2.3").to_s includes 1.2.5 + "~ 1.2.3" stringifies as >=1.2.3 <1.3.0 + "~1.2.3" includes 1.2.3 + "~1.2.3" excludes 1.2.3-0 + parse("~1.2.3").to_s includes 1.2.3 + "~1" includes 1.999.999 + parse("~ 1").to_s includes 1.999.999 + "~1.2" stringifies as >=1.2.0 <1.3.0 + "~1.2.3-alpha" includes 1.2.3 + parse("~1").to_s excludes 0.999.999 + "~ 1.2" includes 1.2.999 + "~ 1.2" excludes 1.1.999 + parse("~1.2").to_s includes 1.2.999 + parse("~1.2").to_s includes 1.2.0 + "~ 1.2.3" excludes 1.3.0-0 + "~ 1.2.3-alpha" excludes 1.2.4-0 + parse("~ 1.2.3").to_s excludes 1.2.3-0 + "~1.2.3-alpha" includes 1.2.3-alpha + parse("~ 1.2").to_s includes 1.2.0 + "~1.2.3" stringifies as >=1.2.3 <1.3.0 + parse("~ 1.2.3-alpha").to_s excludes 1.2.4-0 + "~ 1.2" excludes 1.2.0-0 + "~1.2" excludes 1.3.0-0 + "~1" excludes 2.0.0-0 + "~1.2" excludes 1.2.0-0 + "~ 1.2.3" excludes 1.2.3-0 + "~1.2.3" excludes 1.3.0-0 + parse("~ 1.2.3-alpha").to_s includes 1.2.3 + parse("~1.2.3").to_s excludes 1.3.0-0 + parse("~ 1.2").to_s excludes 1.1.999 + "~1.2" includes 1.2.0 + "~ 1.2.3-alpha" includes 1.2.3 + "~1.2.3-alpha" excludes 1.2.4-0 + "~ 1.2" excludes 1.3.0-0 + parse("~ 1.2").to_s includes 1.2.999 + "~ 1.2.3-alpha" includes 1.2.3-alpha + "~ 1" includes 1.0.0 + parse("~ 1.2.3").to_s excludes 1.2.2 + "~ 1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 + parse("~ 1.2").to_s excludes 1.3.0-0 + parse("~1.2.3").to_s excludes 1.2.2 + "~ 1" includes 1.999.999 + "~ 1.2" stringifies as >=1.2.0 <1.3.0 + parse("~1.2.3-alpha").to_s excludes 1.2.3-alph + inclusive range expressions + 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.2 + "1.2.3-alpha - 1.3.4" includes 1.2.3-alpha + "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.4-alpha0 + parse("1.2.3 - 1.3.4-alpha").to_s includes 1.3.4-alpha + 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-alpha" excludes 1.3.4-alpha0 + "1.2.3 - 1.3.4-alpha" excludes 1.3.5 + "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-alpha").to_s excludes 1.2.2 + "1.2.3 - 1.3.4" excludes 1.2.3-0 + "1.2.3 - 1.3.4" excludes 1.2.2 + parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.5 + "1.2.3-alpha - 1.3.4-alpha" excludes 1.2.3-alph + parse("1.2.3-alpha - 1.3.4").to_s includes 1.3.4 + "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.5 + "1.2.3 - 1.3.4-alpha" stringifies as >=1.2.3 <=1.3.4-alpha + parse("1.2.3 - 1.3.4-alpha").to_s includes 1.2.3 + "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 + parse("1.2.3 - 1.3.4").to_s excludes 1.2.3-0 + "1.2.3 - 1.3.4" stringifies as >=1.2.3 <=1.3.4 + parse("1.2.3-alpha - 1.3.4").to_s excludes 1.3.5-0 + "1.2.3 - 1.3.4" includes 1.3.4 + "1.2.3-alpha - 1.3.4" stringifies as >=1.2.3-alpha <=1.3.4 + "1.2.3 - 1.3.4" includes 1.2.3 + parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.2.3-alpha + "1.2.3-alpha - 1.3.4" excludes 1.2.3-alph + "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-alpha" includes 1.2.3-alpha + "1.2.3-alpha - 1.3.4" excludes 1.3.5-0 + parse("1.2.3 - 1.3.4").to_s includes 1.2.3 + "1.2.3-alpha - 1.3.4" includes 1.3.4 + parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 + parse("1.2.3 - 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 - 1.3.4-alpha" includes 1.3.4-alpha + parse("1.2.3 - 1.3.4").to_s excludes 1.2.2 + parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 + "1.2.3 - 1.3.4-alpha" excludes 1.2.3-0 + parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.3.4-alpha + parse("1.2.3-alpha - 1.3.4").to_s excludes 1.2.3-alph open-ended expressions - "<= 1.2.3-alpha" excludes 1.2.3-alpha0 - parse("< 1.2.3").to_s excludes 2.0.0 - "< 1.2.3-alpha" excludes 1.2.3-alpha - parse("< 1.2.3-alpha").to_s includes 1.2.3-alph - "< 1.2.3-alpha" excludes 0.0.0-0 - ">= 1.2.3" excludes 1.2.3-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 2.0.0 - parse("<1.2.3").to_s includes 1.2.2 - parse("<= 1.2.3").to_s excludes 1.2.3-0 - "<= 1.2.3-alpha" includes 0.0.0 - parse(">=1.2.3").to_s excludes 1.2.3-0 - "> 1.2.3" stringifies as >1.2.3 - parse("<= 1.2.3").to_s includes 1.2.3 - parse("<=1.2.3").to_s excludes 0.0.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").to_s includes 0.0.0 - parse("< 1.2.3-alpha").to_s includes 0.0.0 - ">1.2.3-alpha" excludes 1.2.3-alpha - "<1.2.3-alpha" includes 1.2.3-alph - "<= 1.2.3-alpha" stringifies as <=1.2.3-alpha - ">= 1.2.3-alpha" includes 1.2.3-alpha - "<=1.2.3-alpha" excludes 0.0.0-0 - "<=1.2.3-alpha" excludes 1.2.3-alpha0 - ">=1.2.3-alpha" excludes 1.2.3-alph + parse(">1.2.3-alpha").to_s includes 1.2.3-alpha0 ">= 1.2.3-alpha" stringifies as >=1.2.3-alpha - ">=1.2.3-alpha" includes 999.0.0 + "<=1.2.3-alpha" stringifies as <=1.2.3-alpha + parse("< 1.2.3").to_s includes 0.0.0 + "<=1.2.3-alpha" excludes 1.2.3-alphb + "< 1.2.3" excludes 0.0.0-0 + parse("<= 1.2.3-alpha").to_s includes 1.2.3-alpha parse("< 1.2.3").to_s includes 1.2.2 - parse(">1.2.3-alpha").to_s includes 1.2.3-alpha0 "<1.2.3" excludes 2.0.0 - parse(">=1.2.3-alpha").to_s excludes 1.2.3-alph - "> 1.2.3-alpha" includes 999.0.0 - parse("<= 1.2.3").to_s excludes 0.0.0-0 - ">1.2.3-alpha" includes 999.0.0 - ">=1.2.3" excludes 1.2.3-0 - "> 1.2.3" excludes 1.2.3 - "> 1.2.3-alpha" includes 1.2.3-alpha0 - parse("<= 1.2.3-alpha").to_s includes 1.2.3-alpha - "<=1.2.3" excludes 1.2.3-0 - "<= 1.2.3" includes 1.2.3 - parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alphb - 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 excludes 1.2.3-0 - "<= 1.2.3-alpha" excludes 1.2.3-alphb - ">= 1.2.3-alpha" excludes 1.2.4-alpha - parse("<1.2.3-alpha").to_s excludes 0.0.0-0 - ">=1.2.3" excludes 1.2.2 - "<= 1.2.3-alpha" excludes 0.0.0-0 - "<1.2.3-alpha" includes 0.0.0 + parse("<=1.2.3").to_s excludes 1.2.3-0 + ">= 1.2.3-alpha" includes 1.2.3-alpha + "< 1.2.3" excludes 1.2.3-0 + parse(">= 1.2.3").to_s includes 999.0.0 + parse("< 1.2.3-alpha").to_s includes 1.2.3-alph + "<=1.2.3-alpha" excludes 1.2.3-alpha0 + parse("<=1.2.3").to_s excludes 0.0.0-0 + ">1.2.3" excludes 1.2.4-0 + parse("<1.2.3").to_s includes 0.0.0 + "<= 1.2.3-alpha" includes 1.2.3-alpha + parse(">= 1.2.3").to_s excludes 1.2.3-0 + parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha0 + "> 1.2.3-alpha" stringifies as >1.2.3-alpha + ">1.2.3-alpha" excludes 1.2.3-alpha + ">= 1.2.3-alpha" 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 1.2.3-alpha parse(">1.2.3").to_s includes 999.0.0 - ">1.2.3" includes 999.0.0 - "<1.2.3" excludes 1.2.3-0 - parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha.0 - "< 1.2.3-alpha" excludes 2.0.0 + parse(">= 1.2.3-alpha").to_s excludes 1.2.4-alpha + parse("<=1.2.3-alpha").to_s includes 1.2.3-alpha parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha.0 - "<=1.2.3" includes 1.2.3 - parse(">= 1.2.3-alpha").to_s includes 999.0.0 - "< 1.2.3" excludes 0.0.0-0 - ">= 1.2.3-alpha" includes 999.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" stringifies as >=1.2.3 - parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha - "<1.2.3" excludes 0.0.0-0 - parse("< 1.2.3").to_s includes 0.0.0 - ">1.2.3-alpha" includes 1.2.3-alpha.0 - parse(">1.2.3-alpha").to_s includes 999.0.0 - ">= 1.2.3" excludes 1.2.2 - "< 1.2.3-alpha" includes 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.4-alpha - parse("<1.2.3").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" excludes 1.2.3-alpha + parse(">=1.2.3").to_s excludes 1.2.3-0 + ">1.2.3" includes 999.0.0 + parse("<=1.2.3-alpha").to_s excludes 1.2.3-alphb + parse(">=1.2.3").to_s includes 999.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" includes 0.0.0 + ">= 1.2.3" stringifies as >=1.2.3 + "<=1.2.3" excludes 0.0.0-0 + parse(">=1.2.3-alpha").to_s includes 999.0.0 + ">=1.2.3-alpha" includes 999.0.0 + parse("<=1.2.3").to_s includes 0.0.0 + "> 1.2.3" stringifies as >1.2.3 + ">= 1.2.3-alpha" includes 1.2.3-alpha0 + parse("> 1.2.3-alpha").to_s includes 999.0.0 parse("< 1.2.3-alpha").to_s excludes 0.0.0-0 - "> 1.2.3" excludes 1.2.4-0 - "<=1.2.3-alpha" excludes 1.2.3-alpha.0 - "<1.2.3-alpha" excludes 1.2.3-alpha - parse("<=1.2.3-alpha").to_s includes 1.2.3-alpha + "<= 1.2.3-alpha" includes 0.0.0 + parse("<= 1.2.3").to_s excludes 1.2.3-0 + ">1.2.3-alpha" stringifies as >1.2.3-alpha + "<1.2.3-alpha" excludes 0.0.0-0 "<= 1.2.3-alpha" excludes 1.2.3-alpha.0 - ">=1.2.3-alpha" includes 1.2.3-alpha - parse("<1.2.3").to_s excludes 0.0.0-0 - "< 1.2.3-alpha" includes 1.2.3-alph - parse("<=1.2.3").to_s excludes 1.2.3-0 - "> 1.2.3-alpha" excludes 1.2.3-alpha - parse(">1.2.3").to_s excludes 1.2.3 - "> 1.2.3-alpha" includes 1.2.3-alpha.0 + ">1.2.3-alpha" includes 999.0.0 + ">1.2.3" stringifies as >1.2.3 + parse("<1.2.3-alpha").to_s includes 1.2.3-alph ">1.2.3" excludes 1.2.3 - parse("> 1.2.3-alpha").to_s includes 999.0.0 - parse(">= 1.2.3-alpha").to_s excludes 1.2.4-alpha - parse("<=1.2.3").to_s includes 0.0.0 - "< 1.2.3" includes 1.2.2 + parse("> 1.2.3").to_s excludes 1.2.3 + parse("<1.2.3-alpha").to_s excludes 2.0.0 + "> 1.2.3-alpha" excludes 1.2.3-alpha + "<= 1.2.3-alpha" excludes 1.2.3-alphb + parse("<1.2.3").to_s excludes 2.0.0 + "<= 1.2.3-alpha" excludes 1.2.3-alpha0 + parse("< 1.2.3-alpha").to_s includes 0.0.0 + parse(">= 1.2.3").to_s excludes 1.2.2 + ">1.2.3-alpha" includes 1.2.3-alpha.0 + "> 1.2.3" excludes 1.2.4-0 + "<= 1.2.3" excludes 1.2.3-0 + ">= 1.2.3" excludes 1.2.3-0 + "< 1.2.3-alpha" includes 0.0.0 "<=1.2.3" stringifies as <=1.2.3 - parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha - parse(">=1.2.3-alpha").to_s includes 999.0.0 - parse(">=1.2.3").to_s excludes 1.2.2 - parse("<1.2.3-alpha").to_s includes 0.0.0 + parse("> 1.2.3").to_s excludes 1.2.4-0 + ">=1.2.3-alpha" excludes 1.2.3-alph + "<=1.2.3" includes 0.0.0 + ">=1.2.3-alpha" stringifies as >=1.2.3-alpha + "<=1.2.3-alpha" excludes 1.2.3-alpha.0 + "< 1.2.3" excludes 2.0.0 + ">= 1.2.3" includes 999.0.0 + ">= 1.2.3" excludes 1.2.2 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 excludes 1.2.3-alphb + ">=1.2.3" stringifies as >=1.2.3 + "<1.2.3" excludes 1.2.3-0 + parse(">1.2.3").to_s excludes 1.2.3 + parse("<=1.2.3").to_s includes 1.2.3 "<1.2.3" includes 1.2.2 - ">= 1.2.3" stringifies as >=1.2.3 - parse("<=1.2.3-alpha").to_s excludes 0.0.0-0 - parse("> 1.2.3").to_s includes 999.0.0 - "<1.2.3-alpha" stringifies as <1.2.3-alpha + parse("<= 1.2.3").to_s excludes 0.0.0-0 + ">=1.2.3-alpha" excludes 1.2.4-alpha + parse("<1.2.3").to_s excludes 0.0.0-0 + "< 1.2.3-alpha" stringifies as <1.2.3-alpha + "<= 1.2.3" stringifies as <=1.2.3 + "> 1.2.3-alpha" includes 1.2.3-alpha0 + ">=1.2.3-alpha" includes 1.2.3-alpha + ">= 1.2.3-alpha" excludes 1.2.3-alph + parse("<=1.2.3-alpha").to_s includes 0.0.0 + parse("> 1.2.3-alpha").to_s excludes 1.2.3-alpha parse(">= 1.2.3-alpha").to_s excludes 1.2.3-alph - parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha0 - ">=1.2.3" includes 999.0.0 - parse("< 1.2.3").to_s excludes 0.0.0-0 - ">1.2.3" excludes 1.2.4-0 - parse(">1.2.3-alpha").to_s includes 1.2.3-alpha.0 - "< 1.2.3" excludes 2.0.0 - "<1.2.3-alpha" excludes 2.0.0 + ">=1.2.3" excludes 1.2.2 "<1.2.3" includes 0.0.0 - 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 excludes 2.0.0 - ">1.2.3-alpha" includes 1.2.3-alpha0 - "> 1.2.3" includes 999.0.0 - parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha0 - "<=1.2.3-alpha" includes 1.2.3-alpha - parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha0 - "<=1.2.3-alpha" includes 0.0.0 - parse("<1.2.3").to_s excludes 2.0.0 - parse("< 1.2.3").to_s excludes 1.2.3-0 - parse("<=1.2.3").to_s includes 1.2.3 - parse(">= 1.2.3").to_s excludes 1.2.2 - "< 1.2.3" excludes 1.2.3-0 - "> 1.2.3-alpha" stringifies as >1.2.3-alpha - "< 1.2.3" includes 0.0.0 - ">1.2.3-alpha" stringifies as >1.2.3-alpha - "<1.2.3-alpha" excludes 0.0.0-0 - ">= 1.2.3-alpha" includes 1.2.3-alpha0 - "<= 1.2.3-alpha" includes 1.2.3-alpha + parse(">=1.2.3-alpha").to_s excludes 1.2.4-alpha + parse("< 1.2.3").to_s excludes 0.0.0-0 + "< 1.2.3-alpha" excludes 2.0.0 + "<=1.2.3" excludes 1.2.3-0 + "<= 1.2.3" includes 0.0.0 + "< 1.2.3" includes 1.2.2 + parse(">1.2.3-alpha").to_s includes 999.0.0 parse("< 1.2.3-alpha").to_s excludes 1.2.3-alpha + "<1.2.3-alpha" includes 0.0.0 + "<1.2.3-alpha" stringifies as <1.2.3-alpha + parse(">= 1.2.3-alpha").to_s includes 999.0.0 + parse(">=1.2.3").to_s excludes 1.2.2 + 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" includes 999.0.0 - ">=1.2.3-alpha" includes 1.2.3-alpha0 - "<=1.2.3" excludes 0.0.0-0 - "<=1.2.3" includes 0.0.0 - ">= 1.2.3-alpha" excludes 1.2.3-alph - "< 1.2.3" stringifies as <1.2.3 - "<=1.2.3-alpha" excludes 1.2.3-alphb - parse(">1.2.3-alpha").to_s excludes 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" includes 999.0.0 + "< 1.2.3-alpha" excludes 1.2.3-alpha "<1.2.3" stringifies as <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").to_s includes 1.2.2 + parse("< 1.2.3-alpha").to_s excludes 2.0.0 + 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").to_s includes 0.0.0 parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha0 - parse("> 1.2.3").to_s excludes 1.2.3 - ">=1.2.3-alpha" excludes 1.2.4-alpha - parse("<1.2.3-alpha").to_s includes 1.2.3-alph + parse("< 1.2.3").to_s excludes 2.0.0 + parse("<1.2.3-alpha").to_s includes 0.0.0 + parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha.0 + "< 1.2.3-alpha" includes 1.2.3-alph + "<=1.2.3" includes 1.2.3 + "<= 1.2.3" includes 1.2.3 + parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha0 + parse("<= 1.2.3").to_s includes 1.2.3 + "<=1.2.3-alpha" excludes 0.0.0-0 + parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha + ">=1.2.3-alpha" includes 1.2.3-alpha0 parse(">1.2.3").to_s excludes 1.2.4-0 - parse(">= 1.2.3").to_s includes 999.0.0 - inclusive range expressions - "1.2.3-alpha - 1.3.4" excludes 1.3.5-0 - parse("1.2.3 - 1.3.4").to_s excludes 1.2.3-0 - "1.2.3 - 1.3.4" excludes 1.2.3-0 - "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 - "1.2.3 - 1.3.4" excludes 1.3.5-0 - parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.2.3-alpha - parse("1.2.3 - 1.3.4").to_s excludes 1.3.5-0 - parse("1.2.3 - 1.3.4-alpha").to_s includes 1.2.3 - parse("1.2.3 - 1.3.4-alpha").to_s includes 1.3.4-alpha - "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.5 - parse("1.2.3-alpha - 1.3.4").to_s includes 1.3.4 - "1.2.3 - 1.3.4-alpha" excludes 1.2.2 - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.5 - parse("1.2.3 - 1.3.4").to_s includes 1.3.4 - "1.2.3 - 1.3.4-alpha" stringifies as >=1.2.3 <=1.3.4-alpha - 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.2.3-0 - "1.2.3 - 1.3.4-alpha" includes 1.2.3 - "1.2.3 - 1.3.4" excludes 1.2.2 - "1.2.3-alpha - 1.3.4" includes 1.3.4 - parse("1.2.3 - 1.3.4").to_s includes 1.2.3 - "1.2.3-alpha - 1.3.4-alpha" includes 1.2.3-alpha - "1.2.3-alpha - 1.3.4" excludes 1.2.3-alph - parse("1.2.3-alpha - 1.3.4").to_s includes 1.2.3-alpha - "1.2.3-alpha - 1.3.4" stringifies as >=1.2.3-alpha <=1.3.4 - "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.4-alpha0 - "1.2.3-alpha - 1.3.4-alpha" excludes 1.2.3-alph - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 - parse("1.2.3 - 1.3.4").to_s excludes 1.2.2 - parse("1.2.3-alpha - 1.3.4").to_s excludes 1.3.5-0 - parse("1.2.3 - 1.3.4-alpha").to_s 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" includes 1.2.3 - "1.2.3 - 1.3.4" stringifies as >=1.2.3 <=1.3.4 - "1.2.3-alpha - 1.3.4" includes 1.2.3-alpha - "1.2.3 - 1.3.4" includes 1.3.4 - parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.2.3-alph - "1.2.3 - 1.3.4-alpha" includes 1.3.4-alpha - "1.2.3 - 1.3.4-alpha" excludes 1.3.4-alpha0 - parse("1.2.3-alpha - 1.3.4").to_s excludes 1.2.3-alph - parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 - "1.2.3 - 1.3.4-alpha" excludes 1.2.3-0 - "1.2.3-alpha - 1.3.4-alpha" includes 1.3.4-alpha + "> 1.2.3-alpha" includes 999.0.0 + ">= 1.2.3-alpha" excludes 1.2.4-alpha + "< 1.2.3" includes 0.0.0 + parse(">=1.2.3-alpha").to_s excludes 1.2.3-alph + "<= 1.2.3-alpha" excludes 0.0.0-0 + "<1.2.3-alpha" includes 1.2.3-alph + ">1.2.3-alpha" includes 1.2.3-alpha0 + 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" includes 1.2.3-alpha.0 + "<1.2.3-alpha" excludes 2.0.0 + "> 1.2.3" excludes 1.2.3 + parse("> 1.2.3").to_s includes 999.0.0 + "<=1.2.3-alpha" includes 1.2.3-alpha + "> 1.2.3" includes 999.0.0 + 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 0.0.0-0 + ">=1.2.3" excludes 1.2.3-0 + "<= 1.2.3-alpha" stringifies as <=1.2.3-alpha + unioned expressions + "1 <=1.2.5" excludes 0.999.999 + parse("1.2 <1.2.5").to_s excludes 1.2.5-0 + "<1.0.0 >2.0.0" stringifies as <0.0.0 + parse("1 <=1.2.5").to_s excludes 1.2.6-0 + parse("<1.0.0 >2.0.0").to_s excludes 0.0.0 + parse("1 <=1.2.5").to_s excludes 1.9.0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 5.0.0-0 + "1.2 <1.2.5" 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 3.0.0-0 + parse("1 <=1.2.5").to_s includes 1.2.5 + "1.2 <1.2.5" excludes 1.2.5-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 includes 3.0.0 + "1 <=1.2.5" stringifies as >=1.0.0 <=1.2.5 + "<1.0.0 >2.0.0" excludes 0.0.0-0 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 4.999.999 + parse("1 <=1.2.5").to_s includes 1.0.0 + "<1.0.0 >2.0.0" excludes 0.0.0 + parse("1.2 <1.2.5").to_s includes 1.2.4 + "1.2 <1.2.5" includes 1.2.4 + "1 <=1.2.5" includes 1.2.5 + "1 <=1.2.5" excludes 1.9.0 + 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 + parse("<1.0.0 >2.0.0").to_s excludes 0.0.0-0 + parse("1.2 <1.2.5").to_s includes 1.2.0 + "1 <=1.2.5" excludes 1.2.6-0 + parse("1 <=1.2.5").to_s excludes 1.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 5.0.0-0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 2.999.999 + "1.2 <1.2.5" excludes 1.2.0-0 + parse("1 <=1.2.5").to_s excludes 0.999.999 + "1.2 <1.2.5" excludes 1.9.0 + ">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" includes 1.2.0 + "1.2 <1.2.5" stringifies as >=1.2.0 <1.2.5 + parse("1.2 <1.2.5").to_s excludes 1.9.0 + "1 <=1.2.5" includes 1.0.0 + "1 <=1.2.5" excludes 1.0.0-0 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 3.0.0-0 invalid expressions raise an appropriate exception loose version expressions - "1.2.x" excludes 1.1.999 - "1.2.X" excludes 1.1.999 - "1.X" excludes 0.999.999 - parse("1.2.X").to_s excludes 1.2.0-alpha - parse("1.X").to_s includes 1.0.0 - "1.2" stringifies as >=1.2.0 <1.3.0 - parse("1.2.3").to_s excludes 1.2.3-alpha + "1.2.x" includes 1.2.999 + "1.2.x" excludes 1.3.0-0 + "1.x" stringifies as >=1.0.0 <2.0.0 + "1.2.3-alpha" excludes 1.2.3-beta + parse("1.2.X").to_s excludes 1.3.0-0 + "1" includes 1.999.0 parse("1.2.x").to_s includes 1.2.0 - parse("1.2.3").to_s includes 1.2.3 - "1.2.x" excludes 1.2.0-alpha - "1.x" excludes 2.0.0-0 - "1.X" excludes 2.0.0-0 - parse("1.X").to_s includes 1.999.0 - "1" excludes 1.0.0-alpha - parse("1.2").to_s excludes 1.3.0-0 - "1.2" includes 1.2.999 - "1.2.3-alpha" excludes 1.2.3-999 - "1.x" includes 1.0.0 - parse("1.x").to_s excludes 1.0.0-alpha - parse("1").to_s includes 1.999.0 - "1.2.X" excludes 1.3.0-0 + parse("1").to_s excludes 0.999.999 "1.2" includes 1.2.0 - "1.2" excludes 1.3.0-0 - "1.x" excludes 0.999.999 - parse("1").to_s excludes 1.0.0-alpha - parse("1").to_s includes 1.0.0 - "1.2" excludes 1.1.999 - "1" includes 1.999.0 - parse("1").to_s excludes 2.0.0-0 - "1.X" excludes 1.0.0-alpha + parse("1.2.3").to_s includes 1.2.3 + "1.X" excludes 0.999.999 "1.2.x" includes 1.2.0 + "1.X" includes 1.0.0 + parse("1.2.X").to_s excludes 1.2.0-alpha + parse("1.2").to_s includes 1.2.999 + "1.2.3" excludes 1.2.2 + "1.2.X" excludes 1.3.0-0 "1.X" stringifies as >=1.0.0 <2.0.0 - parse("1.2.X").to_s includes 1.2.999 - parse("1.x").to_s excludes 2.0.0-0 - "1.x" excludes 1.0.0-alpha - "1.2.3" excludes 1.2.3-alpha - parse("1.2").to_s includes 1.2.0 - parse("1").to_s excludes 0.999.999 - "1" includes 1.0.0 - parse("1.x").to_s includes 1.0.0 + "1.2" excludes 1.3.0-0 + "1.2.3-alpha" excludes 1.2.3-999 "1.2" excludes 1.2.0-alpha - parse("1.2.3").to_s excludes 1.2.2 - "1.X" includes 1.999.0 - parse("1.2").to_s includes 1.2.999 - parse("1.2.x").to_s includes 1.2.999 - parse("1.x").to_s 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-beta + "1.2.X" excludes 1.2.0-alpha + parse("1.X").to_s includes 1.999.0 + parse("1.2.3").to_s excludes 1.2.4-alpha + "1.2" includes 1.2.999 + "1.2" stringifies as >=1.2.0 <1.3.0 "1.2.x" stringifies as >=1.2.0 <1.3.0 - parse("1.2.X").to_s excludes 1.3.0-0 - "1.2.3-alpha" excludes 1.2.3-beta - "1.2.3" excludes 1.2.4-alpha - parse("1.2.3-alpha").to_s excludes 1.2.3-999 - "1" excludes 0.999.999 - "1.x" stringifies as >=1.0.0 <2.0.0 - "1" stringifies as >=1.0.0 <2.0.0 - "1.2.X" stringifies as >=1.2.0 <1.3.0 parse("1.x").to_s includes 1.999.0 - "1.2.3-alpha" includes 1.2.3-alpha - "1.X" includes 1.0.0 - parse("1.2.3-alpha").to_s includes 1.2.3-alpha + "1.2.X" includes 1.2.0 parse("1.2.x").to_s excludes 1.3.0-0 - parse("1.2").to_s excludes 1.2.0-alpha - "1.2.x" includes 1.2.999 - "1.2.3" excludes 1.2.2 - "1.2.X" includes 1.2.999 - "1.2.x" excludes 1.3.0-0 - parse("1.2.3-alpha").to_s excludes 1.2.3-beta + "1.2.3" excludes 1.2.4-alpha + parse("1").to_s excludes 1.0.0-alpha parse("1.2").to_s excludes 1.1.999 - parse("1.2.X").to_s includes 1.2.0 + "1.2.X" stringifies as >=1.2.0 <1.3.0 + parse("1.2.X").to_s includes 1.2.999 parse("1.X").to_s excludes 0.999.999 + parse("1.2.3-alpha").to_s excludes 1.2.3-999 + parse("1").to_s includes 1.999.0 + parse("1.x").to_s excludes 0.999.999 + "1" includes 1.0.0 + parse("1.X").to_s excludes 2.0.0-0 + "1.X" excludes 1.0.0-alpha "1" excludes 2.0.0-0 + "1.2.x" excludes 1.1.999 "1.x" includes 1.999.0 - "1.2.X" includes 1.2.0 - "1.2.3" includes 1.2.3 + parse("1.x").to_s excludes 1.0.0-alpha "1.2.3" stringifies as 1.2.3 + parse("1.2.3").to_s excludes 1.2.3-alpha parse("1.2.X").to_s excludes 1.1.999 - 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.2.x" excludes 1.2.0-alpha parse("1.2.x").to_s excludes 1.1.999 - "1.2.X" excludes 1.2.0-alpha + parse("1.2.X").to_s includes 1.2.0 + "1.2.3" excludes 1.2.3-alpha + parse("1.x").to_s includes 1.0.0 + parse("1.2.x").to_s includes 1.2.999 + "1.x" excludes 1.0.0-alpha parse("1.2.x").to_s excludes 1.2.0-alpha - "1.2.3-alpha" stringifies as 1.2.3-alpha - "reasonably close" expressions - "~1.2.3-alpha" includes 1.2.3 - parse("~ 1.2.3-alpha").to_s excludes 1.2.4-0 - "~ 1.2" includes 1.2.0 - parse("~ 1.2").to_s excludes 1.2.0-0 - parse("~ 1").to_s includes 1.0.0 - parse("~ 1").to_s excludes 0.999.999 - "~1" excludes 0.999.999 - "~1.2.3" excludes 1.2.2 - parse("~1.2.3").to_s includes 1.2.5 - "~1.2" includes 1.2.0 - parse("~1.2.3-alpha").to_s excludes 1.2.3-alph - parse("~ 1.2").to_s excludes 1.1.999 - "~1.2.3-alpha" excludes 1.2.3-alph - "~1" excludes 1.0.0-0 - "~1.2.3-alpha" includes 1.2.3-alpha - "~1.2.3" stringifies as >=1.2.3 <1.3.0 - parse("~1.2").to_s excludes 1.3.0-0 - parse("~ 1.2").to_s includes 1.2.0 - "~ 1.2.3-alpha" includes 1.2.3 - parse("~1.2.3").to_s excludes 1.2.2 - parse("~ 1").to_s excludes 2.0.0-0 - "~ 1" excludes 0.999.999 - "~ 1.2" excludes 1.3.0-0 - "~1.2.3-alpha" excludes 1.2.4-0 - "~ 1.2.3-alpha" excludes 1.2.4-0 - "~ 1.2.3" includes 1.2.5 - parse("~1.2.3").to_s excludes 1.3.0-0 - "~ 1" stringifies as >=1.0.0 <2.0.0 - parse("~ 1.2.3").to_s excludes 1.2.3-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.2" excludes 1.2.0-0 - "~1.2.3" excludes 1.3.0-0 - parse("~ 1").to_s includes 1.999.999 - "~ 1.2.3" excludes 1.2.2 - "~ 1.2.3" excludes 1.3.0-0 - "~ 1.2" stringifies as >=1.2.0 <1.3.0 - "~ 1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 - parse("~ 1.2.3").to_s includes 1.2.3 - parse("~1.2").to_s includes 1.2.0 - "~1.2" stringifies as >=1.2.0 <1.3.0 - "~1" includes 1.0.0 - parse("~1.2").to_s includes 1.2.999 - "~1.2" excludes 1.1.999 - "~1.2.3" excludes 1.2.3-0 - "~1.2" includes 1.2.999 - "~ 1.2" includes 1.2.999 - parse("~1.2.3-alpha").to_s includes 1.2.3 - "~1" stringifies as >=1.0.0 <2.0.0 - "~ 1.2.3" includes 1.2.3 - parse("~1.2").to_s excludes 1.1.999 - parse("~1.2.3-alpha").to_s excludes 1.2.4-0 - parse("~ 1.2.3").to_s excludes 1.2.2 - "~1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 - "~1.2" excludes 1.3.0-0 - parse("~1.2.3").to_s includes 1.2.3 - parse("~1").to_s excludes 1.0.0-0 - "~ 1.2" excludes 1.1.999 - "~1" excludes 2.0.0-0 - "~1.2.3" includes 1.2.5 - "~ 1.2.3-alpha" excludes 1.2.3-alph - parse("~1").to_s includes 1.0.0 - parse("~ 1.2.3-alpha").to_s includes 1.2.3 - parse("~ 1.2.3").to_s excludes 1.3.0-0 - parse("~ 1.2").to_s includes 1.2.999 - "~ 1.2.3-alpha" includes 1.2.3-alpha - parse("~1").to_s excludes 2.0.0-0 - parse("~1").to_s includes 1.999.999 - parse("~ 1.2.3-alpha").to_s includes 1.2.3-alpha - "~ 1" includes 1.999.999 - parse("~1").to_s excludes 0.999.999 - "~ 1" excludes 1.0.0-0 - "~ 1" includes 1.0.0 - parse("~1.2.3").to_s excludes 1.2.3-0 - "~1.2.3" includes 1.2.3 - parse("~1.2").to_s excludes 1.2.0-0 - "~1" includes 1.999.999 - parse("~ 1.2").to_s excludes 1.3.0-0 - parse("~ 1.2.3").to_s includes 1.2.5 - "~1.2" excludes 1.2.0-0 - parse("~ 1").to_s excludes 1.0.0-0 - parse("~1.2.3-alpha").to_s includes 1.2.3-alpha - "~ 1" excludes 2.0.0-0 - "~ 1.2.3" excludes 1.2.3-0 + "1.x" includes 1.0.0 + parse("1.2.3").to_s excludes 1.2.2 + parse("1").to_s excludes 2.0.0-0 + "1.2.3-alpha" includes 1.2.3-alpha + "1" stringifies as >=1.0.0 <2.0.0 + "1.X" excludes 2.0.0-0 + "1.x" excludes 0.999.999 + "1.2.X" includes 1.2.999 + parse("1.2").to_s excludes 1.3.0-0 + parse("1.x").to_s excludes 2.0.0-0 + parse("1.2").to_s excludes 1.2.0-alpha + "1.2" excludes 1.1.999 + "1" excludes 0.999.999 + "1.2.X" excludes 1.1.999 + "1" excludes 1.0.0-alpha + parse("1").to_s includes 1.0.0 + "1.x" excludes 2.0.0-0 + parse("1.X").to_s excludes 1.0.0-alpha + parse("1.2.3-alpha").to_s includes 1.2.3-alpha + parse("1.2").to_s includes 1.2.0 + "1.X" includes 1.999.0 + "1.2.3" includes 1.2.3 + parse("1.X").to_s includes 1.0.0 ored expressions adjacent - returns expected begin - returns nil on end - 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.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.4 || 1.2.5").to_s includes 1.2.5 - parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.5-0 - returns nil on exclude_begin? ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 - parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.3-0 + returns nil on exclude_end? ">=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.4 || 1.2.5" includes 1.2.5 + "1.2.3 || 1.2.4 || 1.2.5" stringifies as >=1.2.3 <=1.2.5 + 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 includes 1.2.3 + returns nil on end "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.5-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.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.4 || 1.2.5").to_s excludes 1.2.5-0 + returns nil on exclude_begin? "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.3 - returns nil on exclude_end? parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.3 - ">=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" stringifies as >=1.2.3 <=1.2.5 - 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" 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.4 || 1.2.5" excludes 1.2.3-0 + 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" includes 1.2.5 + ">=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" excludes 1.2.6-0 + returns expected begin overlapping + 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").to_s excludes 1.2.3-0 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 - ">=1.2.3 || 1.2.5" stringifies as >=1.2.3 - ">=1.2.3 || 1.2.5" includes 1.2.3 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 ">=1.2.3 || 1.2.5" excludes 1.2.3-0 + parse(">=1.2.3 || 1.2.5").to_s 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 includes 1.2.3 ">=1.2.3 || 1.2.5" includes 1.2.4 - 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" excludes 1.2.6-0 + ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 ">=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 includes 1.2.3 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" excludes 1.2.3-0 + ">=1.2.3 || 1.2.5" stringifies as >=1.2.3 + ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 + parse(">=1.2.3 || 1.2.5").to_s includes 1.2.3 + parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.3-0 + ">=1.2.3 || 1.2.5" includes 1.2.3 ">=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").to_s excludes 1.2.4-0 + 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" excludes 1.2.6-0 non-overlapping - "1.2.3 || 1.2.5" excludes 1.2.3-0 + returns nil on begin + "1.2.3 || 1.2.5" excludes 1.2.5-0 parse("1.2.3 || 1.2.5").to_s excludes 1.2.4 + 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 returns nil on exclude_begin? - "1.2.3 || 1.2.5" includes 1.2.3 + returns nil on exclude_end? + "1.2.3 || 1.2.5" excludes 1.2.3-0 + parse("1.2.3 || 1.2.5").to_s includes 1.2.5 "1.2.3 || 1.2.5" stringifies as 1.2.3 || 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 - parse("1.2.3 || 1.2.5").to_s excludes 1.2.3-0 - returns nil on exclude_end? - returns nil on begin - "1.2.3 || 1.2.5" excludes 1.2.5-0 - parse("1.2.3 || 1.2.5").to_s excludes 1.2.5-0 + "1.2.3 || 1.2.5" includes 1.2.3 returns nil on end - parse("1.2.3 || 1.2.5").to_s includes 1.2.5 "1.2.3 || 1.2.5" excludes 1.2.4 + "1.2.3 || 1.2.5" includes 1.2.5 The version - 1.0.0 should not be above range >= 1.0.0(>=1.0.0) - 2.4.5 should not be above range ~2.4(>=2.4.0 <2.5.0) - 1.9999.9999 should be below range >=2.0.0 - 3.2.9 should be above range <=2.0.0 - 2.4.0 should not be below range ~2.4 - 0.5.5 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) + 3.0.0 should be above range 1.2.x || 2.x + 2.0.0 should not be below range <= 2.0.0 + 1.3.4 should not be above range ||(*) + 3.0.0 should be above range <=2.0.0 + 1.0.0 should not be above range >= 1(>=1.0.0) 1.2.1 should be below range ~1.2.2 - 0.6.2 should be below range =0.7.x - 2.2.3 should be above range ~>1 - 1.2.3 should not be below range 1.2.x - 0.2.4 should not be below range >=* - 2.2.9 should be above range <=2.0.0 + 0.6.2 should be below range >=0.7.x + 1.0.1 should not be above range > 1.0.0(>1.0.0) + 0.5.5 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) 1.0.0-beta should be below range 1 - 1.2.9 should be below range >=2.0.0 - 1.0.0-0 should be below range ^1 - 1.2.3 should not be below range ~> 1 - 1.3.0 should be above range ~1.2.2 - 1.2.1 should be below range ~1.2.2 - 1.0.2 should not be above range ~ 1.0(>=1.0.0 <1.1.0) - 1.2.4 should not be below range 0.1.20 || 1.2.4 - 2.9999.9999 should be above range <2.0.0 - 0.6.1-1 should not be below range ~0.6.1-1 + 0.6.2 should not be below range <=0.7.x + 0.2.5 should not be below range >0.2.3 >0.2.4 <=0.2.5 + 1.9999.9999 should not be above range < 2.0.0(<2.0.0) + 0.7.2 should not be above range =0.7.x(>=0.7.0 <0.8.0) + 1.1.0 should not be above range >=1.0.0(>=1.0.0) + 1.9999.9999 should not be below range < 2.0.0 + 0.5.4 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) 0.7.0-asdf should be below range >=0.7.x 1.0.0-beta should not be above range 1(>=1.0.0 <2.0.0) - 0.5.4 should not be below range ~v0.5.4-pre - 1.2.3 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) - 0.6.0 should be above range ~v0.5.4-pre - 1.1.3 should be below range 1.2.* - 0.2.3 should be below range ~>1 - 1.0.0-beta.1 should be below range 1.0.0-beta.2 - 3.1.3 should be above range 1.2.x || 2.x - 0.2.9 should not be above range <= 2.0.0(<=2.0.0) - 0.7.0-asdf should not be above range =0.7.x(>=0.7.0 <0.8.0) - 0.6.2 should be below range >=0.7.x - 1.2.5 should be above range 0.1.20 || 1.2.4 + 2.5.0 should be above range ~2.4 + 1.0.0-beta should be below range 2 + 1.0.0-beta should be below range >1 + 0.7.2 should not be above range >=0.7.x(>=0.7.0) + 2.3.0 should be below range ~2.4 + 1.1.0 should not be below range >=1.0.0 + 1.0.0 should be below range 1.2.x || 2.x + 1.0.0 should be below range >=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.0.1 should not be above range >= 1.0.0(>=1.0.0) + 1.1.0 should not be below range > 1.0.0 + 0.8.0-asdf should be above range =0.7.x + 4.0.0 should be above range 1.2.* || 2.* + 0.8.0 should be above 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) 0.1.97 should not be above range >=0.1.97(>=0.1.97) - 1.0.1 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) - 0.2.3 should be below range ~1 + 1.1.3 should be below range 2.x.x + 1.2.5 should be above range 0.1.20 || 1.2.4 + 2.4.0 should not be above range ~2.4(>=2.4.0 <2.5.0) + 1.1.1 should be below range >=2.0.0 + 2.2.3 should be above range ~1 + 1.0.0 should not be below range >=1.0.0 + 0.7.0-asdf should be below range =0.7.x + 1.2.3 should not be below range ~> 1 + 1.2.3 should not be above range *(*) + 0.2.3 should not be below range >=0.2.3 || <0.0.1 + 0.2.4 should not be below range >=0.2.3 <=0.2.4 + 1.2.3 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) + 1.9999.9999 should be below range 2 + 1.2.3 should not be below range x 0.2.9 should not be below range < 2.0.0 - 1.2.3 should not be below range 1.2.* - 2.2.9 should be above range <2.0.0 - 2.0.0 should not be below range 1.0.0 - 2.0.0 - 1.2.9 should be below range >2.0.0 + 2.1.3 should not be below range 2.x.x + 1.9999.9999 should not be below range <= 2.0.0 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.3 should not be above range *(*) + 1.2.0 should be above range <1.2 + 1.1.1 should not be below range <1.2 + 2.1.3 should not be above range 2.*.*(>=2.0.0 <3.0.0) + 1.1.0 should not be above range >1.0.0(>1.0.0) + 1.2.3 should not be below range ~1 1.2.3 should not be below range 1.2.* || 2.* - 1.2.3 should not be above range ~1(>=1.0.0 <2.0.0) - 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.1 should not be above range >= 1.0.0(>=1.0.0) - 2.1.1 should be above range <=2.0.0 - 1.9999.9999 should not be above range <2.0.0(<2.0.0) - 1.0.0 should not be below range >= 1 - 3.2.0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 - 0.0.0 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) - 1.0.0 should be below range 2 - 2.1.2 should not be above range 2(>=2.0.0 <3.0.0) - 1.0.0-beta should be below range >1 - 2.5.0 should be above range ~2.4 - 1.2.3 should not be above range ~> 1(>=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.3 should be below range ~1 - 1.1.2 should be above range ~1.0 - 2.2.2 should be below range 2.3 - 2.0.0 should be below range >2.0.0 + 0.7.0-asdf should not be above range =0.7.x(>=0.7.0 <0.8.0) + 1.0.0-beta should not be below range ~1.0.0-alpha 1.0.0-beta should be above range <1 - 2.0.0 should not be below range <= 2.0.0 - 1.1.0 should not be below range ~ 1.0 - 0.1.97 should not be below range >=0.1.97 - 2.1.3 should not be below range 2.x.x - 0.2.3 should be below range ~> 1 - 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.1.3 should be below range 1.2.* - 1.2.3 should not be above range x(*) - 1.9999.9999 should not be below range <= 2.0.0 - 0.5.4-alpha should be below range ~v0.5.4-pre - 0.0.1 should be below range 1.0.0 - 2.0.0 - 0.7.1-1 should be above range ~0.6.1-1 - 0.0.0-beta should be below range 1 - 0.1.0 should be below range ~ 1.0 - 1.3.4 should not be below range || - 3.1.3 should be above range 2.x.x - 1.1.0 should not be above range >= 1.0.0(>=1.0.0) - 3.0.0 should be above range 2.x.x - 0.6.0 should be below range =0.7.x - 2.1.3 should not be above range 2.x.x(>=2.0.0 <3.0.0) - 1.1.3 should be below range 2.*.* - 2.1.3 should not be below range 1.2.* || 2.* - 3.2.2 should not be below range ~>3.2.1 - 3.0.0 should be above range 2 - 1.0.2 should not be above range ~1.0(>=1.0.0 <1.1.0) - 1.1.0 should not be above range > 1.0.0(>1.0.0) - 1.0.0 should not be above range (*) - 1.2.3 should not be above range 1.2.x(>=1.2.0 <1.3.0) - 0.1.2 should be below range ~1.0 - 1.0.1 should not be above range >=1.0.0(>=1.0.0) - 3.0.0 should be above range <=2.0.0 - 2.1.3 should not be below range 1.2.x || 2.x - 2.2.3 should be above range 1.0.0 - 2.0.0 - 1.0.0 should be below range 2.x.x - 1.1.3 should be below range 1.2.x || 2.x - 1.0.0 should not be above range >= 1(>=1.0.0) - 2.1.3 should not be below range 2.*.* - 0.2.3 should be below range 1.0.0 - 2.0.0 - 0.2.4 should not be above range >=0.2.3 <=0.2.4(>=0.2.3 <=0.2.4) - 2.1.2 should not be below range 2 - 2.2.1 should be below range 2.3 - 1.1.1 should not be below range < 1.2 - 1.2.3 should not be above range *(*) - 0.1.97 should not be above range >=0.1.97(>=0.1.97) - 1.9999.9999 should not be above range <=2.0.0(<=2.0.0) - 2.3.1 should not be below range 2.3 - 1.2.0 should be below range >1.2 - 3.5.0 should not be below range ^0.1.0 || ~3.0.1 || >4 <=5.0.0 - 3.2.0 should be below range ~>3.2.1 - 1.0.0-beta should not be below range ^1.0.0-alpha - 1.0.0 should not be above range >=1(>=1.0.0) + 0.2.3 should be below range ~1 + 1.0.0-0 should be below range ^1 1.2.4 should not be above range 0.1.20 || >1.2.4(0.1.20 || >1.2.4) - 0.2.4 should not be below range >=0.2.3 || <0.0.1 - 2.0.0 should not be below range <=2.0.0 - 1.9999.9999 should be below range 2 - 1.1.0 should not be below range > 1.0.0 - 1.0.0 should be below range 1.2.x || 2.x - 0.8.0-asdf should be above range =0.7.x - 0.2.9 should not be above range <=2.0.0(<=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) + 3.1.2 should be above range 2 + 1.1.1 should not be above range < 1.2(<1.2.0) + 1.0.0-beta should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 + 0.7.0-asdf should not be above range >=0.7.x(>=0.7.0) + 3.2.2 should not be below range ~>3.2.1 + 2.1.2 should not be above range 2(>=2.0.0 <3.0.0) + 3.2.2 should not be above range ~>3.2.1(>=3.2.1 <3.3.0) 1.2.3 should not be below range 1.2.* || 2.* - 0.2.3 should not be below range >=0.2.3 || <0.0.1 - 1.1.0 should be above range ~ 1.0 - 0.6.1-1 should not be above range ~0.6.1-1(>=0.6.1-1 <0.7.0) - 1.3.3 should be above range 1.2.* - 0.5.5 should not be below range ~v0.5.4-pre + 1.0.1 should not be below range >1.0.0 + 2.1.3 should not be below range 1.2.* || 2.* + 3.1.3 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 below range 1.2.x || 2.x + 2.0.0 should not be below range 1.0.0 - 2.0.0 + 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-asdf should be below range =0.7.x + 2.2.2 should be below range 2.3 1.2.3-foo should not be above range *(*) + 0.5.5 should not be below range ~v0.5.4-pre 1.1.3 should be below range 1.2.* || 2.* - 4.0.0 should not be below range ^3.0.0 - 0.0.0 should not be below range >=0.2.3 || <0.0.1 - 1.1.3 should be below range 1.2.x - 1.1.1 should not be above range <1.2(<1.2.0) - 1.1.1 should not be above range < 1.2(<1.2.0) + 1.0.1 should not be below range > 1.0.0 + 2.0.1 should be above range 1.0.0 - 2.0.0 + 1.2.3 should not be above range x(*) + 1.0.1 should not be above range >1.0.0(>1.0.0) + 2.0.0 should be above range <2.0.0 + 1.0.0 should be below range 2 + 2.3.1 should not be above range 2.3(>=2.3.0 <2.4.0) + 3.2.0 should be below range ~>3.2.1 + 0.1.0 should be below range ~ 1.0 + 0.1.20 should not be below range 0.1.20 || 1.2.4 + 1.1.2 should be above range ~1.0 + 1.3.3 should be above range 1.2.x + 1.0.0 should not be above range >=1.0.0(>=1.0.0) + 1.2.3 should not be below range ~>1 + 2.3.0 should be below range ~2.4 + 3.1.3 should be above range 1.2.x || 2.x + 2.5.0 should be above range ~2.4 + 0.7.2 should not be below range >=0.7.x + 3.5.0 should not be below range ^0.1.0 || ~3.0.1 || >4 <=5.0.0 + 1.3.0 should be above range 1.2.x + 2.0.0 should not be below range ^1.0.0 || ~2.0.1 + 1.1.0 should not be below range >= 1.0.0 + 1.0.1 should be below range 2.*.* + 1.2.4 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) + 1.2.1 should be below range ~1.2.2 + 1.1.0 should not be below range >1.0.0 + 1.0.0-beta should be above range < 1 + 1.0.0-beta.1 should be below range 1.0.0-beta.2 + 0.2.3 should be below range ~>1 + 1.2.4 should not be below range 0.1.20 || 1.2.4 + 1.0.1 should be above range 1.0.0 + 3.2.9 should be above range <=2.0.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) + 1.1.9999 should be below range 1.2.* || 2.* + 1.3.0 should be above range ~1.2.2 1.0.0 should not be below range 1.0.0 - 2.9999.9999 should be above range <=2.0.0 - 0.0.0 should be below range ~1.0 - 1.1.1 should not be below range <1.2 + 1.0.0 should be above range <1 + 0.0.0-beta should be below range 1 0.8.2 should be above range =0.7.x + 0.6.0 should be above range ~v0.5.4-pre + 2.5.5 should be above range ~2.4 + 1.2.3 should not be below range 1.0.0 - 2.0.0 0.2.4 should not be above range >=*(>=0.0.0) - 5.0.1 should be above range 2.*.* + 0.7.1-1 should be above range ~0.6.1-1 + 1.1.3 should be below range 1.2.* + 1.0.1 should not be below range >=1.0.0 + 0.0.0 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) + 1.1.0 should be below range 1.2.x + 1.0.2 should not be below range ~1.0 + 2.1.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) + 1.1.3 should be below range 1.2.x || 2.x + 2.9999.9999 should be above range <2.0.0 + 1.2.0 should be below range >1.2 + 2.3.1 should not be below range 2.3 + 2.0.0 should be below range >2.0.0 + 0.6.0 should be below range >=0.7.x + 0.0.0 should be below range ~1.0 + 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.4 should not be below range >=0.2.3 || <0.0.1 + 0.1.5 should be below range 0.1.20 || 1.2.4 + 0.6.1-1 should not be below range ~0.6.1-1 0.6.1-pre should be above range ~v0.5.4-pre - 2.3.0 should be below range ~2.4 - 1.0.0 should not be below range =0.1.0 + 2.1.2 should not be below range 2 + 2.0.0 should be above range 1.0.0 + 1.0.1 should not be above range >=1.0.0(>=1.0.0) + 1.2.3 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) + 2.3.5 should be below range ~2.4 + 2.4.0 should not be below range ~2.4 + 2.1.3 should not be above range 2.x.x(>=2.0.0 <3.0.0) + 0.2.4 should be below range ~>1 + 0.2.3 should be below range ~> 1 + 1.9999.9999 should not be above range <2.0.0(<2.0.0) 2.0.0-beta should be above range 1 - 0.1.5 should be below range 0.1.20 || 1.2.4 - 1.0.0-beta should not be below range ~1.0.0-alpha - 1.2.3 should not be below range 1.2.x || 2.x - 1.1.0 should not be below range >= 1.0.0 - 1.0.0 should not be below range >= 1.0.0 - 1.0.0 should not be below range >=1.0.0 - 0.2.9 should not be below range <=2.0.0 - 1.0.0-beta should be below range 2 - 0.8.0 should be above range =0.7.x - 0.0.0-0 should not be above range ^1(>=1.0.0 <2.0.0) - 1.2.0 should be above range <1.2 + 1.2.3 should not be above range 1.2.*(>=1.2.0 <1.3.0) + 0.6.1-0 should be below range ~0.6.1-1 + 1.1.1 should not be above range <1.2(<1.2.0) + 1.3.3 should be above range 1.2.* + 1.3.4 should not be below range || + 1.1.0 should be above range ~1.0 + 0.1.2 should be below range ~1.0 + 1.2.3 should not be above range ~> 1(>=1.0.0 <2.0.0) + 0.2.9 should not be below range <= 2.0.0 + 0.7.0 should be above range <0.7.x + 2.1.3 should not be below range 1.2.x || 2.x + 0.2.4 should not be above range >=0.2.3 <=0.2.4(>=0.2.3 <=0.2.4) + 1.2.1 should be below range > 1.2 + 1.3.0 should be above range ~1.2.2 + 2.2.3 should be above range ~>1 + 0.9.9 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) + 3.0.0 should be above range 2 + 1.2.3 should not be below range * + 1.1.0 should be above range ~ 1.0 + 1.2.3 should not be above range ~>1(>=1.0.0 <2.0.0) + 0.6.2 should not be above range <=0.7.x(<0.8.0) 0.7.2 should be above range <0.7.x - 1.0.1 should not be below range >=1.0.0 + 0.1.97 should not be below range >=0.1.97 + 0.0.1 should be below range 1.0.0 + 0.6.0 should be below range =0.7.x 2.2.3 should be above range ~1 - 1.0.0 should be below range >1 + 2.2.9 should be above range <=2.0.0 + 0.2.9 should not be above range <= 2.0.0(<=2.0.0) + 1.0.0 should not be above range >=1(>=1.0.0) + 2.2.9 should be above range <2.0.0 1.0.1-beta1 should be above range 1.0.0 - 1.0.0 should be below range >=2.0.0 - 1.0.0 should be above range <1 - 2.4.2 should be above range 2.3 - 2.1.3 should not be above range 2.*.*(>=2.0.0 <3.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) - 1.1.0 should not be below range >1.0.0 - 2.0.1 should be above range 1.0.0 - 2.0.0 - 1.2.4 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) - 2.9.9 should not be below range 1.0.0 - 2.0.0 - 1.2.1 should be below range > 1.2 - 2.2.3 should be above range ~1 - 1.2.3 should not be below range * - 1.3.0 should be above range 1.2.x - 1.2.3 should not be below range 1.0.0 - 2.0.0 + 1.1.1 should not be below range < 1.2 + 1.0.1 should not be below range >= 1.0.0 + 1.0.0 should be below range 2.x.x + 3.3.0 should be above range ~>3.2.1 + 5.0.1 should be above range 2.*.* + 0.0.0 should not be below range >=0.2.3 || <0.0.1 + 2.2.4 should be above range ~>1 + 1.2.9 should be below range >=2.0.0 + 1.3.3 should be above range 1.2.* + 1.0.0-beta should not be below range ^1.0.0-alpha + 1.0.0 should not be below range + 1.0.0 should not be below range >= 1.0.0 + 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.7.2 should not be below range =0.7.x + 1.0.0 should not be below range =0.1.0 + 2.1.3 should not be below range 2.*.* 1.0.2 should not be below range ~ 1.0 + 2.9.9 should not be below range 1.0.0 - 2.0.0 + 2.9999.9999 should be above range <=2.0.0 + 2.2.1 should be below range 2.3 + 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.4 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) + 2.0.0-beta should be above range 1 + 1.2.3 should not be above range 1.2.x(>=1.2.0 <1.3.0) + 0.2.4 should not be below range >=* + 1.1.3 should be below range 2.*.* + 0.6.1-1 should not be above range ~0.6.1-1(>=0.6.1-1 <0.7.0) + 0.2.3 should be below range ~1 + 1.9999.9999 should not be above range <= 2.0.0(<=2.0.0) 3.3.2 should be above range ~>3.2.1 - 2.3.5 should be below range ~2.4 - 2.0.0 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.0 + 2.2.3 should be above range 1.0.0 - 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.3.2 should be below range ~>3.2.1 - 0.6.0-asdf should be below range =0.7.x - 0.7.2 should not be above range =0.7.x(>=0.7.0 <0.8.0) - 1.0.1 should not be below range >= 1.0.0 - 0.7.2 should not be above range >=0.7.x(>=0.7.0) - 1.2.3 should not be below range ~>1 - 1.0.0 should not be above range >=1.0.0(>=1.0.0) - 1.1.0 should not be above range >1.0.0(>1.0.0) - 1.9999.9999 should not be below range <=2.0.0 - 1.2.3 should not be above range 1.2.*(>=1.2.0 <1.3.0) - 3.1.2 should be above range 2 - 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) - 0.0.0 should be below range 1.0.0 - 0.2.9 should not be below range <2.0.0 - 2.4.5 should not be below range ~2.4 - 1.1.0 should be below range 1.2.x - 2.5.0 should be above range ~2.4 - 5.0.0-0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 - 1.0.0-beta should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 - 1.1.3 should be below range 2.x.x + 2.0.0 should be below range >2.0.0 + 1.2.3 should not be above range ~1(>=1.0.0 <2.0.0) + 0.1.97 should not be above range >=0.1.97(>=0.1.97) + 2.4.2 should be above range 2.3 1.2.3 should not be below range * - 1.2.3 should not be below range 0.1.20 || 1.2.4 - 0.0.1 should be below range 1.0.0 - 0.7.0-asdf should not be above range >=0.7.x(>=0.7.0) - 1.3.0 should be above range ~1.2.2 - 1.3.3 should be above range 1.2.x + 0.2.9 should not be below range <2.0.0 + 1.2.3 should not be below range 1.2.x + 1.0.2 should not be above range ~1.0(>=1.0.0 <1.1.0) + 0.0.0-0 should not be above range ^1(>=1.0.0 <2.0.0) + 0.5.4-alpha should be below range ~v0.5.4-pre + 0.2.9 should not be above range <=2.0.0(<=2.0.0) + 1.1.0 should not be below range ~ 1.0 1.2.9 should be below range >=2.0.0 - 2.5.5 should be above range ~2.4 - 1.0.0 should not be below range - 1.2.4 should not be below range 0.1.20 || >1.2.4 - 2.0.0 should not be above range <=2.0.0(<=2.0.0) - 2.0.0 should be above range 1.0.0 - 1.1.9999 should be below range 1.2.* || 2.* + 2.4.1 should be above range 2.3 + 0.2.3 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) + 0.2.3 should be below range 1.0.0 - 2.0.0 + 0.1.20 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 ^1.0.0 || ~2.0.1(>=1.0.0 <2.0.0 || >=2.0.1 <2.1.0) + 0.0.1 should be below range 1.0.0 - 2.0.0 + 1.1.0 should not be above range > 1.0.0(>1.0.0) + 2.0.0 should not be below range <=2.0.0 + 2.0.0 should not be above range ^3.0.0(>=3.0.0 <4.0.0) + 0.5.4 should not be below range ~v0.5.4-pre + 1.1.0 should not be above range >= 1.0.0(>=1.0.0) + 1.9999.9999 should not be below range <=2.0.0 + 1.1.3 should be below range 1.2.x + 1.0.0 should not be below range >= 1 + 2.0.0 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) + 1.9999.9999 should be below range >=2.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) - 2.0.0-beta should be above range 1 + 1.0.2 should not be above range ~ 1.0(>=1.0.0 <1.1.0) + 1.2.1 should be above range < 1.2 + 0.5.4-alpha should be below range ~v0.5.4-pre + 2.1.1 should be above range <=2.0.0 3.2.3 should be above range ~> 1 - 1.0.1 should not be below range > 1.0.0 - 1.0.1 should not be below range >1.0.0 - 1.2.3 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) - 0.6.2 should not be above range <=0.7.x(<0.8.0) - 3.2.2 should not be above range ~>3.2.1(>=3.2.1 <3.3.0) + 1.0.0 should be below range >1 + 1.2.3 should not be below range 1.2.* + 3.2.0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 + 5.0.0-0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 + 1.0.0-beta should be below range > 1 + 1.0.0 should not be above range >= 1.0.0(>=1.0.0) + 1.2.4 should not be below range 0.1.20 || >1.2.4 + 1.9999.9999 should not be below range <2.0.0 + 1.0.0 should not be below range >=1 + 0.6.2 should be below range =0.7.x 0.2.9 should not be above range <2.0.0(<2.0.0) - 1.2.3 should not be below range x - 0.6.1-0 should be below range ~0.6.1-1 - 0.6.0 should be below range >=0.7.x - 2.0.0 should not be above range ^3.0.0(>=3.0.0 <4.0.0) - 0.6.2 should not be below range <=0.7.x - 0.2.9 should not be below range <= 2.0.0 - 0.1.20 should not be below range 0.1.20 || 1.2.4 - 3.0.0 should be above range 1.2.x || 2.x - 1.1.0 should be above range ~1.0 - 0.2.5 should not be above range >0.2.3 >0.2.4 <=0.2.5(>0.2.4 <=0.2.5) - 0.7.2 should not be below range =0.7.x + 3.1.3 should be above range 2.*.* + 3.0.0 should be above range 2.x.x + 3.1.3 should be above 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) - 4.0.0 should be above range 1.2.* || 2.* - 0.7.0 should be above range <0.7.x - 1.3.4 should not be above range ||(*) - 2.3.0 should be below range ~2.4 - 0.2.4 should be below range ~>1 - 1.0.2 should not be below range ~1.0 - 0.7.2 should not be below range >=0.7.x - 2.0.0 should not be below range ^1.0.0 || ~2.0.1 - 1.0.0 should not be below range >=1 + 1.2.3 should not be below range 0.1.20 || 1.2.4 + 1.1.3 should be below range 1.2.* + 0.0.0 should be below range 1.0.0 + 2.4.5 should not be below range ~2.4 + 1.9999.9999 should not be above range <=2.0.0(<=2.0.0) 0.2.9 should not be above range < 2.0.0(<2.0.0) - 1.0.0 should not be above range 1.0.0(1.0.0) - 0.1.20 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) - 2.4.1 should be above range 2.3 - 3.1.3 should be above range 2.*.* - 2.3.1 should not be above range 2.3(>=2.3.0 <2.4.0) - 1.9999.9999 should not be above range <= 2.0.0(<=2.0.0) - 1.2.1 should be above range < 1.2 - 1.0.1 should not be above range > 1.0.0(>1.0.0) - 1.0.0-beta should be above range < 1 - 0.5.4-alpha should be below range ~v0.5.4-pre - 1.9999.9999 should not be below range <2.0.0 - 2.2.4 should be above range ~>1 - 3.3.0 should be above range ~>3.2.1 - 0.2.4 should not be below range >=0.2.3 <=0.2.4 - 2.0.0 should be below range >2.0.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 below range >0.2.3 >0.2.4 <=0.2.5 - 2.4.0 should not be above range ~2.4(>=2.4.0 <2.5.0) - 1.1.0 should not be above range >=1.0.0(>=1.0.0) - 1.1.1 should be below range >=2.0.0 - 1.0.1 should be above range 1.0.0 - 1.3.3 should be above range 1.2.* - 2.0.0 should be above range <2.0.0 - 1.9999.9999 should not be above range < 2.0.0(<2.0.0) - 0.2.3 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) - 0.7.0-asdf should be below range =0.7.x - 0.5.4 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) - 0.2.4 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) - 1.0.1 should be below range 2.*.* - 1.9999.9999 should not be below range < 2.0.0 - 1.0.0-beta should be below range > 1 - 3.1.3 should be above range 1.2.* || 2.* - 1.2.3 should not be below range ~1 - 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) + 1.0.0 should not be above range (*) + 2.4.5 should not be above range ~2.4(>=2.4.0 <2.5.0) #intersection cannot intersect with non-VersionRanges - between >=10.0.0 <5.0.0 & - 6.0.0 - 1.0.0 - 4.0.0 - 1.0.0 - 11.0.0 - 4.0.0 - 5.0.0 - 1.0.0 - >=5.0.0 <1.0.0 - 10.0.0 - 5.0.0 - 15.0.0 - 11.0.0 - 15.0.0 - 10.0.0 - 15.0.0 - 9.0.0 - >=7.0.0 <1.0.0 - 9.0.0 - 6.0.0 - >=10.0.0 <5.0.0 is commutative - 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 & >=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 & >=7.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 & 6.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 & 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 & 6.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 & 6.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 & 9.0.0 - 6.0.0 + between >=10.0.0 <5.0.0 & 15.0.0 - 9.0.0 between >=10.0.0 <5.0.0 & >=7.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 & 9.0.0 - 6.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 - 11.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 & 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 & 5.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 & 10.0.0 - 5.0.0 + between 10.0.0 - 5.0.0 & >=7.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 & >=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 & 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 & 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 & - 9.0.0 - 6.0.0 - 4.0.0 - 1.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 & >=10.0.0 <5.0.0 6.0.0 - 1.0.0 - 15.0.0 - 11.0.0 - >=5.0.0 <1.0.0 + >=7.0.0 <1.0.0 15.0.0 - 9.0.0 + 11.0.0 - 4.0.0 10.0.0 - 5.0.0 + 15.0.0 - 10.0.0 5.0.0 - 1.0.0 + 9.0.0 - 6.0.0 + 15.0.0 - 11.0.0 + >=5.0.0 <1.0.0 + 4.0.0 - 1.0.0 + between 10.0.0 - 5.0.0 & + >=5.0.0 <1.0.0 + 10.0.0 - 5.0.0 >=7.0.0 <1.0.0 + 5.0.0 - 1.0.0 + 15.0.0 - 11.0.0 + 6.0.0 - 1.0.0 + >=10.0.0 <5.0.0 11.0.0 - 4.0.0 - -SemanticPuppet::Dependency::GraphNode - #<< - does not append nodes with unknown names - does not append unsatisfying nodes - appends satisfying nodes to the dependencies - #populate_children - accepts a graph solution and populates it across all nodes - saves all relevant nodes as its children - #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 - #<=> - can be compared + 15.0.0 - 9.0.0 + 15.0.0 - 10.0.0 + 9.0.0 - 6.0.0 + 4.0.0 - 1.0.0 SemanticPuppet::Dependency .query - with one source - queries the source for each dependency - returns a ModuleRelease with the requested dependencies - populates all returned ModuleReleases with related dependencies - populates the returned ModuleRelease with related dependencies - queries the source for each dependency only once - queries the source for release information with multiple sources resolves all dependencies against all sources queries each source in turn without sources returns an unsatisfied ModuleRelease + with one source + queries the source for each dependency only once + queries the source for release information + populates the returned ModuleRelease with related dependencies + returns a ModuleRelease with the requested dependencies + populates all returned ModuleReleases with related dependencies + queries the source for each dependency .resolve + that violate graph constraints + that cannot be resolved + fails with an appropriate message + that can be resolved + terminates + for a module without dependencies + returns the greatest release matching the version range + 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 + when the query omits all versions + fails with an appropriate message for a module with dependencies returns the greatest releases matching the dependency range - when the dependency has no stable versions - returns the greatest prerelease version 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 - for a module with circular dependencies - that cannot be resolved - fails with an appropriate message - that can be resolved - terminates + when the dependency has no stable versions + returns the greatest prerelease version matching the range 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 - 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 + for a module with circular dependencies that cannot be resolved fails with an appropriate message that can be resolved terminates - 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 includes both stable and prerelease versions - returns the greatest stable release matching the range - when the query omits all versions + for a module with competing dependencies + that overlap + returns the greatest release satisfying all dependencies + that do not overlap fails with an appropriate message .sources defaults to an empty list - can be modified by using #add_source is frozen + can be modified by using #add_source can be emptied by using #clear_sources +SemanticPuppet::Dependency::GraphNode + #<< + does not append unsatisfying nodes + does not append nodes with unknown names + appends satisfying nodes to the dependencies + #<=> + can be compared + #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 + #populate_children + accepts a graph solution and populates it across all nodes + saves all relevant nodes as its children + SemanticPuppet::Dependency::Graph - #satisfies_graph? - returns false if the solution violates any graph constraint - returns false if the solution violates a graph constraint - returns true if the solution violates no graph constraints - #add_constraint - permits multiple constraints against the same module name - can create a new constraint on a module #initialize + implements the GraphNode protocol 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 #satisfies_dependency? - is satisfied by modules that do fulfill all the constraints - is not satisfied by modules that do not fulfill all the constraints 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 is not satisfied by modules it does not depend on #add_graph_constraint can create a new constraint on a graph permits multiple graph constraints + #satisfies_graph? + returns false if the solution violates any graph constraint + returns false if the solution violates a graph constraint + returns true if the solution violates no graph constraints + +SemanticPuppet::Version + .valid? + Spec v1.0.0 + Section 2 + permits zeroes in version number parts + rejects versions that contain too many parts + rejects versions that contain too few parts + rejects versions that contain non-integers + Section 4 + permits numeric prerelease identifiers of zero + permits non-numeric prerelease identifiers with leading zeroes + rejects empty prerelease versions + rejects numeric prerelease identifiers with leading zeroes + rejects prerelease identifiers with non-alphanumerics + Spec v2.0.0 + Section 9 + rejects numeric prerelease identifiers with leading zeroes + permits non-numeric prerelease identifiers + rejects prerelease identifiers with non-alphanumerics + permits non-numeric prerelease identifiers with leading zeroes + rejects empty prerelease version identifiers + permits numeric prerelease identifiers of zero + rejects empty prerelease versions + Section 10 + permits numeric build identifiers of zero + permits numeric build identifiers with leading zeroes + rejects build identifiers with non-alphanumerics + rejects empty build identifiers + permits non-numeric build identifiers with leading zeroes + rejects empty build metadata + Section 2 + rejects versions that contain too many parts + permits zeroes in version number parts + rejects versions that contain non-integers + rejects versions that contain negative integers + rejects versions that contain too few parts + rejects version numbers containing leading zeroes + #<=> + Spec v2.0.0 + Section 11 + comparisons without prereleases + sorted order + comparisons against prereleases + prereleases have lower precedence + comparisions between prereleases + identifiers are parsed left-to-right + non-numeric identifiers have a higher precendence + numeric identifiers sort numerically + non-numeric identifiers sort ASCIIbetically + larger identifier sets have precendence + build metadata does figure into equality + build metadata does not figure into precendence + identical prereleases are equal + sorted order + Spec v1.0.0 + Section 4 + sorted order + #== + should yield true when comparing two equal instances + should yield false when compared to something that is not a Version + should yield false when the patch differs + should yield false when the major differs + should yield false when the minor differs + should yield false when the prerelease differs + #next + with :major + removes any build information + does not modify the original version + returns the next major version + removes any prerelease information + resets the minor and patch versions to 0 + with :minor + returns the next minor version + removes any build information + does not modify the original version + removes any prerelease information + resets the patch version to 0 + with :patch + does not modify the original version + returns the next patch version + removes any build information + removes any prerelease information + .parse + Spec v1.0.0 + Section 2 + rejects versions that contain non-integers + rejects versions that contain too many parts + rejects versions that contain too few parts + permits zeroes in version number parts + examples + 1.11.0 + 1.10.0 + 1.9.0 + Section 4 + rejects prerelease identifiers with non-alphanumerics + rejects numeric prerelease identifiers with leading zeroes + rejects empty prerelease versions + permits non-numeric prerelease identifiers with leading zeroes + permits numeric prerelease identifiers of zero + examples + 1.0.0-beta2 + 1.0.0-beta1 + 1.0.0-rc1 + 1.0.0-alpha1 + Spec v2.0.0 + Section 9 + permits numeric prerelease identifiers of zero + rejects prerelease identifiers with non-alphanumerics + rejects empty prerelease versions + rejects empty prerelease version identifiers + rejects numeric prerelease identifiers with leading zeroes + permits non-numeric prerelease identifiers with leading zeroes + examples + 1.0.0-0.3.7 + 1.0.0-alpha + 1.0.0-alpha.1 + 1.0.0-x.7.z.92 + Section 10 + permits non-numeric build identifiers with leading zeroes + rejects empty build identifiers + rejects empty build metadata + rejects build identifiers with non-alphanumerics + permits numeric build identifiers of zero + permits numeric build identifiers with leading zeroes + examples + 1.0.0+20130313144700 + 1.0.0-beta+exp.sha.5114f85 + 1.0.0-alpha+001 + Section 2 + 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 versions that contain negative integers + examples + 1.11.0 + 1.10.0 + 1.9.0 -Finished in 1.9 seconds (files took 1.12 seconds to load) +Finished in 6.39 seconds (files took 6.25 seconds to load) 985 examples, 0 failures -Randomized with seed 62110 +Randomized with seed 31849 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -2083,12 +2154,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/16176/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/16176/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/21729 and its subdirectories -I: Current time: Tue Jul 20 21:06:04 -12 2021 -I: pbuilder-time-stamp: 1626858364 +I: removing directory /srv/workspace/pbuilder/16176 and its subdirectories +I: Current time: Wed Jul 21 23:16:05 +14 2021 +I: pbuilder-time-stamp: 1626858965