Diff of the two buildlogs: -- --- b1/build.log 2023-05-17 19:22:24.076942090 +0000 +++ b2/build.log 2023-05-17 19:33:39.943248304 +0000 @@ -1,6 +1,6 @@ I: pbuilder: network access will be disabled during build -I: Current time: Wed May 17 07:20:06 -12 2023 -I: pbuilder-time-stamp: 1684351206 +I: Current time: Thu May 18 09:22:43 +14 2023 +I: pbuilder-time-stamp: 1684351363 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bookworm-reproducible-base.tgz] I: copying local configuration @@ -16,7 +16,7 @@ I: copying [./ruby-semantic-puppet_1.0.4.orig.tar.gz] I: copying [./ruby-semantic-puppet_1.0.4-1.debian.tar.xz] I: Extracting source -gpgv: Signature made Thu Nov 25 02:00:04 2021 -12 +gpgv: Signature made Fri Nov 26 04:00:04 2021 +14 gpgv: using RSA key BEED4DED5544A4C03E283DC74BCD0567C296D05D gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./ruby-semantic-puppet_1.0.4-1.dsc: no acceptable signature found @@ -25,135 +25,167 @@ dpkg-source: info: unpacking ruby-semantic-puppet_1.0.4-1.debian.tar.xz I: Not using root during the build. I: Installing the build-deps -I: user script /srv/workspace/pbuilder/916/tmp/hooks/D02_print_environment starting +I: user script /srv/workspace/pbuilder/23732/tmp/hooks/D01_modify_environment starting +debug: Running on wbq0. +I: Changing host+domainname to test build reproducibility +I: Adding a custom variable just for the fun of it... +I: Changing /bin/sh to bash +'/bin/sh' -> '/bin/bash' +lrwxrwxrwx 1 root root 9 May 18 09:24 /bin/sh -> /bin/bash +I: Setting pbuilder2's login shell to /bin/bash +I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other +I: user script /srv/workspace/pbuilder/23732/tmp/hooks/D01_modify_environment finished +I: user script /srv/workspace/pbuilder/23732/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 parallel=3 ' - DISTRIBUTION='bookworm' - HOME='/root' - HOST_ARCH='armhf' + BASH=/bin/sh + BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath + BASH_ALIASES=() + BASH_ARGC=() + BASH_ARGV=() + BASH_CMDS=() + BASH_LINENO=([0]="12" [1]="0") + BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. + BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") + BASH_VERSINFO=([0]="5" [1]="2" [2]="15" [3]="1" [4]="release" [5]="arm-unknown-linux-gnueabihf") + BASH_VERSION='5.2.15(1)-release' + BUILDDIR=/build + BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' + BUILDUSERNAME=pbuilder2 + BUILD_ARCH=armhf + DEBIAN_FRONTEND=noninteractive + DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=4 ' + DIRSTACK=() + DISTRIBUTION=bookworm + EUID=0 + FUNCNAME=([0]="Echo" [1]="main") + GROUPS=() + HOME=/root + HOSTNAME=i-capture-the-hostname + HOSTTYPE=arm + HOST_ARCH=armhf IFS=' ' - INVOCATION_ID='33a37ff382974ae3b46e1c7d0d05c348' - 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='916' - PS1='# ' - PS2='> ' + INVOCATION_ID=f1e54b72b7a641539b2097c5930e7c2a + 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=23732 PS4='+ ' - PWD='/' - SHELL='/bin/bash' - SHLVL='2' - SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.Z1J4DwDh/pbuilderrc_VUF4 --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.Z1J4DwDh/b1 --logfile b1/build.log ruby-semantic-puppet_1.0.4-1.dsc' - SUDO_GID='114' - SUDO_UID='110' - 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:3142/' + PWD=/ + SHELL=/bin/bash + SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix + SHLVL=3 + SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.Z1J4DwDh/pbuilderrc_Cx08 --distribution bookworm --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.Z1J4DwDh/b2 --logfile b2/build.log --extrapackages usrmerge ruby-semantic-puppet_1.0.4-1.dsc' + SUDO_GID=113 + SUDO_UID=107 + 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:3142/ I: uname -a - Linux jtx1b 5.10.0-23-arm64 #1 SMP Debian 5.10.179-1 (2023-05-12) aarch64 GNU/Linux + Linux i-capture-the-hostname 5.10.0-23-armmp #1 SMP Debian 5.10.179-1 (2023-05-12) armv7l GNU/Linux I: ls -l /bin total 5072 - -rwxr-xr-x 1 root root 838488 Apr 23 09:24 bash - -rwxr-xr-x 3 root root 67144 Sep 18 2022 bunzip2 - -rwxr-xr-x 3 root root 67144 Sep 18 2022 bzcat - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzcmp -> bzdiff - -rwxr-xr-x 1 root root 2225 Sep 18 2022 bzdiff - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzegrep -> bzgrep - -rwxr-xr-x 1 root root 4893 Nov 27 2021 bzexe - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzfgrep -> bzgrep - -rwxr-xr-x 1 root root 3775 Sep 18 2022 bzgrep - -rwxr-xr-x 3 root root 67144 Sep 18 2022 bzip2 - -rwxr-xr-x 1 root root 67112 Sep 18 2022 bzip2recover - lrwxrwxrwx 1 root root 6 Sep 18 2022 bzless -> bzmore - -rwxr-xr-x 1 root root 1297 Sep 18 2022 bzmore - -rwxr-xr-x 1 root root 67632 Sep 20 2022 cat - -rwxr-xr-x 1 root root 67676 Sep 20 2022 chgrp - -rwxr-xr-x 1 root root 67644 Sep 20 2022 chmod - -rwxr-xr-x 1 root root 67684 Sep 20 2022 chown - -rwxr-xr-x 1 root root 133532 Sep 20 2022 cp - -rwxr-xr-x 1 root root 132868 Jan 5 01:20 dash - -rwxr-xr-x 1 root root 133220 Sep 20 2022 date - -rwxr-xr-x 1 root root 67732 Sep 20 2022 dd - -rwxr-xr-x 1 root root 68104 Sep 20 2022 df - -rwxr-xr-x 1 root root 133632 Sep 20 2022 dir - -rwxr-xr-x 1 root root 59128 Mar 22 21:02 dmesg - lrwxrwxrwx 1 root root 8 Dec 19 01:33 dnsdomainname -> hostname - lrwxrwxrwx 1 root root 8 Dec 19 01:33 domainname -> hostname - -rwxr-xr-x 1 root root 67560 Sep 20 2022 echo - -rwxr-xr-x 1 root root 41 Jan 24 02:43 egrep - -rwxr-xr-x 1 root root 67548 Sep 20 2022 false - -rwxr-xr-x 1 root root 41 Jan 24 02:43 fgrep - -rwxr-xr-x 1 root root 55748 Mar 22 21:02 findmnt - -rwsr-xr-x 1 root root 26208 Mar 22 20:15 fusermount - -rwxr-xr-x 1 root root 128608 Jan 24 02:43 grep - -rwxr-xr-x 2 root root 2346 Apr 9 2022 gunzip - -rwxr-xr-x 1 root root 6447 Apr 9 2022 gzexe - -rwxr-xr-x 1 root root 64220 Apr 9 2022 gzip - -rwxr-xr-x 1 root root 67032 Dec 19 01:33 hostname - -rwxr-xr-x 1 root root 67720 Sep 20 2022 ln - -rwxr-xr-x 1 root root 35132 Mar 22 21:51 login - -rwxr-xr-x 1 root root 133632 Sep 20 2022 ls - -rwxr-xr-x 1 root root 136808 Mar 22 21:02 lsblk - -rwxr-xr-x 1 root root 67800 Sep 20 2022 mkdir - -rwxr-xr-x 1 root root 67764 Sep 20 2022 mknod - -rwxr-xr-x 1 root root 67596 Sep 20 2022 mktemp - -rwxr-xr-x 1 root root 38504 Mar 22 21:02 more - -rwsr-xr-x 1 root root 38496 Mar 22 21:02 mount - -rwxr-xr-x 1 root root 9824 Mar 22 21:02 mountpoint - -rwxr-xr-x 1 root root 133532 Sep 20 2022 mv - lrwxrwxrwx 1 root root 8 Dec 19 01:33 nisdomainname -> hostname - lrwxrwxrwx 1 root root 14 Apr 2 18:25 pidof -> /sbin/killall5 - -rwxr-xr-x 1 root root 67608 Sep 20 2022 pwd - lrwxrwxrwx 1 root root 4 Apr 23 09:24 rbash -> bash - -rwxr-xr-x 1 root root 67600 Sep 20 2022 readlink - -rwxr-xr-x 1 root root 67672 Sep 20 2022 rm - -rwxr-xr-x 1 root root 67600 Sep 20 2022 rmdir - -rwxr-xr-x 1 root root 67400 Nov 2 2022 run-parts - -rwxr-xr-x 1 root root 133372 Jan 5 07:55 sed - lrwxrwxrwx 1 root root 4 Jan 5 01:20 sh -> dash - -rwxr-xr-x 1 root root 67584 Sep 20 2022 sleep - -rwxr-xr-x 1 root root 67644 Sep 20 2022 stty - -rwsr-xr-x 1 root root 50800 Mar 22 21:02 su - -rwxr-xr-x 1 root root 67584 Sep 20 2022 sync - -rwxr-xr-x 1 root root 336764 Apr 6 02:25 tar - -rwxr-xr-x 1 root root 67144 Nov 2 2022 tempfile - -rwxr-xr-x 1 root root 133224 Sep 20 2022 touch - -rwxr-xr-x 1 root root 67548 Sep 20 2022 true - -rwxr-xr-x 1 root root 9768 Mar 22 20:15 ulockmgr_server - -rwsr-xr-x 1 root root 22108 Mar 22 21:02 umount - -rwxr-xr-x 1 root root 67572 Sep 20 2022 uname - -rwxr-xr-x 2 root root 2346 Apr 9 2022 uncompress - -rwxr-xr-x 1 root root 133632 Sep 20 2022 vdir - -rwxr-xr-x 1 root root 42608 Mar 22 21:02 wdctl - lrwxrwxrwx 1 root root 8 Dec 19 01:33 ypdomainname -> hostname - -rwxr-xr-x 1 root root 1984 Apr 9 2022 zcat - -rwxr-xr-x 1 root root 1678 Apr 9 2022 zcmp - -rwxr-xr-x 1 root root 6460 Apr 9 2022 zdiff - -rwxr-xr-x 1 root root 29 Apr 9 2022 zegrep - -rwxr-xr-x 1 root root 29 Apr 9 2022 zfgrep - -rwxr-xr-x 1 root root 2081 Apr 9 2022 zforce - -rwxr-xr-x 1 root root 8103 Apr 9 2022 zgrep - -rwxr-xr-x 1 root root 2206 Apr 9 2022 zless - -rwxr-xr-x 1 root root 1842 Apr 9 2022 zmore - -rwxr-xr-x 1 root root 4577 Apr 9 2022 znew -I: user script /srv/workspace/pbuilder/916/tmp/hooks/D02_print_environment finished + -rwxr-xr-x 1 root root 838488 Apr 24 11:24 bash + -rwxr-xr-x 3 root root 67144 Sep 19 2022 bunzip2 + -rwxr-xr-x 3 root root 67144 Sep 19 2022 bzcat + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzcmp -> bzdiff + -rwxr-xr-x 1 root root 2225 Sep 19 2022 bzdiff + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzegrep -> bzgrep + -rwxr-xr-x 1 root root 4893 Nov 28 2021 bzexe + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzfgrep -> bzgrep + -rwxr-xr-x 1 root root 3775 Sep 19 2022 bzgrep + -rwxr-xr-x 3 root root 67144 Sep 19 2022 bzip2 + -rwxr-xr-x 1 root root 67112 Sep 19 2022 bzip2recover + lrwxrwxrwx 1 root root 6 Sep 19 2022 bzless -> bzmore + -rwxr-xr-x 1 root root 1297 Sep 19 2022 bzmore + -rwxr-xr-x 1 root root 67632 Sep 21 2022 cat + -rwxr-xr-x 1 root root 67676 Sep 21 2022 chgrp + -rwxr-xr-x 1 root root 67644 Sep 21 2022 chmod + -rwxr-xr-x 1 root root 67684 Sep 21 2022 chown + -rwxr-xr-x 1 root root 133532 Sep 21 2022 cp + -rwxr-xr-x 1 root root 132868 Jan 6 03:20 dash + -rwxr-xr-x 1 root root 133220 Sep 21 2022 date + -rwxr-xr-x 1 root root 67732 Sep 21 2022 dd + -rwxr-xr-x 1 root root 68104 Sep 21 2022 df + -rwxr-xr-x 1 root root 133632 Sep 21 2022 dir + -rwxr-xr-x 1 root root 59128 Mar 23 23:02 dmesg + lrwxrwxrwx 1 root root 8 Dec 20 03:33 dnsdomainname -> hostname + lrwxrwxrwx 1 root root 8 Dec 20 03:33 domainname -> hostname + -rwxr-xr-x 1 root root 67560 Sep 21 2022 echo + -rwxr-xr-x 1 root root 41 Jan 25 04:43 egrep + -rwxr-xr-x 1 root root 67548 Sep 21 2022 false + -rwxr-xr-x 1 root root 41 Jan 25 04:43 fgrep + -rwxr-xr-x 1 root root 55748 Mar 23 23:02 findmnt + -rwsr-xr-x 1 root root 26208 Mar 23 22:15 fusermount + -rwxr-xr-x 1 root root 128608 Jan 25 04:43 grep + -rwxr-xr-x 2 root root 2346 Apr 10 2022 gunzip + -rwxr-xr-x 1 root root 6447 Apr 10 2022 gzexe + -rwxr-xr-x 1 root root 64220 Apr 10 2022 gzip + -rwxr-xr-x 1 root root 67032 Dec 20 03:33 hostname + -rwxr-xr-x 1 root root 67720 Sep 21 2022 ln + -rwxr-xr-x 1 root root 35132 Mar 23 23:51 login + -rwxr-xr-x 1 root root 133632 Sep 21 2022 ls + -rwxr-xr-x 1 root root 136808 Mar 23 23:02 lsblk + -rwxr-xr-x 1 root root 67800 Sep 21 2022 mkdir + -rwxr-xr-x 1 root root 67764 Sep 21 2022 mknod + -rwxr-xr-x 1 root root 67596 Sep 21 2022 mktemp + -rwxr-xr-x 1 root root 38504 Mar 23 23:02 more + -rwsr-xr-x 1 root root 38496 Mar 23 23:02 mount + -rwxr-xr-x 1 root root 9824 Mar 23 23:02 mountpoint + -rwxr-xr-x 1 root root 133532 Sep 21 2022 mv + lrwxrwxrwx 1 root root 8 Dec 20 03:33 nisdomainname -> hostname + lrwxrwxrwx 1 root root 14 Apr 3 20:25 pidof -> /sbin/killall5 + -rwxr-xr-x 1 root root 67608 Sep 21 2022 pwd + lrwxrwxrwx 1 root root 4 Apr 24 11:24 rbash -> bash + -rwxr-xr-x 1 root root 67600 Sep 21 2022 readlink + -rwxr-xr-x 1 root root 67672 Sep 21 2022 rm + -rwxr-xr-x 1 root root 67600 Sep 21 2022 rmdir + -rwxr-xr-x 1 root root 67400 Nov 3 2022 run-parts + -rwxr-xr-x 1 root root 133372 Jan 6 09:55 sed + lrwxrwxrwx 1 root root 9 May 18 09:24 sh -> /bin/bash + -rwxr-xr-x 1 root root 67584 Sep 21 2022 sleep + -rwxr-xr-x 1 root root 67644 Sep 21 2022 stty + -rwsr-xr-x 1 root root 50800 Mar 23 23:02 su + -rwxr-xr-x 1 root root 67584 Sep 21 2022 sync + -rwxr-xr-x 1 root root 336764 Apr 7 04:25 tar + -rwxr-xr-x 1 root root 67144 Nov 3 2022 tempfile + -rwxr-xr-x 1 root root 133224 Sep 21 2022 touch + -rwxr-xr-x 1 root root 67548 Sep 21 2022 true + -rwxr-xr-x 1 root root 9768 Mar 23 22:15 ulockmgr_server + -rwsr-xr-x 1 root root 22108 Mar 23 23:02 umount + -rwxr-xr-x 1 root root 67572 Sep 21 2022 uname + -rwxr-xr-x 2 root root 2346 Apr 10 2022 uncompress + -rwxr-xr-x 1 root root 133632 Sep 21 2022 vdir + -rwxr-xr-x 1 root root 42608 Mar 23 23:02 wdctl + lrwxrwxrwx 1 root root 8 Dec 20 03:33 ypdomainname -> hostname + -rwxr-xr-x 1 root root 1984 Apr 10 2022 zcat + -rwxr-xr-x 1 root root 1678 Apr 10 2022 zcmp + -rwxr-xr-x 1 root root 6460 Apr 10 2022 zdiff + -rwxr-xr-x 1 root root 29 Apr 10 2022 zegrep + -rwxr-xr-x 1 root root 29 Apr 10 2022 zfgrep + -rwxr-xr-x 1 root root 2081 Apr 10 2022 zforce + -rwxr-xr-x 1 root root 8103 Apr 10 2022 zgrep + -rwxr-xr-x 1 root root 2206 Apr 10 2022 zless + -rwxr-xr-x 1 root root 1842 Apr 10 2022 zmore + -rwxr-xr-x 1 root root 4577 Apr 10 2022 znew +I: user script /srv/workspace/pbuilder/23732/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy @@ -326,7 +358,7 @@ Get: 129 http://deb.debian.org/debian bookworm/main armhf ruby-rspec-expectations all 3.12.0c0e1m1s0-1 [89.5 kB] Get: 130 http://deb.debian.org/debian bookworm/main armhf ruby-rspec-mocks all 3.12.0c0e1m1s0-1 [79.5 kB] Get: 131 http://deb.debian.org/debian bookworm/main armhf ruby-rspec all 3.12.0c0e1m1s0-1 [5084 B] -Fetched 44.6 MB in 5s (9885 kB/s) +Fetched 44.6 MB in 11s (4179 kB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-minimal:armhf. (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 ... 19329 files and directories currently installed.) @@ -873,8 +905,19 @@ Writing extended state information... Building tag database... -> Finished parsing the build-deps +Reading package lists... +Building dependency tree... +Reading state information... +usrmerge is already the newest version (35). +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. I: Building the package -I: Running cd /build/ruby-semantic-puppet-1.0.4/ && 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.4-1_source.changes +I: user script /srv/workspace/pbuilder/23732/tmp/hooks/A99_set_merged_usr starting +Re-configuring usrmerge... +removed '/etc/unsupported-skip-usrmerge-conversion' +The system has been successfully converted. +I: user script /srv/workspace/pbuilder/23732/tmp/hooks/A99_set_merged_usr finished +hostname: Name or service not known +I: Running cd /build/ruby-semantic-puppet-1.0.4/ && 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.4-1_source.changes dpkg-buildpackage: info: source package ruby-semantic-puppet dpkg-buildpackage: info: source version 1.0.4-1 dpkg-buildpackage: info: source distribution unstable @@ -903,7 +946,7 @@ dh_prep -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-semantic-puppet/ -O--buildsystem=ruby dh_ruby --install /build/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet -/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20230517-5591-54p5d5/gemspec +/usr/bin/ruby3.1 -S gem build --config-file /dev/null --verbose /tmp/d20230518-29022-bwzcdu/gemspec Failed to load /dev/null because it doesn't contain valid YAML hash WARNING: open-ended dependency on rake (>= 0, development) is not recommended use a bounded requirement, such as '~> x.y' @@ -922,7 +965,7 @@ Name: semantic_puppet Version: 1.0.4 File: semantic_puppet-1.0.4.gem -/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-semantic-puppet/usr/share/rubygems-integration/all /tmp/d20230517-5591-54p5d5/semantic_puppet-1.0.4.gem +/usr/bin/ruby3.1 -S gem install --config-file /dev/null --verbose --local --verbose --no-document --ignore-dependencies --install-dir debian/ruby-semantic-puppet/usr/share/rubygems-integration/all /tmp/d20230518-29022-bwzcdu/semantic_puppet-1.0.4.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all/gems/semantic_puppet-1.0.4/lib/semantic_puppet.rb /build/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all/gems/semantic_puppet-1.0.4/lib/semantic_puppet/dependency.rb @@ -968,1113 +1011,1113 @@ All examples were filtered out; ignoring {:focus=>true} -Randomized with seed 53260 +Randomized with seed 52254 -SemanticPuppet::Dependency::Graph - #satisfies_dependency? - is satisfied by modules that do fulfill all the constraints - is not satisfied by modules that do not fulfill the constraint - is not satisfied by modules it does not depend on - is not satisfied by modules that do not fulfill all the constraints - #add_constraint - can create a new constraint on a module - permits multiple constraints against the same module name - #initialize - adds constraints for every key in the passed hash - adds the named dependencies for every key in the passed hash - can be called without arguments - implements the GraphNode protocol - #add_graph_constraint - permits multiple graph constraints - can create a new constraint on a 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 +SemanticPuppet::Dependency::GraphNode + #populate_children + saves all relevant nodes as its children + accepts a graph solution and populates it across all nodes + #<=> + can be compared + #<< + does not append unsatisfying nodes + does not append nodes with unknown names + sorts once the dependencies for a specific node + appends satisfying nodes to the dependencies + sorts the dependencies for each addition to the same node + dependencies + are added by #add_dependency + are maintained in the #dependencies Hash + #satisfied + is unsatisfied when no nodes have been appended + is unsatisfied when any dependencies are missing + is satisfied when all dependencies are fulfilled SemanticPuppet::Dependency .resolve - for a module with circular dependencies - that cannot be resolved + 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 versions fails with an appropriate message - that can be resolved - terminates + when the query omits all 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 - that cannot be resolved - fails with an appropriate message - that can be resolved - terminates for a module with dependencies returns the greatest releases matching the dependency range - when the dependency cannot be satisfied - fails with an appropriate message when the dependency has both stable and prerelease versions returns the greatest stable release matching the range when the dependency has no stable versions returns the greatest prerelease version matching the range - for a module without dependencies - returns the greatest release matching the version range - when the query omits all stable versions - returns the greatest prerelease version matching the range - when the query omits all versions + when the dependency cannot be satisfied fails with an appropriate message - when the query includes both stable and prerelease versions - returns the greatest stable release 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 circular dependencies + that can be resolved + terminates + that cannot be resolved + fails with an appropriate message + that violate graph constraints + that can be resolved + terminates + that cannot be resolved + fails with an appropriate message + .sources + can be emptied by using #clear_sources + defaults to an empty list + is frozen + can be modified by using #add_source .query - with one source - queries the source for release information - populates all returned ModuleReleases with related dependencies - populates the returned ModuleRelease with related dependencies - queries the source for each dependency - returns a ModuleRelease with the requested dependencies - queries the source for each dependency only once without sources returns an unsatisfied ModuleRelease with multiple sources queries each source in turn resolves all dependencies against all sources - .sources - can be modified by using #add_source - is frozen - defaults to an empty list - can be emptied by using #clear_sources - -SemanticPuppet::Version - #<=> - Spec v2.0.0 - Section 11 - comparisions between prereleases - identifiers are parsed left-to-right - non-numeric identifiers sort ASCIIbetically - identical prereleases are equal - build metadata does not figure into precendence - build metadata does figure into equality - sorted order - larger identifier sets have precendence - non-numeric identifiers have a higher precendence - numeric identifiers sort numerically - comparisons without prereleases - sorted order - comparisons against prereleases - prereleases have lower precedence - Spec v1.0.0 - Section 4 - sorted order - .parse - Spec v2.0.0 - Section 2 - rejects versions that contain negative integers - rejects version numbers containing leading zeroes - rejects versions that contain too many parts - rejects versions that contain too few parts - permits zeroes in version number parts - rejects versions that contain non-integers - examples - 1.10.0 - 1.11.0 - 1.9.0 - Section 10 - rejects empty build identifiers - permits numeric build identifiers with leading zeroes - rejects empty build metadata - permits non-numeric build identifiers with leading zeroes - permits numeric build identifiers of zero - rejects build identifiers with non-alphanumerics - examples - 1.0.0-beta+exp.sha.5114f85 - 1.0.0-alpha+001 - 1.0.0+20130313144700 - Section 9 - rejects numeric prerelease identifiers with leading zeroes - permits non-numeric prerelease identifiers with leading zeroes - rejects prerelease identifiers with non-alphanumerics - rejects empty prerelease version identifiers - rejects empty prerelease versions - permits numeric prerelease identifiers of zero - examples - 1.0.0-x.7.z.92 - 1.0.0-0.3.7 - 1.0.0-alpha - 1.0.0-alpha.1 - Spec v1.0.0 - Section 4 - permits non-numeric prerelease identifiers with leading zeroes - rejects empty prerelease versions - permits numeric prerelease identifiers of zero - rejects numeric prerelease identifiers with leading zeroes - rejects prerelease identifiers with non-alphanumerics - examples - 1.0.0-beta2 - 1.0.0-beta1 - 1.0.0-rc1 - 1.0.0-alpha1 - Section 2 - rejects versions that contain too many parts - rejects versions that contain too few parts - permits zeroes in version number parts - rejects versions that contain non-integers - examples - 1.9.0 - 1.10.0 - 1.11.0 - .valid? - Spec v2.0.0 - Section 10 - rejects build identifiers with non-alphanumerics - permits numeric build identifiers with leading zeroes - permits numeric build identifiers of zero - rejects empty build metadata - rejects empty build identifiers - permits non-numeric build identifiers with leading zeroes - Section 2 - rejects versions that contain negative integers - 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 - rejects version numbers containing leading zeroes - Section 9 - permits numeric prerelease identifiers of zero - permits non-numeric prerelease identifiers - rejects empty prerelease version identifiers - rejects prerelease identifiers with non-alphanumerics - rejects empty prerelease versions - rejects numeric prerelease identifiers with leading zeroes - permits non-numeric prerelease identifiers with leading zeroes - Spec v1.0.0 - Section 4 - permits non-numeric prerelease identifiers with leading zeroes - rejects numeric prerelease identifiers with leading zeroes - rejects empty prerelease versions - rejects prerelease identifiers with non-alphanumerics - permits numeric prerelease identifiers of zero - Section 2 - permits zeroes in version number parts - rejects versions that contain too many parts - rejects versions that contain non-integers - rejects versions that contain too few parts - #next - with :patch - removes any build information - does not modify the original version - returns the next patch version - removes any prerelease information - with :major - returns the next major version - removes any prerelease information - does not modify the original version - resets the minor and patch versions to 0 - removes any build information - with :minor - returns the next minor version - removes any prerelease information - removes any build information - does not modify the original version - resets the patch version to 0 - #== - should yield false when the major differs - should yield false when the patch differs - should yield false when the minor differs - should yield false when compared to something that is not a Version - should yield false when the prerelease differs - should yield true when comparing two equal instances + with one source + queries the source for each dependency only once + returns a ModuleRelease with the requested dependencies + queries the source for each dependency + populates all returned ModuleReleases with related dependencies + populates the returned ModuleRelease with related dependencies + queries the source for release information -SemanticPuppet::Dependency::ModuleRelease - #dependency_names - lists the names of all the release's dependencies - #<< - marks matching dependencies as satisfied - does not mark mis-matching dependency names as satisfied - does not mark mis-matching dependency versions as satisfied - #== - considers a release different from something that is not a release - can compare a release with something that is not a release - considers two releases with different versions to be different - considers two equal releases to be equal - considers two releases with different names to be different +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 + #add_graph_constraint + can create a new constraint on a graph + permits multiple graph constraints + #initialize + adds the named dependencies for every key in the passed hash + implements the GraphNode protocol + adds constraints for every key in the passed hash + can be called without arguments #satisfies_dependency? - returns true when the release matches the dependency - returns false when there are no dependencies to satisfy - returns false when the release does not match the dependency version - returns false when the release does not match the dependency name - #<=> - orders releases by name first - considers releases with lesser version numbers lesser - considers releases with greater version numbers greater - orders releases with different names lexographically - #to_s - is expected to =~ /foobarbaz/ - is expected to =~ /1.2.3/ - #satisfied? - returns false when not all dependencies have been satisified - returns true when there are no dependencies to satisfy - returns true when all dependencies have been satisified - returns false when not all dependency versions have been satisified - returns false when no dependencies have been satisified + 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 it does not depend on + is satisfied by modules that do fulfill all the constraints SemanticPuppet::VersionRange + #intersection + cannot intersect with non-VersionRanges + is commutative + between 10.0.0 - 5.0.0 & 11.0.0 - 4.0.0 + between 10.0.0 - 5.0.0 & 15.0.0 - 10.0.0 + between >=10.0.0 <5.0.0 & 9.0.0 - 6.0.0 + between 10.0.0 - 5.0.0 & 4.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 & >=5.0.0 <1.0.0 + between >=10.0.0 <5.0.0 & 10.0.0 - 5.0.0 + between >=10.0.0 <5.0.0 & >=7.0.0 <1.0.0 + between 10.0.0 - 5.0.0 & 5.0.0 - 1.0.0 + between 10.0.0 - 5.0.0 & >=7.0.0 <1.0.0 + between >=10.0.0 <5.0.0 & 11.0.0 - 4.0.0 + between >=10.0.0 <5.0.0 & 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 - 11.0.0 + between >=10.0.0 <5.0.0 & >=10.0.0 <5.0.0 + between >=10.0.0 <5.0.0 & 15.0.0 - 9.0.0 + between 10.0.0 - 5.0.0 & >=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 & 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 & 15.0.0 - 9.0.0 + between 10.0.0 - 5.0.0 & + 10.0.0 - 5.0.0 + 15.0.0 - 9.0.0 + 11.0.0 - 4.0.0 + >=7.0.0 <1.0.0 + >=10.0.0 <5.0.0 + 15.0.0 - 11.0.0 + 9.0.0 - 6.0.0 + >=5.0.0 <1.0.0 + 4.0.0 - 1.0.0 + 5.0.0 - 1.0.0 + 15.0.0 - 10.0.0 + 6.0.0 - 1.0.0 + between >=10.0.0 <5.0.0 & + 5.0.0 - 1.0.0 + 15.0.0 - 10.0.0 + 9.0.0 - 6.0.0 + 10.0.0 - 5.0.0 + >=7.0.0 <1.0.0 + 4.0.0 - 1.0.0 + 11.0.0 - 4.0.0 + 15.0.0 - 11.0.0 + 6.0.0 - 1.0.0 + >=5.0.0 <1.0.0 + 15.0.0 - 9.0.0 + >=10.0.0 <5.0.0 The version - 2.5.5 should be above range ~2.4 - 1.1.0 should not be below range >1.0.0 - 2.2.3 should be above range ~>1 - 1.3.0 should be above range 1.2.x - 2.9999.9999 should be above range <2.0.0 - 0.2.4 should be below range ~>1 - 1.2.9 should be below range >=2.0.0 - 1.1.1 should not be above range <1.2(<1.2.0) - 2.0.0 should be below range >2.0.0 - 2.4.0 should not be above range ~2.4(>=2.4.0 <2.5.0) - 1.0.0 should be above range <1 - 0.5.4-alpha should be below range ~v0.5.4-pre - 0.7.0-asdf should be below range >=0.7.x - 2.2.9 should be above range <=2.0.0 - 2.1.3 should not be below range 1.2.* || 2.* - 1.0.0-beta should be above range <1 - 2.0.0 should be above range 1.0.0 - 3.0.0 should be above range <=2.0.0 - 1.0.0 should not be below range >= 1.0.0 - 1.1.1 should not be above range < 1.2(<1.2.0) - 2.9999.9999 should be above range <=2.0.0 - 0.1.20 should not be below range 0.1.20 || 1.2.4 - 1.0.0 should be below range 2 - 1.1.3 should be below range 2.*.* - 0.6.1-0 should be below range ~0.6.1-1 - 1.3.0 should be above range ~1.2.2 + 0.0.0 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 2.1.3 should not be above range 2.*.*(>=2.0.0 <3.0.0) - 0.5.4 should not be below range ~v0.5.4-pre - 1.0.0-beta should be above range < 1 - 1.0.0-beta should be below range 2 - 2.4.5 should not be below range ~2.4 - 0.2.3 should be below range ~>1 - 1.0.1 should be above range 1.0.0 - 0.2.5 should not be below range >0.2.3 >0.2.4 <=0.2.5 - 1.0.0 should be below range >=2.0.0 - 1.2.3 should not be below range ~> 1 - 1.9999.9999 should not be above range <2.0.0(<2.0.0) - 1.3.3 should be above range 1.2.* - 1.2.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) - 0.2.4 should not be below range >=0.2.3 || <0.0.1 - 2.3.2 should be below range ~>3.2.1 - 1.1.1 should not be below range <1.2 - 1.3.4 should not be below range || - 1.0.0 should not be above range 1.0.0(1.0.0) + 1.2.3 should not be above range *(*) 4.0.0 should not be below range ^3.0.0 - 1.1.0 should not be above range >1.0.0(>1.0.0) - 0.0.0 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) - 0.8.2 should be above range =0.7.x - 1.2.3 should not be below range 1.2.* || 2.* + 1.0.1 should not be below range >=1.0.0 + 1.1.0 should not be above range >=1.0.0(>=1.0.0) + 1.9999.9999 should not be above range <= 2.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) + 3.1.3 should be above range 2.*.* + 0.7.2 should not be above range >=0.7.x(>=0.7.0) + 0.8.0 should be above range =0.7.x + 1.0.0 should not be below range >= 1 + 1.9999.9999 should not be below range <2.0.0 0.2.3 should be below range ~1 - 2.3.0 should be below range ~2.4 - 2.2.4 should be above range ~>1 - 1.2.1 should be above range < 1.2 - 3.5.0 should not be below range ^0.1.0 || ~3.0.1 || >4 <=5.0.0 + 1.0.0-beta should not be below range ^1.0.0-alpha + 1.2.4 should not be above range 0.1.20 || >1.2.4(0.1.20 || >1.2.4) + 2.0.0 should be below range >2.0.0 + 0.1.5 should be below range 0.1.20 || 1.2.4 + 1.0.0-beta should be above range < 1 + 1.1.3 should be below range 1.2.* + 1.1.3 should be below range 1.2.x + 1.0.2 should not be above range ~1.0(>=1.0.0 <1.1.0) 2.1.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) + 0.7.0 should be above range <0.7.x + 3.1.3 should be above range 1.2.x || 2.x 1.0.0 should not be above range >= 1.0.0(>=1.0.0) - 3.0.0 should be above range 2 - 1.2.4 should not be below range 0.1.20 || >1.2.4 - 1.0.0-beta.1 should be below range 1.0.0-beta.2 - 1.2.3 should not be below range 0.1.20 || 1.2.4 - 1.3.4 should not be above range ||(*) - 1.2.3 should not be above range ~> 1(>=1.0.0 <2.0.0) - 2.0.0 should not be below range <= 2.0.0 - 1.1.0 should not be below range >=1.0.0 - 1.0.0 should not be above range >=1.0.0(>=1.0.0) - 1.0.0 should not be below range 1.0.0 - 1.2.3 should not be above range *(*) - 2.0.0 should be below range >2.0.0 1.0.0-beta should not be below range ~1.0.0-alpha - 0.2.9 should not be below range <2.0.0 - 1.2.3 should not be below range 1.2.x - 0.6.0 should be below range =0.7.x - 0.2.4 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) + 3.1.3 should be above range 2.x.x + 2.2.9 should be above range <=2.0.0 + 2.1.3 should not be below range 2.*.* + 2.4.1 should be above range 2.3 + 0.1.2 should be below range ~1.0 + 0.5.5 should not be below range ~v0.5.4-pre + 1.1.3 should be below range 1.2.* || 2.* + 0.6.1-1 should not be above range ~0.6.1-1(>=0.6.1-1 <0.7.0) + 2.9999.9999 should be above range <2.0.0 + 1.9999.9999 should not be above range <=2.0.0(<=2.0.0) + 1.2.3 should not be below range ~>1 + 1.9999.9999 should not be above range <2.0.0(<2.0.0) + 1.2.3 should not be above range ~>1(>=1.0.0 <2.0.0) + 1.0.0 should not be above range >=1(>=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) + 3.0.0 should be above range 1.2.x || 2.x + 3.3.0 should be above range ~>3.2.1 + 1.2.3 should not be above range 1.2.*(>=1.2.0 <1.3.0) + 1.2.3 should not be below range 0.1.20 || 1.2.4 + 0.2.3 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 1.3.3 should be above range 1.2.* 3.1.3 should be above range 1.2.* || 2.* - 1.0.1-beta1 should be above range 1.0.0 - 1.2.4 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) - 0.6.2 should be below range =0.7.x - 1.1.1 should not be below range < 1.2 - 0.1.5 should be below range 0.1.20 || 1.2.4 - 1.2.3 should not be below range ~>1 - 1.1.0 should not be below range ~ 1.0 - 1.1.0 should not be above range > 1.0.0(>1.0.0) - 0.2.5 should not be above range >0.2.3 >0.2.4 <=0.2.5(>0.2.4 <=0.2.5) - 1.2.3 should not be above range 1.2.x(>=1.2.0 <1.3.0) - 1.9999.9999 should be below range >=2.0.0 - 2.4.0 should not be below range ~2.4 - 0.1.2 should be below range ~1.0 - 1.9999.9999 should not be above range < 2.0.0(<2.0.0) - 1.0.2 should not be above range ~1.0(>=1.0.0 <1.1.0) - 0.6.1-pre should be above range ~v0.5.4-pre + 1.2.3 should not be above range x(*) + 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.1.0 should not be above range >= 1.0.0(>=1.0.0) 0.0.0-0 should not be above range ^1(>=1.0.0 <2.0.0) - 0.6.1-1 should not be below range ~0.6.1-1 - 1.2.3 should not be below range 1.2.* - 1.2.9 should be below range >=2.0.0 + 1.2.3 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 0.2.4 should not be below range >=0.2.3 <=0.2.4 - 0.2.9 should not be above range <2.0.0(<2.0.0) - 2.1.2 should not be below range 2 - 0.7.0 should be above range <0.7.x - 0.6.2 should not be below range <=0.7.x - 1.9999.9999 should not be below range <= 2.0.0 - 1.0.2 should not be below range ~ 1.0 - 5.0.1 should be above range 2.*.* - 1.2.3 should not be below range * - 0.1.0 should be below range ~ 1.0 3.0.0 should be above range 2.x.x - 2.5.0 should be above range ~2.4 - 1.0.0-beta should be below range >1 - 0.0.0 should be below range ~1.0 - 3.2.0 should be below range ~>3.2.1 - 1.0.0 should be below range 2.x.x - 0.5.4 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) - 2.0.0 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) - 3.2.9 should be above range <=2.0.0 - 1.2.3 should not be above range ~1(>=1.0.0 <2.0.0) - 2.4.1 should be above range 2.3 - 2.3.1 should not be above range 2.3(>=2.3.0 <2.4.0) 1.1.3 should be below range 2.x.x - 0.2.9 should not be below range <= 2.0.0 - 1.1.3 should be below range 1.2.* || 2.* - 3.2.2 should not be below range ~>3.2.1 - 3.1.3 should be above range 2.*.* - 0.6.2 should not be above range <=0.7.x(<0.8.0) - 2.1.2 should not be above range 2(>=2.0.0 <3.0.0) - 2.5.0 should be above range ~2.4 + 3.0.0 should be above range 2 + 1.2.9 should be below range >=2.0.0 + 1.2.1 should be below range ~1.2.2 + 3.2.2 should not be above range ~>3.2.1(>=3.2.1 <3.3.0) + 0.6.0 should be below range >=0.7.x + 1.0.2 should not be above range ~ 1.0(>=1.0.0 <1.1.0) + 1.2.3 should not be below range 1.2.x + 1.0.1 should not be above range >1.0.0(>1.0.0) + 2.0.0 should not be below range <=2.0.0 + 1.2.9 should be below range >2.0.0 + 1.2.0 should be below range >1.2 + 1.1.0 should not be below range ~ 1.0 + 2.0.0 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) + 1.0.0-beta should be below range >1 + 2.1.3 should not be below range 2.x.x + 0.6.0-asdf should be below range =0.7.x + 1.9999.9999 should be below range >=2.0.0 1.3.3 should be above range 1.2.x - 0.7.2 should not be above range >=0.7.x(>=0.7.0) - 1.0.0 should not be below range =0.1.0 - 1.2.3-foo should not be above range *(*) - 0.2.3 should be below range ~> 1 - 0.8.0 should be above range =0.7.x - 0.5.5 should not be below range ~v0.5.4-pre - 1.1.3 should be below range 1.2.* - 1.0.1 should be below range 2.*.* - 0.2.3 should be below range ~1 - 0.7.0-asdf should be below range =0.7.x - 3.3.2 should be above range ~>3.2.1 - 2.2.1 should be below range 2.3 - 1.2.5 should be above range 0.1.20 || 1.2.4 - 1.9999.9999 should not be below range < 2.0.0 - 2.0.0 should be above range <2.0.0 - 0.2.4 should not be below range >=* - 1.0.0 should not be below range >= 1 - 0.2.9 should not be below range < 2.0.0 - 2.0.1 should be above range 1.0.0 - 2.0.0 + 3.5.0 should not be above range ^0.1.0 || ~3.0.1 || >4 <=5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) + 0.5.4-alpha should be below range ~v0.5.4-pre + 3.0.0 should be above range <=2.0.0 + 1.3.4 should not be below range || + 0.2.9 should not be above range <=2.0.0(<=2.0.0) + 2.2.2 should be below range 2.3 0.2.9 should not be above range <= 2.0.0(<=2.0.0) - 1.1.0 should not be below range > 1.0.0 - 0.5.5 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) - 1.0.1 should not be below range >1.0.0 - 0.7.1-1 should be above range ~0.6.1-1 - 2.0.0 should not be below range ^1.0.0 || ~2.0.1 - 2.4.2 should be above range 2.3 - 2.1.3 should not be below range 1.2.x || 2.x - 3.3.0 should be above range ~>3.2.1 - 1.2.3 should not be below range ~1 - 2.1.3 should not be above range 2.x.x(>=2.0.0 <3.0.0) - 0.6.1-1 should not be above range ~0.6.1-1(>=0.6.1-1 <0.7.0) - 2.2.3 should be above range ~1 - 3.1.3 should be above range 2.x.x - 1.0.2 should not be below range ~1.0 - 0.6.2 should be below range >=0.7.x - 2.0.0 should not be above range <=2.0.0(<=2.0.0) - 0.7.2 should be above range <0.7.x - 1.9999.9999 should not be above range <=2.0.0(<=2.0.0) - 0.7.2 should not be below range >=0.7.x - 2.1.3 should not be below range 2.*.* + 0.7.0-asdf should be below range >=0.7.x + 1.2.9 should be below range >=2.0.0 + 1.3.0 should be above range ~1.2.2 + 1.0.1 should be above range 1.0.0 0.1.97 should not be above range >=0.1.97(>=0.1.97) - 5.0.0-0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 - 1.0.0 should not be above range >=1(>=1.0.0) - 0.2.3 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) - 1.0.0 should not be below range >=1 + 0.0.1 should be below range 1.0.0 + 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.0 should be above range ~ 1.0 + 0.6.2 should not be below range <=0.7.x + 3.2.2 should not be below range ~>3.2.1 + 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) + 2.0.0 should be above range 1.0.0 + 1.9999.9999 should be below range 2 + 2.3.0 should be below range ~2.4 + 3.5.0 should not be below range ^0.1.0 || ~3.0.1 || >4 <=5.0.0 + 2.1.3 should not be above range 2.x.x(>=2.0.0 <3.0.0) + 2.2.4 should be above range ~>1 + 0.2.3 should be below range ~1 + 0.8.0-asdf should be above range =0.7.x + 2.0.0 should not be above range ^3.0.0(>=3.0.0 <4.0.0) + 1.2.3 should not be below range 1.2.* || 2.* + 1.9999.9999 should not be below range <= 2.0.0 + 1.0.0-beta should be below range > 1 + 1.2.3-foo should not be above range *(*) + 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 + 2.0.0-beta should be above range 1 + 3.2.0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 3.2.3 should be above range ~> 1 - 0.7.0-asdf should not be above range =0.7.x(>=0.7.0 <0.8.0) + 0.7.2 should be above range <0.7.x + 2.1.3 should not be below range 1.2.* || 2.* + 2.0.0 should be above range <2.0.0 + 1.2.4 should not be below range 0.1.20 || >1.2.4 + 0.5.4 should not be below range ~v0.5.4-pre + 1.0.0 should not be below range 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) + 2.4.5 should not be below range ~2.4 + 1.1.0 should be above range ~1.0 + 3.3.2 should be above range ~>3.2.1 + 0.9.9 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) + 1.0.1 should not be below range >1.0.0 + 2.0.0 should not be above range ^1.0.0 || ~2.0.1(>=1.0.0 <2.0.0 || >=2.0.1 <2.1.0) + 1.2.1 should be below range ~1.2.2 + 1.2.1 should be above range < 1.2 + 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) + 2.1.1 should be above range <=2.0.0 + 0.2.3 should not be below range >=0.2.3 || <0.0.1 + 2.0.0-beta should be above range 1 + 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 + 2.2.9 should be above range <2.0.0 + 0.2.9 should not be below range <2.0.0 + 1.3.4 should not be above range ||(*) + 0.7.2 should not be above range =0.7.x(>=0.7.0 <0.8.0) + 1.0.0 should not be below range =0.1.0 + 0.2.4 should not be below range >=0.2.3 || <0.0.1 + 3.2.9 should be above range <=2.0.0 + 1.0.0-beta should be above range <1 + 1.2.4 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) + 1.9999.9999 should not be below range <=2.0.0 + 0.2.3 should be below range 1.0.0 - 2.0.0 + 0.6.2 should not be above range <=0.7.x(<0.8.0) + 0.5.4 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) + 2.9.9 should not be below range 1.0.0 - 2.0.0 + 2.0.0 should not be above range <= 2.0.0(<=2.0.0) + 1.0.2 should not be below range ~ 1.0 + 0.0.1 should be below range 1.0.0 - 2.0.0 + 3.1.2 should be above range 2 1.0.0 should be below range >1 + 5.0.0-0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 + 1.3.0 should be above range ~1.2.2 + 0.7.2 should not be below range >=0.7.x + 2.4.2 should be above range 2.3 + 1.0.0-beta 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) + 0.2.4 should be below range ~>1 + 0.1.20 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) + 1.0.0 should not be above range >= 1(>=1.0.0) + 0.8.2 should be above range =0.7.x + 2.3.5 should be below range ~2.4 + 1.2.3 should not be below range * + 0.2.5 should not be below range >0.2.3 >0.2.4 <=0.2.5 + 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) + 2.0.1 should be above range 1.0.0 - 2.0.0 + 1.0.1-beta1 should be above range 1.0.0 + 1.0.0 should not be below range >=1 + 2.0.0 should not be below range ^1.0.0 || ~2.0.1 + 0.0.0 should not be below range >=0.2.3 || <0.0.1 + 2.4.0 should not be above range ~2.4(>=2.4.0 <2.5.0) 0.1.97 should not be above range >=0.1.97(>=0.1.97) - 2.9.9 should not be below range 1.0.0 - 2.0.0 - 0.0.1 should be below range 1.0.0 - 0.7.2 should not be above range =0.7.x(>=0.7.0 <0.8.0) - 3.2.2 should not be above range ~>3.2.1(>=3.2.1 <3.3.0) - 1.2.4 should not be above range 0.1.20 || >1.2.4(0.1.20 || >1.2.4) + 1.3.0 should be above range 1.2.x + 1.0.0 should be below range 1.2.x || 2.x + 1.0.0 should be below range 2 0.2.4 should not be above range >=0.2.3 <=0.2.4(>=0.2.3 <=0.2.4) - 1.2.3 should not be above range x(*) - 1.2.3 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) + 1.2.3 should not be below range 1.2.x || 2.x + 0.2.3 should be below range ~> 1 + 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.1 should not be above range <1.2(<1.2.0) + 1.0.0 should be above range <1 + 1.2.3 should not be below range ~1 + 2.4.0 should not be below range ~2.4 + 1.2.1 should be below range > 1.2 + 1.1.1 should not be above range < 1.2(<1.2.0) + 1.0.0-0 should be below range ^1 + 2.1.2 should not be below range 2 + 1.0.0 should not be above range 1.0.0(1.0.0) + 1.1.3 should be below range 1.2.x || 2.x + 1.0.1 should be below range 2.*.* 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.2.3 should not be below range * - 1.2.0 should be below range >1.2 - 1.9999.9999 should be below range 2 - 1.2.3 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) - 2.0.0-beta should be above range 1 - 2.0.0 should not be below range <=2.0.0 + 1.0.0 should not be above range >=1.0.0(>=1.0.0) 1.2.3 should not be above range *(*) - 1.0.0-beta should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 + 0.6.0 should be above range ~v0.5.4-pre 1.0.1 should not be above range >=1.0.0(>=1.0.0) - 1.2.3 should not be below range 1.2.x || 2.x - 3.2.0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 - 1.0.1 should not be below range > 1.0.0 - 1.9999.9999 should not be below range <2.0.0 - 0.2.3 should not be below range >=0.2.3 || <0.0.1 - 1.0.1 should not be above range > 1.0.0(>1.0.0) - 1.2.1 should be below range ~1.2.2 + 1.0.0-beta should be below range 2 + 0.2.4 should not be above range >=*(>=0.0.0) + 1.0.0 should not be below range >= 1.0.0 + 2.3.1 should not be below range 2.3 + 1.1.0 should not be above range >1.0.0(>1.0.0) + 2.5.0 should be above range ~2.4 1.2.3 should not be below range x - 1.1.2 should be above range ~1.0 - 2.0.0-beta should be above range 1 - 1.9999.9999 should not be below range <=2.0.0 - 1.1.0 should be below range 1.2.x - 1.0.0-beta should be below range 1 + 1.0.1 should not be below range >= 1.0.0 + 2.0.0 should be below range >2.0.0 + 2.1.2 should not be above range 2(>=2.0.0 <3.0.0) + 0.0.0 should be below range ~1.0 + 0.7.0-asdf should be below range =0.7.x + 1.1.0 should not be below range > 1.0.0 + 2.2.3 should be above range ~1 1.0.1 should not be above range >= 1.0.0(>=1.0.0) - 1.2.0 should be above range <1.2 - 0.6.0-asdf should be below range =0.7.x - 1.0.0-0 should be below range ^1 - 4.0.0 should be above range 1.2.* || 2.* - 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 below range 1.0.0 - 2.0.0 - 1.1.3 should be below range 1.2.x || 2.x - 1.2.1 should be below range > 1.2 - 1.1.0 should not be above range >= 1.0.0(>=1.0.0) - 0.2.3 should be below range 1.0.0 - 2.0.0 - 0.2.4 should not be above range >=*(>=0.0.0) - 1.2.9 should be below range >2.0.0 - 1.2.4 should not be below range 0.1.20 || 1.2.4 - 0.6.0 should be below range >=0.7.x - 2.3.5 should be below range ~2.4 - 1.1.0 should be above range ~ 1.0 + 0.7.1-1 should be above range ~0.6.1-1 + 1.1.3 should be below range 2.*.* + 1.0.0 should not be below range 1.0.0 + 0.2.5 should not be above range >0.2.3 >0.2.4 <=0.2.5(>0.2.4 <=0.2.5) + 1.9999.9999 should not be above range < 2.0.0(<2.0.0) + 1.1.0 should not be below range >1.0.0 + 2.3.2 should be below range ~>3.2.1 + 2.5.5 should be above range ~2.4 + 2.2.3 should be above range ~>1 3.2.0 should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) - 2.2.9 should be above range <2.0.0 - 2.3.0 should be below range ~2.4 - 3.5.0 should not be above range ^0.1.0 || ~3.0.1 || >4 <=5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) - 1.2.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) - 1.2.3 should not be above range 1.2.*(>=1.2.0 <1.3.0) + 1.0.0-beta should be below range 1 + 1.2.4 should not be below range 0.1.20 || 1.2.4 + 2.2.1 should be below range 2.3 + 0.0.0 should be below range 1.0.0 + 0.2.9 should not be below range < 2.0.0 + 0.0.0-beta should be below range 1 1.2.3 should not be below range 1.2.* || 2.* - 0.0.1 should be below range 1.0.0 - 2.0.0 - 1.1.0 should not be below range >= 1.0.0 - 3.1.2 should be above range 2 - 2.4.5 should not be above range ~2.4(>=2.4.0 <2.5.0) - 1.2.1 should be below range ~1.2.2 - 1.0.1 should not be below range >= 1.0.0 + 0.2.9 should not be above range < 2.0.0(<2.0.0) + 1.2.3 should not be below range 1.2.* + 0.6.0 should be below range =0.7.x + 1.0.0-beta.1 should be below range 1.0.0-beta.2 + 0.2.4 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) + 1.3.3 should be above range 1.2.* + 1.1.0 should be below range 1.2.x + 0.5.5 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) + 1.2.3 should not be above range 1.2.x(>=1.2.0 <1.3.0) + 1.1.3 should be below range 1.2.* + 0.6.1-0 should be below range ~0.6.1-1 + 1.0.0 should be below range 2.x.x + 2.5.0 should be above range ~2.4 + 4.0.0 should be above range 1.2.* || 2.* + 0.6.1-1 should not be below range ~0.6.1-1 + 1.2.3 should not be below range ~> 1 + 1.0.0 should not be below range >=1.0.0 + 1.2.3 should not be below range * 2.2.3 should be above range ~1 - 1.0.0-beta should not be below range ^1.0.0-alpha - 0.6.0 should be above range ~v0.5.4-pre - 2.0.0 should not be above range ^3.0.0(>=3.0.0 <4.0.0) + 0.6.1-pre should be above range ~v0.5.4-pre + 1.0.1 should not be below range > 1.0.0 + 2.0.0 should not be below range 1.0.0 - 2.0.0 + 0.2.4 should not be below range >=* + 1.2.3 should not be above range ~> 1(>=1.0.0 <2.0.0) 1.1.1 should be below range >=2.0.0 - 0.7.2 should not be below range =0.7.x - 1.1.9999 should be below range 1.2.* || 2.* - 3.1.3 should be above range 1.2.x || 2.x - 1.0.0 should not be below range >=1.0.0 - 0.0.0 should 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.0-asdf should not be above range >=0.7.x(>=0.7.0) - 1.0.0 should not be below range - 2.0.0 should not be above range <= 2.0.0(<=2.0.0) - 1.0.1 should not be above range >1.0.0(>1.0.0) - 1.0.2 should not be above range ~ 1.0(>=1.0.0 <1.1.0) - 1.9999.9999 should not be above range <= 2.0.0(<=2.0.0) + 1.2.0 should be above range <1.2 + 2.4.5 should not be above range ~2.4(>=2.4.0 <2.5.0) + 2.1.3 should not be below range 1.2.x || 2.x + 1.0.0 should not be above range (*) + 2.3.1 should not be above range 2.3(>=2.3.0 <2.4.0) + 2.9999.9999 should be above range <=2.0.0 + 2.3.0 should be below range ~2.4 + 0.6.2 should be below range =0.7.x + 1.1.2 should be above range ~1.0 + 1.1.0 should not be below range >=1.0.0 + 1.0.0 should be below range >=2.0.0 0.2.9 should not be below range <=2.0.0 + 3.2.0 should be below range ~>3.2.1 + 1.0.2 should not be below range ~1.0 1.2.3 should not be below range 1.0.0 - 2.0.0 - 1.0.0 should not be above range >= 1(>=1.0.0) - 2.0.0 should not be above range ^1.0.0 || ~2.0.1(>=1.0.0 <2.0.0 || >=2.0.1 <2.1.0) - 0.8.0-asdf should be above range =0.7.x - 0.9.9 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) - 1.0.1 should not be below range >=1.0.0 - 1.0.0 should not be above range (*) - 0.0.0-beta should be below range 1 - 2.1.3 should not be below range 2.x.x - 1.1.0 should not be above range >=1.0.0(>=1.0.0) - 1.0.0-beta should be below range > 1 - 2.1.1 should be above range <=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) - 2.3.1 should not be below range 2.3 - 1.3.0 should be above range ~1.2.2 - 1.0.0 should be below range 1.2.x || 2.x - 1.2.3 should not be above range ~>1(>=1.0.0 <2.0.0) + 0.7.2 should not be below range =0.7.x 2.2.3 should be above range 1.0.0 - 2.0.0 - 1.1.0 should be above range ~1.0 - 1.1.3 should be below range 1.2.x - 3.0.0 should be above range 1.2.x || 2.x - 0.0.0 should not be below range >=0.2.3 || <0.0.1 + 1.1.0 should not be below range >= 1.0.0 + 1.1.1 should not be below range < 1.2 + 1.1.9999 should be below range 1.2.* || 2.* + 5.0.1 should be above range 2.*.* 0.1.97 should not be below range >=0.1.97 - 0.2.9 should not be above range <=2.0.0(<=2.0.0) - 1.1.3 should be below range 1.2.* - 1.0.0-beta should not be above range 1(>=1.0.0 <2.0.0) - 2.2.2 should be below range 2.3 - #intersection - cannot intersect with non-VersionRanges - between >=10.0.0 <5.0.0 & - 15.0.0 - 9.0.0 - 5.0.0 - 1.0.0 - 10.0.0 - 5.0.0 - >=7.0.0 <1.0.0 - 9.0.0 - 6.0.0 - >=5.0.0 <1.0.0 - 11.0.0 - 4.0.0 - 6.0.0 - 1.0.0 - 15.0.0 - 10.0.0 - >=10.0.0 <5.0.0 - 4.0.0 - 1.0.0 - 15.0.0 - 11.0.0 - is commutative - between 10.0.0 - 5.0.0 & 9.0.0 - 6.0.0 - between 10.0.0 - 5.0.0 & 15.0.0 - 10.0.0 - 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 & 10.0.0 - 5.0.0 - between 10.0.0 - 5.0.0 & 5.0.0 - 1.0.0 - between >=10.0.0 <5.0.0 & 6.0.0 - 1.0.0 - between >=10.0.0 <5.0.0 & >=5.0.0 <1.0.0 - between >=10.0.0 <5.0.0 & 15.0.0 - 10.0.0 - between 10.0.0 - 5.0.0 & 11.0.0 - 4.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 & 6.0.0 - 1.0.0 - between >=10.0.0 <5.0.0 & 15.0.0 - 9.0.0 - between >=10.0.0 <5.0.0 & 9.0.0 - 6.0.0 - between 10.0.0 - 5.0.0 & 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 & 11.0.0 - 4.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 & 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 & 15.0.0 - 11.0.0 - between >=10.0.0 <5.0.0 & >=10.0.0 <5.0.0 - between 10.0.0 - 5.0.0 & - >=5.0.0 <1.0.0 - >=7.0.0 <1.0.0 - 15.0.0 - 11.0.0 - 5.0.0 - 1.0.0 - >=10.0.0 <5.0.0 - 9.0.0 - 6.0.0 - 11.0.0 - 4.0.0 - 15.0.0 - 10.0.0 - 6.0.0 - 1.0.0 - 10.0.0 - 5.0.0 - 4.0.0 - 1.0.0 - 15.0.0 - 9.0.0 + 1.1.1 should not be below range <1.2 + 2.0.0 should not be below range <= 2.0.0 + 0.2.9 should not be above range <2.0.0(<2.0.0) + 1.2.5 should be above range 0.1.20 || 1.2.4 + 1.1.0 should not be above range > 1.0.0(>1.0.0) .parse + ored expressions + adjacent + parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.5 + 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 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 excludes 1.2.5-0 + 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 + returns nil on exclude_end? + ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 + returns expected begin + "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.3-0 + "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.3 + returns nil on exclude_begin? + ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 + "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.5-0 + ">=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" stringifies as >=1.2.3 <1.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.4 || 1.2.5" stringifies as >=1.2.3 <=1.2.5 + returns nil on end + non-overlapping + returns nil on end + returns nil on exclude_begin? + "1.2.3 || 1.2.5" excludes 1.2.5-0 + parse("1.2.3 || 1.2.5").to_s excludes 1.2.3-0 + returns nil on begin + parse("1.2.3 || 1.2.5").to_s excludes 1.2.5-0 + "1.2.3 || 1.2.5" includes 1.2.3 + "1.2.3 || 1.2.5" excludes 1.2.4 + "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 + parse("1.2.3 || 1.2.5").to_s excludes 1.2.4 + "1.2.3 || 1.2.5" excludes 1.2.3-0 + "1.2.3 || 1.2.5" includes 1.2.5 + returns nil on exclude_end? + parse("1.2.3 || 1.2.5").to_s includes 1.2.5 + overlapping + ">=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" includes 1.2.3 + 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" stringifies as >=1.2.3 <1.3.0 + ">=1.2.3 || 1.2.5" includes 1.2.3 + parse(">=1.2.3 || 1.2.5").to_s includes 1.2.4 + ">=1.2.3 || 1.2.5" includes 1.2.4 + parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.3-0 + ">=1.2.3 || 1.2.5" excludes 1.2.4-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 includes 1.2.6 + parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 + ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 + ">=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 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 + ">=1.2.3 || 1.2.5" stringifies as >=1.2.3 + parse(">=1.2.3 || 1.2.5").to_s includes 1.2.3 + unioned expressions + "1.2 <1.2.5" includes 1.2.4 + parse("1.2 <1.2.5").to_s includes 1.2.4 + "1.2 <1.2.5" excludes 1.2.5-0 + ">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 + "1 <=1.2.5" excludes 0.999.999 + parse("1.2 <1.2.5").to_s excludes 1.2.5-0 + "1.2 <1.2.5" excludes 1.2.0-0 + parse("1 <=1.2.5").to_s excludes 1.2.6-0 + "<1.0.0 >2.0.0" stringifies as <0.0.0 + "1 <=1.2.5" excludes 1.0.0-0 + "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 4.999.999 + parse("1 <=1.2.5").to_s includes 1.0.0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 3.0.0 + "<1.0.0 >2.0.0" excludes 0.0.0 + "1 <=1.2.5" includes 1.0.0 + parse("1 <=1.2.5").to_s excludes 0.999.999 + "1.2 <1.2.5" excludes 1.9.0 + parse("1.2 <1.2.5").to_s excludes 1.2.0-0 + parse("1 <=1.2.5").to_s excludes 1.0.0-0 + "1 <=1.2.5" excludes 1.9.0 + parse("<1.0.0 >2.0.0").to_s excludes 0.0.0 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 5.0.0-0 + parse("1.2 <1.2.5").to_s includes 1.2.0 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 3.0.0-0 + "1 <=1.2.5" excludes 1.2.6-0 + "<1.0.0 >2.0.0" excludes 0.0.0-0 + parse("<1.0.0 >2.0.0").to_s excludes 0.0.0-0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" stringifies as >=3.0.0 <5.0.0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 2.999.999 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 2.999.999 + parse("1.2 <1.2.5").to_s excludes 1.9.0 + ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 5.0.0-0 + parse("1.2 <1.2.5").to_s excludes 1.1.999 + parse("1 <=1.2.5").to_s excludes 1.9.0 + parse("1 <=1.2.5").to_s includes 1.2.5 + "1.2 <1.2.5" stringifies as >=1.2.0 <1.2.5 + parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 3.0.0 + "1 <=1.2.5" includes 1.2.5 + "1.2 <1.2.5" includes 1.2.0 + "1 <=1.2.5" stringifies as >=1.0.0 <=1.2.5 + 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.3.5-0 + "1.2.3 - 1.3.4-alpha" 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.3.4 + parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.3-0 + parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.2 + "1.2.3 - 1.3.4-alpha" includes 1.3.4-alpha + "1.2.3 - 1.3.4" excludes 1.2.3-0 + "1.2.3 - 1.3.4-alpha" includes 1.2.3 + "1.2.3 - 1.3.4-alpha" excludes 1.3.4-alpha0 + "1.2.3 - 1.3.4" includes 1.3.4 + parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.2.3-alpha + parse("1.2.3 - 1.3.4-alpha").to_s includes 1.2.3 + "1.2.3-alpha - 1.3.4-alpha" stringifies as >=1.2.3-alpha <=1.3.4-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" includes 1.3.4-alpha + parse("1.2.3-alpha - 1.3.4").to_s excludes 1.2.3-alph + parse("1.2.3 - 1.3.4").to_s includes 1.2.3 + 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 includes 1.3.4-alpha + parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 + parse("1.2.3-alpha - 1.3.4").to_s includes 1.2.3-alpha + "1.2.3-alpha - 1.3.4-alpha" excludes 1.2.3-alph + "1.2.3 - 1.3.4-alpha" stringifies as >=1.2.3 <=1.3.4-alpha + "1.2.3 - 1.3.4-alpha" excludes 1.3.5 + parse("1.2.3-alpha - 1.3.4").to_s includes 1.3.4 + parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.5 + "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.4-alpha0 + parse("1.2.3 - 1.3.4").to_s excludes 1.2.3-0 + "1.2.3-alpha - 1.3.4-alpha" includes 1.2.3-alpha + "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.5 + parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.5 + "1.2.3-alpha - 1.3.4" excludes 1.2.3-alph + parse("1.2.3-alpha - 1.3.4").to_s excludes 1.3.5-0 + parse("1.2.3 - 1.3.4").to_s includes 1.3.4 + "1.2.3-alpha - 1.3.4" includes 1.2.3-alpha + "1.2.3 - 1.3.4" excludes 1.2.2 + "1.2.3 - 1.3.4" excludes 1.3.5-0 + 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 + parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.2.3-alph + "1.2.3 - 1.3.4" stringifies as >=1.2.3 <=1.3.4 + "1.2.3 - 1.3.4" includes 1.2.3 open-ended expressions - parse(">1.2.3-alpha").to_s includes 999.0.0 - "<= 1.2.3-alpha" excludes 1.2.3-alphb - "<= 1.2.3" includes 0.0.0 - parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha0 - parse(">1.2.3-alpha").to_s includes 1.2.3-alpha.0 - parse("<1.2.3-alpha").to_s includes 0.0.0 - "< 1.2.3" excludes 2.0.0 + ">= 1.2.3-alpha" excludes 1.2.3-alph + parse(">= 1.2.3").to_s includes 999.0.0 + parse("> 1.2.3-alpha").to_s includes 999.0.0 parse("<1.2.3-alpha").to_s excludes 0.0.0-0 - parse(">=1.2.3").to_s excludes 1.2.2 "<=1.2.3-alpha" includes 1.2.3-alpha - "<= 1.2.3-alpha" excludes 1.2.3-alpha.0 - "<1.2.3-alpha" includes 1.2.3-alph - ">= 1.2.3-alpha" excludes 1.2.4-alpha - ">= 1.2.3-alpha" stringifies as >=1.2.3-alpha - parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha.0 - parse("<1.2.3-alpha").to_s excludes 1.2.3-alpha - parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha0 - parse("<= 1.2.3-alpha").to_s excludes 0.0.0-0 + parse(">=1.2.3").to_s excludes 1.2.3-0 + "> 1.2.3-alpha" excludes 1.2.3-alpha + ">= 1.2.3" excludes 1.2.2 "<1.2.3" stringifies as <1.2.3 - ">=1.2.3-alpha" excludes 1.2.4-alpha - parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha - "< 1.2.3" includes 1.2.2 - 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.3-0 - parse("<= 1.2.3").to_s excludes 0.0.0-0 - parse(">= 1.2.3").to_s excludes 1.2.3-0 + parse("< 1.2.3").to_s excludes 0.0.0-0 parse(">1.2.3-alpha").to_s excludes 1.2.3-alpha - parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha - parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha0 + "<=1.2.3" 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 excludes 1.2.4-0 + ">= 1.2.3" stringifies as >=1.2.3 + parse("< 1.2.3-alpha").to_s includes 0.0.0 + parse("<1.2.3").to_s excludes 2.0.0 + "<1.2.3-alpha" excludes 0.0.0-0 + ">1.2.3" excludes 1.2.3 + "> 1.2.3" excludes 1.2.4-0 + "< 1.2.3-alpha" excludes 2.0.0 + "< 1.2.3" excludes 2.0.0 "< 1.2.3-alpha" includes 0.0.0 - parse("> 1.2.3").to_s excludes 1.2.4-0 - "<= 1.2.3" excludes 1.2.3-0 - parse("> 1.2.3-alpha").to_s excludes 1.2.3-alpha - parse(">= 1.2.3-alpha").to_s includes 999.0.0 - 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 includes 1.2.3-alpha.0 + "<1.2.3" includes 0.0.0 parse(">1.2.3-alpha").to_s includes 1.2.3-alpha0 - "> 1.2.3-alpha" includes 1.2.3-alpha0 - "<=1.2.3-alpha" excludes 1.2.3-alpha.0 - ">1.2.3" excludes 1.2.3 - parse("> 1.2.3").to_s excludes 1.2.3 - ">1.2.3-alpha" stringifies as >1.2.3-alpha - "> 1.2.3" stringifies as >1.2.3 - parse(">1.2.3").to_s excludes 1.2.4-0 + parse(">=1.2.3").to_s excludes 1.2.2 + parse("<1.2.3").to_s excludes 1.2.3-0 ">= 1.2.3-alpha" includes 999.0.0 - ">1.2.3-alpha" includes 1.2.3-alpha.0 - "<=1.2.3-alpha" excludes 1.2.3-alpha0 - ">1.2.3" stringifies as >1.2.3 - parse("< 1.2.3-alpha").to_s excludes 0.0.0-0 - parse("<=1.2.3-alpha").to_s excludes 1.2.3-alphb + parse("<1.2.3-alpha").to_s excludes 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").to_s excludes 0.0.0-0 + "<1.2.3" includes 1.2.2 + ">= 1.2.3-alpha" excludes 1.2.4-alpha + "<1.2.3" 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 includes 999.0.0 + "<=1.2.3-alpha" includes 0.0.0 "<= 1.2.3-alpha" excludes 1.2.3-alpha0 - "<1.2.3-alpha" 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" stringifies as >1.2.3-alpha - ">1.2.3" excludes 1.2.4-0 - parse("<1.2.3").to_s includes 1.2.2 - parse("<= 1.2.3").to_s includes 1.2.3 - ">= 1.2.3-alpha" includes 1.2.3-alpha + parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha.0 + "> 1.2.3-alpha" includes 1.2.3-alpha0 + ">1.2.3-alpha" includes 1.2.3-alpha0 ">=1.2.3-alpha" stringifies as >=1.2.3-alpha - "> 1.2.3" includes 999.0.0 - ">= 1.2.3" stringifies as >=1.2.3 - "< 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" stringifies as <=1.2.3-alpha - ">=1.2.3" excludes 1.2.2 - "> 1.2.3-alpha" includes 999.0.0 - "<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 999.0.0 - "<= 1.2.3-alpha" includes 1.2.3-alpha - "< 1.2.3" excludes 1.2.3-0 - "<1.2.3" includes 0.0.0 - ">1.2.3-alpha" includes 1.2.3-alpha0 - ">= 1.2.3-alpha" excludes 1.2.3-alph - "<1.2.3" includes 1.2.2 + parse(">= 1.2.3").to_s excludes 1.2.3-0 + parse(">= 1.2.3-alpha").to_s excludes 1.2.4-alpha + "<=1.2.3-alpha" excludes 1.2.3-alphb + ">1.2.3-alpha" includes 1.2.3-alpha.0 parse("<1.2.3").to_s includes 0.0.0 - ">= 1.2.3" excludes 1.2.3-0 - parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha0 - "<= 1.2.3" stringifies as <=1.2.3 + ">= 1.2.3-alpha" stringifies as >=1.2.3-alpha + "> 1.2.3-alpha" includes 1.2.3-alpha.0 "<= 1.2.3-alpha" stringifies as <=1.2.3-alpha - parse("< 1.2.3").to_s includes 0.0.0 - parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alphb - "<=1.2.3-alpha" excludes 0.0.0-0 - ">=1.2.3-alpha" includes 1.2.3-alpha0 - "<= 1.2.3" includes 1.2.3 - parse("<=1.2.3").to_s includes 1.2.3 + parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha0 + parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha0 + parse("<=1.2.3").to_s excludes 1.2.3-0 + parse("> 1.2.3-alpha").to_s excludes 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 - ">= 1.2.3" excludes 1.2.2 - parse(">=1.2.3-alpha").to_s excludes 1.2.4-alpha - ">=1.2.3-alpha" excludes 1.2.3-alph - parse("< 1.2.3").to_s excludes 1.2.3-0 - parse("<1.2.3").to_s excludes 2.0.0 + parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha.0 + "<=1.2.3" includes 1.2.3 + "<= 1.2.3" includes 0.0.0 + parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha ">=1.2.3" includes 999.0.0 + parse("> 1.2.3").to_s excludes 1.2.4-0 + "<= 1.2.3" stringifies as <=1.2.3 + ">=1.2.3-alpha" includes 999.0.0 + parse("< 1.2.3").to_s includes 1.2.2 + parse("<=1.2.3-alpha").to_s includes 1.2.3-alpha + parse(">1.2.3-alpha").to_s includes 999.0.0 + "<=1.2.3-alpha" excludes 1.2.3-alpha0 + ">=1.2.3" stringifies as >=1.2.3 + ">1.2.3-alpha" excludes 1.2.3-alpha + "<= 1.2.3-alpha" includes 1.2.3-alpha + ">=1.2.3" excludes 1.2.2 + parse("<1.2.3").to_s includes 1.2.2 + parse(">= 1.2.3-alpha").to_s includes 999.0.0 + "<1.2.3-alpha" excludes 2.0.0 + parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha0 + parse("<= 1.2.3-alpha").to_s includes 0.0.0 + ">=1.2.3" excludes 1.2.3-0 parse(">=1.2.3-alpha").to_s includes 999.0.0 - parse("<1.2.3-alpha").to_s includes 1.2.3-alph - "> 1.2.3" excludes 1.2.3 - "<=1.2.3" stringifies as <=1.2.3 + "< 1.2.3-alpha" includes 1.2.3-alph + parse("<= 1.2.3").to_s includes 1.2.3 + "<=1.2.3" excludes 0.0.0-0 + parse("<= 1.2.3-alpha").to_s excludes 0.0.0-0 + parse("<=1.2.3").to_s includes 1.2.3 + "<= 1.2.3-alpha" excludes 0.0.0-0 + "<=1.2.3-alpha" excludes 1.2.3-alpha.0 + "<1.2.3-alpha" stringifies as <1.2.3-alpha + "<= 1.2.3" excludes 0.0.0-0 + ">1.2.3" stringifies as >1.2.3 + "<= 1.2.3-alpha" includes 0.0.0 + ">=1.2.3-alpha" excludes 1.2.4-alpha + "<=1.2.3-alpha" excludes 0.0.0-0 + ">= 1.2.3-alpha" includes 1.2.3-alpha0 + parse("<1.2.3-alpha").to_s excludes 2.0.0 + "< 1.2.3" excludes 0.0.0-0 + parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha0 + parse("<=1.2.3-alpha").to_s excludes 1.2.3-alphb + 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 excludes 1.2.4-alpha + "<=1.2.3-alpha" stringifies as <=1.2.3-alpha + parse(">= 1.2.3").to_s excludes 1.2.2 + parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha 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" includes 0.0.0 + "< 1.2.3-alpha" excludes 0.0.0-0 + parse("> 1.2.3").to_s excludes 1.2.3 ">1.2.3-alpha" includes 999.0.0 - "<=1.2.3" excludes 0.0.0-0 - "<=1.2.3" includes 0.0.0 - parse("<1.2.3").to_s excludes 0.0.0-0 - "<1.2.3-alpha" excludes 1.2.3-alpha - "< 1.2.3-alpha" excludes 2.0.0 - parse("< 1.2.3-alpha").to_s excludes 1.2.3-alpha - "<1.2.3" excludes 2.0.0 + ">=1.2.3-alpha" excludes 1.2.3-alph + "> 1.2.3" includes 999.0.0 + "< 1.2.3-alpha" stringifies as <1.2.3-alpha + parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alphb + parse("<1.2.3-alpha").to_s includes 0.0.0 + parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha.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").to_s excludes 1.2.2 - parse("<=1.2.3-alpha").to_s includes 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-alpha" excludes 0.0.0-0 - parse(">=1.2.3").to_s excludes 1.2.3-0 - parse("> 1.2.3").to_s includes 999.0.0 - parse("< 1.2.3").to_s excludes 2.0.0 + parse("< 1.2.3-alpha").to_s excludes 2.0.0 + "<=1.2.3" stringifies as <=1.2.3 ">=1.2.3-alpha" includes 1.2.3-alpha - parse(">=1.2.3-alpha").to_s excludes 1.2.3-alph - "<=1.2.3" excludes 1.2.3-0 - "<1.2.3" excludes 0.0.0-0 + "> 1.2.3" excludes 1.2.3 + parse("<=1.2.3").to_s excludes 0.0.0-0 + "<= 1.2.3" excludes 1.2.3-0 + "<1.2.3-alpha" includes 0.0.0 + "<= 1.2.3-alpha" excludes 1.2.3-alphb + ">1.2.3-alpha" stringifies as >1.2.3-alpha + parse("<1.2.3").to_s excludes 0.0.0-0 + "< 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-alpha + "> 1.2.3-alpha" stringifies as >1.2.3-alpha + "< 1.2.3" includes 1.2.2 + "> 1.2.3-alpha" includes 999.0.0 + parse("<1.2.3-alpha").to_s includes 1.2.3-alph + ">1.2.3" excludes 1.2.4-0 + parse("< 1.2.3").to_s includes 0.0.0 "< 1.2.3-alpha" excludes 1.2.3-alpha - parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha0 + parse("< 1.2.3-alpha").to_s excludes 0.0.0-0 + parse("< 1.2.3-alpha").to_s excludes 1.2.3-alpha + "<=1.2.3" includes 0.0.0 + parse(">=1.2.3-alpha").to_s excludes 1.2.3-alph + "< 1.2.3" stringifies as <1.2.3 ">= 1.2.3" includes 999.0.0 - "> 1.2.3-alpha" excludes 1.2.3-alpha - ">=1.2.3-alpha" includes 999.0.0 - "<=1.2.3" includes 1.2.3 - parse("< 1.2.3").to_s excludes 0.0.0-0 - "<= 1.2.3-alpha" includes 0.0.0 - parse("<1.2.3-alpha").to_s excludes 2.0.0 - ">1.2.3" includes 999.0.0 - parse(">= 1.2.3-alpha").to_s excludes 1.2.3-alph - "< 1.2.3-alpha" stringifies as <1.2.3-alpha - ">1.2.3-alpha" excludes 1.2.3-alpha - parse("< 1.2.3-alpha").to_s includes 0.0.0 + parse("<= 1.2.3").to_s excludes 1.2.3-0 + "<1.2.3-alpha" includes 1.2.3-alph + "<= 1.2.3" includes 1.2.3 "< 1.2.3" includes 0.0.0 - parse("<=1.2.3").to_s includes 0.0.0 - parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha.0 - "<1.2.3-alpha" stringifies as <1.2.3-alpha - "< 1.2.3" stringifies as <1.2.3 - parse("> 1.2.3-alpha").to_s includes 999.0.0 - "<= 1.2.3" excludes 0.0.0-0 - "<= 1.2.3-alpha" excludes 0.0.0-0 - ">=1.2.3" excludes 1.2.3-0 - parse(">= 1.2.3-alpha").to_s excludes 1.2.4-alpha - parse("< 1.2.3-alpha").to_s includes 1.2.3-alph - parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha.0 - "> 1.2.3" excludes 1.2.4-0 - "< 1.2.3" excludes 0.0.0-0 - "< 1.2.3-alpha" includes 1.2.3-alph - "<=1.2.3-alpha" excludes 1.2.3-alphb - inclusive range expressions - "1.2.3 - 1.3.4" excludes 1.3.5-0 - parse("1.2.3 - 1.3.4-alpha").to_s includes 1.3.4-alpha - "1.2.3 - 1.3.4" includes 1.3.4 - "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.4-alpha0 - parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 - "1.2.3-alpha - 1.3.4" stringifies as >=1.2.3-alpha <=1.3.4 - "1.2.3-alpha - 1.3.4" excludes 1.2.3-alph - "1.2.3 - 1.3.4-alpha" stringifies as >=1.2.3 <=1.3.4-alpha - "1.2.3 - 1.3.4-alpha" excludes 1.2.3-0 - parse("1.2.3 - 1.3.4-alpha").to_s includes 1.2.3 - parse("1.2.3 - 1.3.4").to_s excludes 1.2.3-0 - "1.2.3-alpha - 1.3.4" excludes 1.3.5-0 - parse("1.2.3-alpha - 1.3.4").to_s includes 1.3.4 - "1.2.3-alpha - 1.3.4-alpha" includes 1.3.4-alpha - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.2 - parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.5 - parse("1.2.3 - 1.3.4").to_s excludes 1.3.5-0 - parse("1.2.3-alpha - 1.3.4").to_s excludes 1.3.5-0 - "1.2.3 - 1.3.4" stringifies as >=1.2.3 <=1.3.4 - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.5 - "1.2.3-alpha - 1.3.4-alpha" excludes 1.2.3-alph - "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").to_s includes 1.2.3-alpha - parse("1.2.3 - 1.3.4").to_s includes 1.2.3 - parse("1.2.3 - 1.3.4").to_s includes 1.3.4 - parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.2.3-alpha - "1.2.3 - 1.3.4-alpha" includes 1.3.4-alpha - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 - "1.2.3 - 1.3.4-alpha" includes 1.2.3 - "1.2.3-alpha - 1.3.4" includes 1.3.4 - parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.3.4-alpha - parse("1.2.3 - 1.3.4").to_s excludes 1.2.2 - "1.2.3 - 1.3.4" excludes 1.2.3-0 - "1.2.3-alpha - 1.3.4" includes 1.2.3-alpha - "1.2.3 - 1.3.4-alpha" excludes 1.2.2 - "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.5 - "1.2.3 - 1.3.4" excludes 1.2.2 - "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 - "1.2.3 - 1.3.4" includes 1.2.3 - parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.2.3-alph - "1.2.3-alpha - 1.3.4-alpha" includes 1.2.3-alpha - parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.3-0 + "<1.2.3-alpha" excludes 1.2.3-alpha + parse(">=1.2.3").to_s includes 999.0.0 + parse(">= 1.2.3-alpha").to_s excludes 1.2.3-alph + "<= 1.2.3-alpha" excludes 1.2.3-alpha.0 + "<1.2.3" 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 2.0.0 invalid expressions raise an appropriate exception + loose version expressions + parse("1.2.X").to_s includes 1.2.999 + "1" stringifies as >=1.0.0 <2.0.0 + "1.2.x" excludes 1.1.999 + "1.X" includes 1.999.0 + parse("1.x").to_s includes 1.999.0 + "1" includes 1.0.0 + parse("1.2.x").to_s includes 1.2.0 + "1" excludes 2.0.0-0 + parse("1.2.3-alpha").to_s excludes 1.2.3-999 + "1.2.x" excludes 1.2.0-alpha + "1.x" excludes 1.0.0-alpha + "1.2.X" stringifies as >=1.2.0 <1.3.0 + "1.2" includes 1.2.0 + "1.2" stringifies as >=1.2.0 <1.3.0 + parse("1.X").to_s excludes 1.0.0-alpha + "1.2.3" includes 1.2.3 + parse("1.2").to_s excludes 1.3.0-0 + "1.x" includes 1.0.0 + parse("1").to_s includes 1.0.0 + parse("1").to_s excludes 1.0.0-alpha + parse("1.2.x").to_s excludes 1.1.999 + "1.2.3" excludes 1.2.3-alpha + "1.X" excludes 0.999.999 + "1" excludes 1.0.0-alpha + parse("1.2.3").to_s excludes 1.2.3-alpha + parse("1.2").to_s excludes 1.1.999 + "1.2.3" stringifies as 1.2.3 + "1.2" includes 1.2.999 + "1.2.x" excludes 1.3.0-0 + "1.2" excludes 1.2.0-alpha + parse("1.X").to_s excludes 2.0.0-0 + "1.2" excludes 1.3.0-0 + "1.2.3" excludes 1.2.2 + parse("1.2.x").to_s excludes 1.3.0-0 + parse("1.2.3").to_s excludes 1.2.4-alpha + "1.X" excludes 1.0.0-alpha + parse("1.x").to_s excludes 0.999.999 + "1.x" excludes 2.0.0-0 + "1.X" stringifies as >=1.0.0 <2.0.0 + parse("1.2.X").to_s includes 1.2.0 + "1.2.3-alpha" stringifies as 1.2.3-alpha + "1.2.X" excludes 1.3.0-0 + "1.2.X" includes 1.2.0 + parse("1.X").to_s excludes 0.999.999 + parse("1.2").to_s excludes 1.2.0-alpha + parse("1.x").to_s excludes 1.0.0-alpha + parse("1.2.x").to_s includes 1.2.999 + "1.2.X" excludes 1.1.999 + parse("1.x").to_s excludes 2.0.0-0 + parse("1.X").to_s includes 1.0.0 + "1" includes 1.999.0 + parse("1.2.3-alpha").to_s includes 1.2.3-alpha + "1.x" excludes 0.999.999 + "1.2" excludes 1.1.999 + parse("1.2.x").to_s excludes 1.2.0-alpha + "1" excludes 0.999.999 + "1.2.x" includes 1.2.0 + "1.X" excludes 2.0.0-0 + parse("1.2.X").to_s excludes 1.2.0-alpha + parse("1.X").to_s includes 1.999.0 + parse("1.2.X").to_s excludes 1.3.0-0 + parse("1").to_s excludes 0.999.999 + "1.2.3-alpha" excludes 1.2.3-beta + "1.X" includes 1.0.0 + parse("1").to_s excludes 2.0.0-0 + parse("1").to_s includes 1.999.0 + parse("1.2").to_s includes 1.2.0 + "1.2.x" stringifies as >=1.2.0 <1.3.0 + "1.x" stringifies as >=1.0.0 <2.0.0 + "1.2.x" includes 1.2.999 + "1.x" includes 1.999.0 + "1.2.3" excludes 1.2.4-alpha + "1.2.3-alpha" excludes 1.2.3-999 + parse("1.2").to_s includes 1.2.999 + parse("1.2.3-alpha").to_s excludes 1.2.3-beta + parse("1.2.3").to_s includes 1.2.3 + "1.2.X" excludes 1.2.0-alpha + parse("1.2.3").to_s excludes 1.2.2 + "1.2.3-alpha" includes 1.2.3-alpha + "1.2.X" includes 1.2.999 + parse("1.x").to_s includes 1.0.0 + parse("1.2.X").to_s excludes 1.1.999 "reasonably close" expressions - parse("~ 1.2").to_s excludes 1.2.0-0 - "~ 1.2" excludes 1.1.999 - parse("~ 1.2").to_s includes 1.2.999 "~1" stringifies as >=1.0.0 <2.0.0 - "~1.2.3-alpha" includes 1.2.3-alpha - "~ 1.2" excludes 1.3.0-0 - parse("~ 1.2").to_s includes 1.2.0 - parse("~ 1").to_s includes 1.0.0 - parse("~1.2.3").to_s includes 1.2.3 - parse("~1.2.3-alpha").to_s includes 1.2.3 - parse("~1.2.3").to_s excludes 1.2.3-0 - parse("~ 1.2.3-alpha").to_s includes 1.2.3 - parse("~1").to_s excludes 1.0.0-0 + parse("~ 1.2.3").to_s includes 1.2.3 + "~1.2.3-alpha" excludes 1.2.3-alph + "~ 1.2.3" includes 1.2.3 + parse("~ 1.2.3-alpha").to_s excludes 1.2.3-alph parse("~ 1").to_s excludes 0.999.999 - parse("~ 1.2.3").to_s excludes 1.2.2 - "~ 1.2.3-alpha" excludes 1.2.4-0 + "~ 1.2" includes 1.2.0 "~1.2" excludes 1.2.0-0 - "~ 1.2.3" stringifies as >=1.2.3 <1.3.0 - parse("~1.2").to_s excludes 1.1.999 "~1" excludes 1.0.0-0 - "~1" excludes 2.0.0-0 - "~1.2.3-alpha" excludes 1.2.4-0 - parse("~ 1.2.3").to_s includes 1.2.3 - parse("~ 1.2.3").to_s excludes 1.3.0-0 - "~1.2.3" stringifies as >=1.2.3 <1.3.0 - parse("~1.2.3").to_s excludes 1.3.0-0 - "~ 1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 - parse("~1").to_s includes 1.0.0 - "~ 1.2.3" excludes 1.2.2 - "~1.2.3" excludes 1.3.0-0 + "~ 1" excludes 0.999.999 parse("~1.2.3-alpha").to_s includes 1.2.3-alpha - parse("~ 1.2.3-alpha").to_s excludes 1.2.4-0 - "~ 1" stringifies as >=1.0.0 <2.0.0 + "~ 1.2" excludes 1.2.0-0 + parse("~1.2.3").to_s excludes 1.2.2 + "~1.2.3-alpha" includes 1.2.3 + parse("~1").to_s excludes 1.0.0-0 parse("~ 1").to_s includes 1.999.999 - "~ 1" includes 1.0.0 - "~1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 "~1.2" includes 1.2.0 + parse("~1.2.3").to_s includes 1.2.3 + "~1.2.3" excludes 1.3.0-0 + parse("~1").to_s excludes 2.0.0-0 + parse("~1.2").to_s includes 1.2.999 + "~ 1" includes 1.0.0 + parse("~ 1.2.3").to_s excludes 1.2.2 + "~ 1" 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" stringifies as >=1.2.0 <1.3.0 + parse("~ 1.2").to_s excludes 1.2.0-0 + "~ 1.2.3-alpha" includes 1.2.3 + "~1.2.3" excludes 1.2.2 + "~ 1" includes 1.999.999 + parse("~1.2.3").to_s excludes 1.2.3-0 + "~1" excludes 2.0.0-0 + "~1.2.3" stringifies as >=1.2.3 <1.3.0 + "~1.2.3-alpha" includes 1.2.3-alpha + "~ 1.2.3-alpha" includes 1.2.3-alpha + parse("~1.2.3-alpha").to_s excludes 1.2.3-alph + parse("~ 1.2").to_s includes 1.2.999 + "~ 1" excludes 2.0.0-0 + "~1.2.3-alpha" excludes 1.2.4-0 + parse("~ 1").to_s excludes 1.0.0-0 + "~ 1.2.3-alpha" excludes 1.2.4-0 + parse("~ 1.2").to_s excludes 1.1.999 + parse("~1.2").to_s includes 1.2.0 + "~ 1.2" excludes 1.3.0-0 + parse("~1.2.3-alpha").to_s excludes 1.2.4-0 + parse("~1.2").to_s excludes 1.1.999 + parse("~ 1.2.3-alpha").to_s includes 1.2.3 + parse("~1.2").to_s excludes 1.2.0-0 + parse("~ 1.2.3").to_s includes 1.2.5 "~1.2.3" excludes 1.2.3-0 + parse("~1.2").to_s excludes 1.3.0-0 + parse("~ 1.2.3").to_s excludes 1.3.0-0 parse("~ 1").to_s excludes 2.0.0-0 + "~ 1.2.3" excludes 1.3.0-0 + parse("~ 1.2.3-alpha").to_s includes 1.2.3-alpha + parse("~ 1.2").to_s excludes 1.3.0-0 + "~ 1.2" includes 1.2.999 + parse("~ 1").to_s includes 1.0.0 "~ 1.2.3" includes 1.2.5 - "~ 1.2" excludes 1.2.0-0 "~ 1.2.3-alpha" excludes 1.2.3-alph - "~ 1.2.3-alpha" includes 1.2.3-alpha - parse("~ 1.2.3-alpha").to_s includes 1.2.3-alpha + "~1.2" includes 1.2.999 + "~1.2.3" includes 1.2.3 + "~ 1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 + parse("~1.2.3").to_s includes 1.2.5 + parse("~1.2.3").to_s excludes 1.3.0-0 + "~1" includes 1.0.0 parse("~1").to_s excludes 0.999.999 - parse("~ 1.2.3").to_s excludes 1.2.3-0 - "~ 1" excludes 0.999.999 - parse("~1.2").to_s excludes 1.3.0-0 + "~ 1" stringifies as >=1.0.0 <2.0.0 "~1.2" stringifies as >=1.2.0 <1.3.0 - "~ 1.2.3" includes 1.2.3 - "~ 1.2" stringifies as >=1.2.0 <1.3.0 - parse("~1.2.3-alpha").to_s excludes 1.2.3-alph - "~ 1.2.3-alpha" includes 1.2.3 - parse("~1.2.3-alpha").to_s excludes 1.2.4-0 - "~1.2.3" includes 1.2.3 - parse("~1.2").to_s includes 1.2.0 - parse("~ 1").to_s excludes 1.0.0-0 - parse("~1").to_s includes 1.999.999 - "~1.2.3-alpha" excludes 1.2.3-alph - parse("~1.2").to_s excludes 1.2.0-0 "~1.2" excludes 1.1.999 + "~1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 "~1" excludes 0.999.999 - parse("~1").to_s excludes 2.0.0-0 - "~1.2" includes 1.2.999 - "~1.2.3-alpha" includes 1.2.3 - parse("~ 1.2.3-alpha").to_s excludes 1.2.3-alph - "~1.2.3" includes 1.2.5 - "~1.2.3" excludes 1.2.2 - parse("~ 1.2").to_s excludes 1.3.0-0 - "~ 1.2.3" excludes 1.3.0-0 - parse("~1.2").to_s includes 1.2.999 - "~ 1" excludes 2.0.0-0 "~1" includes 1.999.999 + parse("~ 1.2").to_s includes 1.2.0 + parse("~ 1.2.3").to_s excludes 1.2.3-0 + parse("~ 1.2.3-alpha").to_s excludes 1.2.4-0 + "~1.2.3" includes 1.2.5 + parse("~1").to_s includes 1.0.0 + "~ 1.2.3" stringifies as >=1.2.3 <1.3.0 + parse("~1").to_s includes 1.999.999 + "~ 1.2" excludes 1.1.999 "~ 1.2.3" excludes 1.2.3-0 - "~ 1" excludes 1.0.0-0 - parse("~1.2.3").to_s includes 1.2.5 - "~ 1" includes 1.999.999 - "~ 1.2" includes 1.2.999 - parse("~1.2.3").to_s excludes 1.2.2 "~1.2" excludes 1.3.0-0 - "~1" includes 1.0.0 - "~ 1.2" includes 1.2.0 - parse("~ 1.2.3").to_s includes 1.2.5 - parse("~ 1.2").to_s excludes 1.1.999 - unioned expressions - 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 excludes 1.0.0-0 - "1 <=1.2.5" excludes 0.999.999 - parse("1.2 <1.2.5").to_s includes 1.2.4 - "<1.0.0 >2.0.0" excludes 0.0.0-0 - parse("1 <=1.2.5").to_s excludes 0.999.999 - "1 <=1.2.5" excludes 1.9.0 - "1.2 <1.2.5" stringifies as >=1.2.0 <1.2.5 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 5.0.0-0 - parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 5.0.0-0 - "1 <=1.2.5" excludes 1.2.6-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" stringifies as <0.0.0 - "1.2 <1.2.5" includes 1.2.0 - "1.2 <1.2.5" excludes 1.2.5-0 - "1 <=1.2.5" stringifies as >=1.0.0 <=1.2.5 - parse("<1.0.0 >2.0.0").to_s excludes 0.0.0-0 - parse("1 <=1.2.5").to_s includes 1.0.0 - 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 includes 1.2.5 - parse("1.2 <1.2.5").to_s excludes 1.1.999 - "1 <=1.2.5" includes 1.0.0 - parse("1 <=1.2.5").to_s excludes 1.2.6-0 - "1 <=1.2.5" includes 1.2.5 - parse("<1.0.0 >2.0.0").to_s excludes 0.0.0 - parse("1.2 <1.2.5").to_s includes 1.2.0 - "<1.0.0 >2.0.0" excludes 0.0.0 - "1.2 <1.2.5" excludes 1.1.999 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 2.999.999 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 3.0.0 - "1.2 <1.2.5" includes 1.2.4 - parse("1.2 <1.2.5").to_s excludes 1.9.0 - "1.2 <1.2.5" excludes 1.2.0-0 - "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 >=3.0.0 <5.0.0" excludes 3.0.0-0 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" stringifies as >=3.0.0 <5.0.0 - "1 <=1.2.5" excludes 1.0.0-0 - ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 4.999.999 - parse("1 <=1.2.5").to_s excludes 1.9.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 excludes 2.999.999 - loose version expressions - parse("1.2.x").to_s excludes 1.1.999 - "1.2.X" excludes 1.3.0-0 - parse("1.2").to_s excludes 1.3.0-0 - "1.2.x" includes 1.2.999 - "1.2.x" stringifies as >=1.2.0 <1.3.0 - "1.2.3" excludes 1.2.2 - "1.2.3" includes 1.2.3 - "1" excludes 1.0.0-alpha - parse("1.x").to_s excludes 1.0.0-alpha - "1.x" excludes 0.999.999 - parse("1.X").to_s excludes 1.0.0-alpha - "1" includes 1.999.0 - parse("1.2.3").to_s includes 1.2.3 - "1" excludes 0.999.999 - "1.X" includes 1.999.0 - parse("1.X").to_s includes 1.999.0 - "1.x" stringifies as >=1.0.0 <2.0.0 - parse("1.2.x").to_s includes 1.2.0 - parse("1.2.3").to_s excludes 1.2.2 - "1.x" excludes 1.0.0-alpha - parse("1").to_s includes 1.0.0 - "1.2.X" stringifies as >=1.2.0 <1.3.0 - parse("1.2.x").to_s excludes 1.2.0-alpha - parse("1.x").to_s excludes 0.999.999 - parse("1.X").to_s includes 1.0.0 - "1.2.X" includes 1.2.0 - parse("1.2.X").to_s includes 1.2.0 - "1.2.3-alpha" stringifies as 1.2.3-alpha - "1.2.X" includes 1.2.999 - "1.X" stringifies as >=1.0.0 <2.0.0 - "1" includes 1.0.0 - "1.x" includes 1.999.0 - parse("1.X").to_s excludes 2.0.0-0 - "1.2" stringifies as >=1.2.0 <1.3.0 - parse("1").to_s excludes 2.0.0-0 - "1.2.3-alpha" includes 1.2.3-alpha - parse("1.2.X").to_s includes 1.2.999 - "1.2.3" excludes 1.2.4-alpha - "1.2.3-alpha" excludes 1.2.3-beta - "1.X" excludes 1.0.0-alpha - "1" excludes 2.0.0-0 - "1.2.3-alpha" excludes 1.2.3-999 - "1.2" excludes 1.3.0-0 - parse("1.2.X").to_s excludes 1.2.0-alpha - "1.2" includes 1.2.0 - "1.x" excludes 2.0.0-0 - "1.2.X" excludes 1.2.0-alpha - parse("1.2").to_s excludes 1.1.999 - parse("1.2").to_s includes 1.2.0 - parse("1.2.3-alpha").to_s excludes 1.2.3-beta - parse("1").to_s includes 1.999.0 - "1.2.x" excludes 1.1.999 - parse("1.x").to_s excludes 2.0.0-0 - "1.2.3" stringifies as 1.2.3 - parse("1.2.3-alpha").to_s excludes 1.2.3-999 - parse("1").to_s excludes 1.0.0-alpha - "1.2.x" includes 1.2.0 - "1.2.X" excludes 1.1.999 - parse("1").to_s excludes 0.999.999 - parse("1.x").to_s includes 1.999.0 - parse("1.2.x").to_s includes 1.2.999 - parse("1.x").to_s includes 1.0.0 - parse("1.2.X").to_s excludes 1.1.999 - "1.X" excludes 2.0.0-0 - parse("1.2").to_s includes 1.2.999 - parse("1.X").to_s excludes 0.999.999 - "1.X" includes 1.0.0 - "1.2" excludes 1.1.999 - "1.2.x" excludes 1.2.0-alpha - "1.X" excludes 0.999.999 - parse("1.2").to_s excludes 1.2.0-alpha - parse("1.2.3-alpha").to_s includes 1.2.3-alpha - parse("1.2.X").to_s excludes 1.3.0-0 - "1.2.3" excludes 1.2.3-alpha - "1.2" excludes 1.2.0-alpha - "1" stringifies as >=1.0.0 <2.0.0 - "1.2" includes 1.2.999 - parse("1.2.3").to_s excludes 1.2.4-alpha - parse("1.2.x").to_s excludes 1.3.0-0 - parse("1.2.3").to_s excludes 1.2.3-alpha - "1.x" includes 1.0.0 - "1.2.x" excludes 1.3.0-0 - ored expressions - non-overlapping - parse("1.2.3 || 1.2.5").to_s includes 1.2.5 - "1.2.3 || 1.2.5" excludes 1.2.3-0 - "1.2.3 || 1.2.5" excludes 1.2.5-0 - parse("1.2.3 || 1.2.5").to_s excludes 1.2.4 - "1.2.3 || 1.2.5" includes 1.2.3 - "1.2.3 || 1.2.5" includes 1.2.5 - returns nil on end - "1.2.3 || 1.2.5" 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 includes 1.2.3 - returns nil on exclude_end? - returns nil on exclude_begin? - returns nil on begin - parse("1.2.3 || 1.2.5").to_s excludes 1.2.3-0 - "1.2.3 || 1.2.5" stringifies as 1.2.3 || 1.2.5 - adjacent - "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.5-0 - parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 - ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 - "1.2.3 || 1.2.4 || 1.2.5" stringifies as >=1.2.3 <=1.2.5 - returns expected begin - parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.6-0 - parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.5 - "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.3-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.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 - ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 - parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.5-0 - "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.5 - 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" includes 1.2.6 - ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 - parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.6 - parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.3-0 - returns nil on end - ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 - overlapping - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 - parse(">=1.2.3 || 1.2.5").to_s includes 1.2.4 - parse(">=1.2.3 || 1.2.5").to_s includes 1.2.3 - parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.6-0 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 - ">=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.6 - ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 - ">=1.2.3 || 1.2.5" includes 1.2.4 - ">=1.2.3 || 1.2.5" stringifies as >=1.2.3 - ">=1.2.3 || 1.2.5" 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 includes 1.2.3 - ">=1.2.3 || 1.2.5" includes 1.2.3 - 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 excludes 1.2.3-0 - -SemanticPuppet::Dependency::GraphNode - #<=> - can be compared - #<< - sorts once the dependencies for a specific node - does not append unsatisfying nodes - does not append nodes with unknown names - appends satisfying nodes to the dependencies - sorts the dependencies for each addition to the same node - #populate_children - accepts a graph solution and populates it across all nodes - saves all relevant nodes as its children - #satisfied - is satisfied when all dependencies are fulfilled - is unsatisfied when no nodes have been appended - is unsatisfied when any dependencies are missing - dependencies - are maintained in the #dependencies Hash - are added by #add_dependency SemanticPuppet::Dependency::UnsatisfiableGraph - #message - is expected to match /foo, bar, and baz/ #sentence_from_list with a list of two items is expected to eql "foo and bar" + with a list of more than three items + is expected to eql "foo, bar, baz, and quux" with a list of three items is expected to eql "foo, bar, and baz" with a list of one item is expected to eql "foo" - with a list of more than three items - is expected to eql "foo, bar, baz, and quux" + #message + is expected to match /foo, bar, and baz/ + +SemanticPuppet::Version + #<=> + Spec v2.0.0 + Section 11 + comparisons against prereleases + prereleases have lower precedence + comparisions between prereleases + sorted order + build metadata does figure into equality + numeric identifiers sort numerically + identifiers are parsed left-to-right + larger identifier sets have precendence + non-numeric identifiers sort ASCIIbetically + non-numeric identifiers have a higher precendence + build metadata does not figure into precendence + identical prereleases are equal + comparisons without prereleases + sorted order + Spec v1.0.0 + Section 4 + sorted order + #next + with :major + does not modify the original version + removes any build information + returns the next major version + resets the minor and patch versions to 0 + removes any prerelease information + with :patch + removes any prerelease information + removes any build information + does not modify the original version + returns the next patch version + with :minor + does not modify the original version + removes any prerelease information + removes any build information + resets the patch version to 0 + returns the next minor version + .valid? + Spec v2.0.0 + Section 10 + permits non-numeric build identifiers with leading zeroes + rejects empty build metadata + rejects empty build identifiers + permits numeric build identifiers of zero + permits numeric build identifiers with leading zeroes + rejects build identifiers with non-alphanumerics + Section 9 + rejects prerelease identifiers with non-alphanumerics + permits numeric prerelease identifiers of zero + permits non-numeric prerelease identifiers + rejects numeric prerelease identifiers with leading zeroes + permits non-numeric prerelease identifiers with leading zeroes + rejects empty prerelease versions + rejects empty prerelease version identifiers + Section 2 + rejects version numbers containing leading zeroes + rejects versions that contain too many parts + rejects versions that contain non-integers + rejects versions that contain negative integers + rejects versions that contain too few parts + permits zeroes in version number parts + Spec v1.0.0 + Section 4 + permits numeric prerelease identifiers of zero + rejects prerelease identifiers with non-alphanumerics + permits non-numeric prerelease identifiers with leading zeroes + rejects empty prerelease versions + rejects numeric prerelease identifiers with leading zeroes + Section 2 + rejects versions that contain too few parts + rejects versions that contain non-integers + rejects versions that contain too many parts + permits zeroes in version number parts + .parse + Spec v2.0.0 + Section 2 + rejects versions that contain non-integers + rejects versions that contain negative integers + rejects version numbers containing leading zeroes + rejects versions that contain too few parts + permits zeroes in version number parts + rejects versions that contain too many parts + examples + 1.9.0 + 1.11.0 + 1.10.0 + Section 9 + permits non-numeric prerelease identifiers with leading zeroes + rejects empty prerelease version identifiers + rejects prerelease identifiers with non-alphanumerics + permits numeric prerelease identifiers of zero + rejects empty prerelease versions + rejects numeric prerelease identifiers with leading zeroes + examples + 1.0.0-0.3.7 + 1.0.0-alpha + 1.0.0-x.7.z.92 + 1.0.0-alpha.1 + Section 10 + rejects empty build metadata + rejects build identifiers with non-alphanumerics + rejects empty build identifiers + permits non-numeric build identifiers with leading zeroes + permits numeric build identifiers of zero + permits numeric build identifiers with leading zeroes + examples + 1.0.0-alpha+001 + 1.0.0+20130313144700 + 1.0.0-beta+exp.sha.5114f85 + 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 + rejects numeric prerelease identifiers with leading zeroes + rejects prerelease identifiers with non-alphanumerics + permits non-numeric prerelease identifiers with leading zeroes + permits numeric prerelease identifiers of zero + examples + 1.0.0-beta1 + 1.0.0-rc1 + 1.0.0-beta2 + 1.0.0-alpha1 + #== + should yield false when the minor differs + should yield true when comparing two equal instances + should yield false when the major differs + should yield false when the patch differs + should yield false when the prerelease differs + should yield false when compared to something that is not a Version + +SemanticPuppet::Dependency::ModuleRelease + #satisfies_dependency? + returns false when the release does not match the dependency name + 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 + #<=> + considers releases with greater version numbers greater + orders releases with different names lexographically + orders releases by name first + considers releases with lesser version numbers lesser + #dependency_names + lists the names of all the release's dependencies + #<< + marks matching dependencies as satisfied + does not mark mis-matching dependency versions as satisfied + does not mark mis-matching dependency names as satisfied + #to_s + is expected to =~ /1.2.3/ + is expected to =~ /foobarbaz/ + #satisfied? + returns false when not all dependencies have been satisified + returns true when all dependencies have been satisified + returns false when no dependencies have been satisified + returns false when not all dependency versions have been satisified + returns true when there are no dependencies to satisfy + #== + can compare a release with something that is not a release + considers two releases with different versions to be different + considers two releases with different names to be different + considers two equal releases to be equal + considers a release different from something that is not a release -Finished in 0.80724 seconds (files took 0.57352 seconds to load) +Finished in 7.62 seconds (files took 6.18 seconds to load) 987 examples, 0 failures -Randomized with seed 53260 +Randomized with seed 52254 ┌──────────────────────────────────────────────────────────────────────────────┐ @@ -2109,12 +2152,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/23732/tmp/hooks/B01_cleanup starting +I: user script /srv/workspace/pbuilder/23732/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/916 and its subdirectories -I: Current time: Wed May 17 07:22:20 -12 2023 -I: pbuilder-time-stamp: 1684351340 +I: removing directory /srv/workspace/pbuilder/23732 and its subdirectories +I: Current time: Thu May 18 09:33:35 +14 2023 +I: pbuilder-time-stamp: 1684352015