Input buildinfo: https://buildinfos.debian.net/buildinfo-pool/r/ruby-semantic-puppet/ruby-semantic-puppet_1.0.4-1_all.buildinfo Use metasnap for getting required timestamps New buildinfo file: /tmp/ruby-semantic-puppet-1.0.4-1v14i9jl6/ruby-semantic-puppet_1.0.4-1_all.buildinfo Get source package info: ruby-semantic-puppet=1.0.4-1 Source URL: http://snapshot.notset.fr/mr/package/ruby-semantic-puppet/1.0.4-1/srcfiles?fileinfo=1 env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin TMPDIR=/tmp mmdebstrap --arch=amd64 --include=adduser=3.118 autoconf=2.71-2 automake=1:1.16.5-1.1 autopoint=0.21-4 autotools-dev=20180224.1+nmu1 base-files=12 base-passwd=3.5.52 bash=5.1-3.1 binutils=2.37-10 binutils-common=2.37-10 binutils-x86-64-linux-gnu=2.37-10 bsdextrautils=2.37.2-4 bsdutils=1:2.37.2-4 build-essential=12.9 bzip2=1.0.8-4 ca-certificates=20211016 coreutils=8.32-4.1 cpp=4:11.2.0-2 cpp-11=11.2.0-12 dash=0.5.11+git20210903+057cd650a4ed-3 debconf=1.5.79 debhelper=13.5.2 debianutils=5.5-1 devscripts=2.21.5 dh-autoreconf=20 dh-strip-nondeterminism=1.12.1-1 diffutils=1:3.7-5 dirmngr=2.2.27-2 dpkg=1.20.9 dpkg-dev=1.20.9 dwz=0.14-1 fakeroot=1.26-1 file=1:5.41-2 findutils=4.8.0-1 g++=4:11.2.0-2 g++-11=11.2.0-12 gcc=4:11.2.0-2 gcc-11=11.2.0-12 gcc-11-base=11.2.0-12 gem2deb=1.7 gem2deb-test-runner=1.7 gettext=0.21-4 gettext-base=0.21-4 gnupg=2.2.27-2 gnupg-l10n=2.2.27-2 gnupg-utils=2.2.27-2 gpg=2.2.27-2 gpg-agent=2.2.27-2 gpg-wks-client=2.2.27-2 gpg-wks-server=2.2.27-2 gpgconf=2.2.27-2 gpgsm=2.2.27-2 gpgv=2.2.27-2 grep=3.7-1 groff-base=1.22.4-7 gzip=1.10-4 hostname=3.23 init-system-helpers=1.60 intltool-debian=0.35.0+20060710.5 libacl1=2.3.1-1 libarchive-zip-perl=1.68-1 libasan6=11.2.0-12 libassuan0=2.5.5-1 libatomic1=11.2.0-12 libattr1=1:2.5.1-1 libaudit-common=1:3.0.6-1 libaudit1=1:3.0.6-1+b1 libb-hooks-op-check-perl=0.22-1+b3 libbinutils=2.37-10 libblkid1=2.37.2-4 libbsd0=0.11.3-1 libbz2-1.0=1.0.8-4 libc-bin=2.32-4 libc-dev-bin=2.32-4 libc6=2.32-4 libc6-dev=2.32-4 libcap-ng0=0.7.9-2.2+b1 libcap2=1:2.44-1 libcc1-0=11.2.0-12 libclass-method-modifiers-perl=2.13-1 libcom-err2=1.46.4-1 libcrypt-dev=1:4.4.26-1 libcrypt1=1:4.4.26-1 libctf-nobfd0=2.37-10 libctf0=2.37-10 libdb5.3=5.3.28+dfsg1-0.8 libdebconfclient0=0.261 libdebhelper-perl=13.5.2 libdevel-callchecker-perl=0.008-1+b2 libdpkg-perl=1.20.9 libdynaloader-functions-perl=0.003-1.1 libedit2=3.1-20210910-1 libelf1=0.186-1 libencode-locale-perl=1.05-1.1 libexpat1=2.4.1-3 libfakeroot=1.26-1 libffi8=3.4.2-3 libfile-dirlist-perl=0.05-2 libfile-homedir-perl=1.006-1 libfile-listing-perl=6.14-1 libfile-stripnondeterminism-perl=1.12.1-1 libfile-touch-perl=0.12-1 libfile-which-perl=1.23-1 libgcc-11-dev=11.2.0-12 libgcc-s1=11.2.0-12 libgcrypt20=1.9.4-3+b1 libgdbm-compat4=1.22-1 libgdbm6=1.22-1 libgmp-dev=2:6.2.1+dfsg-3 libgmp10=2:6.2.1+dfsg-3 libgmpxx4ldbl=2:6.2.1+dfsg-3 libgnutls30=3.7.2-2 libgomp1=11.2.0-12 libgpg-error0=1.42-3 libgssapi-krb5-2=1.18.3-7 libhogweed6=3.7.3-1 libhtml-parser-perl=3.76-1 libhtml-tagset-perl=3.20-4 libhtml-tree-perl=5.07-2 libhttp-cookies-perl=6.10-1 libhttp-date-perl=6.05-1 libhttp-message-perl=6.35-1 libhttp-negotiate-perl=6.01-1 libicu67=67.1-7 libidn2-0=2.3.2-2 libimport-into-perl=1.002005-1 libio-html-perl=1.004-2 libio-pty-perl=1:1.15-2 libio-socket-ssl-perl=2.072-1 libipc-run-perl=20200505.0-1 libisl23=0.24-2 libitm1=11.2.0-12 libk5crypto3=1.18.3-7 libkeyutils1=1.6.1-2 libkrb5-3=1.18.3-7 libkrb5support0=1.18.3-7 libksba8=1.6.0-2 libldap-2.4-2=2.4.59+dfsg-1 liblsan0=11.2.0-12 liblwp-mediatypes-perl=6.04-1 liblwp-protocol-https-perl=6.10-1 liblz4-1=1.9.3-2 liblzma5=5.2.5-2 libmagic-mgc=1:5.41-2 libmagic1=1:5.41-2 libmd0=1.0.4-1 libmodule-runtime-perl=0.016-1 libmoo-perl=2.005004-2 libmount1=2.37.2-4 libmpc3=1.2.1-1 libmpdec3=2.5.1-2 libmpfr6=4.1.0-3 libncursesw6=6.3-1 libnet-http-perl=6.21-1 libnet-ssleay-perl=1.90-1 libnettle8=3.7.3-1 libnpth0=1.6-3 libnsl-dev=1.3.0-2 libnsl2=1.3.0-2 libp11-kit0=0.24.0-5 libpam-modules=1.4.0-10 libpam-modules-bin=1.4.0-10 libpam-runtime=1.4.0-10 libpam0g=1.4.0-10 libparams-classify-perl=0.015-1+b3 libpcre2-8-0=10.39-3 libpcre3=2:8.39-13 libperl5.32=5.32.1-6 libpipeline1=1.5.4-1 libpython3-stdlib=3.9.8-1 libpython3.9-minimal=3.9.9-1 libpython3.9-stdlib=3.9.9-1 libquadmath0=11.2.0-12 libreadline8=8.1-2 librole-tiny-perl=2.002004-1 libruby2.7=2.7.4-1+b1 libruby3.0=3.0.2-5 libsasl2-2=2.1.27+dfsg2-2 libsasl2-modules-db=2.1.27+dfsg2-2 libseccomp2=2.5.3-2 libselinux1=3.3-1+b1 libsemanage-common=3.3-1 libsemanage2=3.3-1+b1 libsepol2=3.3-1 libsigsegv2=2.13-1 libsmartcols1=2.37.2-4 libsqlite3-0=3.36.0-2 libssl1.1=1.1.1l-1 libstdc++-11-dev=11.2.0-12 libstdc++6=11.2.0-12 libsub-override-perl=0.09-2 libsub-quote-perl=2.006006-1 libsystemd0=249.7-1 libtasn1-6=4.18.0-4 libtimedate-perl=2.3300-2 libtinfo6=6.3-1 libtirpc-common=1.3.2-2 libtirpc-dev=1.3.2-2 libtirpc3=1.3.2-2 libtool=2.4.6-15 libtry-tiny-perl=0.30-1 libtsan0=11.2.0-12 libubsan1=11.2.0-12 libuchardet0=0.0.7-1 libudev1=249.7-1 libunistring2=0.9.10-6 liburi-perl=5.10-1 libuuid1=2.37.2-4 libwww-perl=6.58-1 libwww-robotrules-perl=6.02-1 libxml2=2.9.12+dfsg-5+b1 libyaml-0-2=0.2.2-1 libzstd1=1.4.8+dfsg-3 linux-libc-dev=5.15.3-1 login=1:4.8.1-2 lsb-base=11.1.0 m4=1.4.18-5 make=4.3-4.1 man-db=2.9.4-2 mawk=1.3.4.20200120-2 media-types=4.0.0 ncurses-base=6.3-1 ncurses-bin=6.3-1 netbase=6.3 openssl=1.1.1l-1 passwd=1:4.8.1-2 patch=2.7.6-7 patchutils=0.4.2-1 perl=5.32.1-6 perl-base=5.32.1-6 perl-modules-5.32=5.32.1-6 perl-openssl-defaults=5 pinentry-curses=1.1.0-4 po-debconf=1.0.21+nmu1 python3=3.9.8-1 python3-minimal=3.9.8-1 python3.9=3.9.9-1 python3.9-minimal=3.9.9-1 rake=13.0.3-1 readline-common=8.1-2 rpcsvc-proto=1.4.2-4 ruby=1:2.7.6 ruby-all-dev=1:2.7.6 ruby-diff-lcs=1.4.4-1 ruby-minitest=5.13.0-1 ruby-net-telnet=0.1.1-2 ruby-power-assert=1.1.7-2 ruby-rspec=3.10.0c1e1m2s3-1 ruby-rspec-core=3.10.0c1e1m2s3-1 ruby-rspec-expectations=3.10.0c1e1m2s3-1 ruby-rspec-mocks=3.10.0c1e1m2s3-1 ruby-rspec-support=3.10.0c1e1m2s3-1 ruby-rubygems=3.2.27-3 ruby-test-unit=3.3.9-1 ruby-xmlrpc=0.3.2-1 ruby2.7=2.7.4-1+b1 ruby2.7-dev=2.7.4-1+b1 ruby3.0=3.0.2-5 ruby3.0-dev=3.0.2-5 rubygems-integration=1.18 sed=4.8-1 sensible-utils=0.0.17 sysvinit-utils=3.00-1 tar=1.34+dfsg-1 tzdata=2021e-1 util-linux=2.37.2-4 wdiff=1.2.2-2+b1 xz-utils=5.2.5-2 zlib1g=1:1.2.11.dfsg-2 --variant=apt --aptopt=Acquire::Check-Valid-Until "false" --aptopt=Acquire::http::Dl-Limit "1000"; --aptopt=Acquire::https::Dl-Limit "1000"; --aptopt=Acquire::Retries "5"; --aptopt=APT::Get::allow-downgrades "true"; --keyring=/usr/share/keyrings/ --essential-hook=chroot "$1" sh -c "apt-get --yes install fakeroot util-linux" --essential-hook=copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ --essential-hook=chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20211128T033921Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20211128T033921Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20211126T150138Z/ unstable main' >> /etc/apt/sources.list && apt-get update" --customize-hook=chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash --customize-hook=chroot "$1" env sh -c "apt-get source --only-source -d ruby-semantic-puppet=1.0.4-1 && mkdir -p /build/ruby-semantic-puppet-BDJkVg && dpkg-source --no-check -x /*.dsc /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4 && chown -R builduser:builduser /build/ruby-semantic-puppet-BDJkVg" --customize-hook=chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="C.UTF-8" LC_COLLATE="C.UTF-8" SOURCE_DATE_EPOCH="1637848689" dpkg-buildpackage -uc -a amd64 --build=all" --customize-hook=sync-out /build/ruby-semantic-puppet-BDJkVg /tmp/ruby-semantic-puppet-1.0.4-1v14i9jl6 bookworm /dev/null deb http://snapshot.notset.fr/archive/debian/20211126T150138Z unstable main I: automatically chosen mode: root I: chroot architecture amd64 is equal to the host's architecture I: automatically chosen format: tar I: using /tmp/mmdebstrap.hcVG73dL2c as tempdir I: running apt-get update... I: downloading packages with apt... I: extracting archives... I: installing essential packages... I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "apt-get --yes install fakeroot util-linux"' exec /tmp/mmdebstrap.hcVG73dL2c Reading package lists... Building dependency tree... util-linux is already the newest version (2.37.2-4). The following NEW packages will be installed: fakeroot libfakeroot 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. Need to get 134 kB of archives. After this operation, 397 kB of additional disk space will be used. Get:1 http://snapshot.notset.fr/archive/debian/20211126T150138Z unstable/main amd64 libfakeroot amd64 1.26-1 [47.3 kB] Get:2 http://snapshot.notset.fr/archive/debian/20211126T150138Z unstable/main amd64 fakeroot amd64 1.26-1 [87.1 kB] debconf: delaying package configuration, since apt-utils is not installed Fetched 134 kB in 0s (1017 kB/s) Selecting previously unselected package libfakeroot:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 4672 files and directories currently installed.) Preparing to unpack .../libfakeroot_1.26-1_amd64.deb ... Unpacking libfakeroot:amd64 (1.26-1) ... Selecting previously unselected package fakeroot. Preparing to unpack .../fakeroot_1.26-1_amd64.deb ... Unpacking fakeroot (1.26-1) ... Setting up libfakeroot:amd64 (1.26-1) ... Setting up fakeroot (1.26-1) ... update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode Processing triggers for libc-bin (2.32-4) ... I: running special hook: copy-in /usr/share/keyrings/debian-archive-bullseye-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-security-automatic.gpg /usr/share/keyrings/debian-archive-bullseye-stable.gpg /usr/share/keyrings/debian-archive-buster-automatic.gpg /usr/share/keyrings/debian-archive-buster-security-automatic.gpg /usr/share/keyrings/debian-archive-buster-stable.gpg /usr/share/keyrings/debian-archive-keyring.gpg /usr/share/keyrings/debian-archive-removed-keys.gpg /usr/share/keyrings/debian-archive-stretch-automatic.gpg /usr/share/keyrings/debian-archive-stretch-security-automatic.gpg /usr/share/keyrings/debian-archive-stretch-stable.gpg /usr/share/keyrings/debian-ports-archive-keyring-removed.gpg /usr/share/keyrings/debian-ports-archive-keyring.gpg /usr/share/keyrings/debian-keyring.gpg /etc/apt/trusted.gpg.d/ I: running --essential-hook in shell: sh -c 'chroot "$1" sh -c "rm /etc/apt/sources.list && echo 'deb http://snapshot.notset.fr/archive/debian/20211128T033921Z/ bookworm main deb-src http://snapshot.notset.fr/archive/debian/20211128T033921Z/ bookworm main deb http://snapshot.notset.fr/archive/debian/20211126T150138Z/ unstable main' >> /etc/apt/sources.list && apt-get update"' exec /tmp/mmdebstrap.hcVG73dL2c Get:1 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm InRelease [129 kB] Hit:2 http://snapshot.notset.fr/archive/debian/20211126T150138Z unstable InRelease Ign:3 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main amd64 Packages Ign:3 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main amd64 Packages Ign:3 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main Sources Ign:4 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main amd64 Packages Get:3 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main Sources [11.7 MB] Get:4 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main amd64 Packages [11.2 MB] Fetched 23.0 MB in 19s (1189 kB/s) Reading package lists... I: installing remaining packages inside the chroot... I: running --customize-hook in shell: sh -c 'chroot "$1" useradd --no-create-home -d /nonexistent -p "" builduser -s /bin/bash' exec /tmp/mmdebstrap.hcVG73dL2c I: running --customize-hook in shell: sh -c 'chroot "$1" env sh -c "apt-get source --only-source -d ruby-semantic-puppet=1.0.4-1 && mkdir -p /build/ruby-semantic-puppet-BDJkVg && dpkg-source --no-check -x /*.dsc /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4 && chown -R builduser:builduser /build/ruby-semantic-puppet-BDJkVg"' exec /tmp/mmdebstrap.hcVG73dL2c Reading package lists... NOTICE: 'ruby-semantic-puppet' packaging is maintained in the 'Git' version control system at: https://salsa.debian.org/puppet-team/ruby-semantic-puppet.git Please use: git clone https://salsa.debian.org/puppet-team/ruby-semantic-puppet.git to retrieve the latest (possibly unreleased) updates to the package. Need to get 33.4 kB of source archives. Get:1 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main ruby-semantic-puppet 1.0.4-1 (dsc) [2171 B] Get:2 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main ruby-semantic-puppet 1.0.4-1 (tar) [28.5 kB] Get:3 http://snapshot.notset.fr/archive/debian/20211128T033921Z bookworm/main ruby-semantic-puppet 1.0.4-1 (diff) [2748 B] Fetched 33.4 kB in 0s (562 kB/s) Download complete and in download only mode W: Download is performed unsandboxed as root as file 'ruby-semantic-puppet_1.0.4-1.dsc' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied) dpkg-source: info: extracting ruby-semantic-puppet in /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4 dpkg-source: info: unpacking ruby-semantic-puppet_1.0.4.orig.tar.gz dpkg-source: info: unpacking ruby-semantic-puppet_1.0.4-1.debian.tar.xz I: running --customize-hook in shell: sh -c 'chroot "$1" env --unset=TMPDIR runuser builduser -c "cd /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4 && env DEB_BUILD_OPTIONS="parallel=4" LC_ALL="C.UTF-8" LC_COLLATE="C.UTF-8" SOURCE_DATE_EPOCH="1637848689" dpkg-buildpackage -uc -a amd64 --build=all"' exec /tmp/mmdebstrap.hcVG73dL2c dpkg-buildpackage: info: source package ruby-semantic-puppet dpkg-buildpackage: info: source version 1.0.4-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Daniel Leidert dpkg-source --before-build . debian/rules clean dh clean --buildsystem=ruby --with ruby dh_auto_clean -O--buildsystem=ruby dh_ruby --clean dh_ruby --clean dh_autoreconf_clean -O--buildsystem=ruby dh_clean -O--buildsystem=ruby debian/rules binary-indep dh binary-indep --buildsystem=ruby --with ruby dh_update_autotools_config -i -O--buildsystem=ruby dh_autoreconf -i -O--buildsystem=ruby dh_auto_configure -i -O--buildsystem=ruby dh_ruby --configure dh_auto_build -i -O--buildsystem=ruby dh_ruby --build dh_ruby --build dh_auto_test -i -O--buildsystem=ruby dh_ruby --test create-stamp debian/debhelper-build-stamp dh_testroot -i -O--buildsystem=ruby dh_prep -i -O--buildsystem=ruby dh_auto_install --destdir=debian/ruby-semantic-puppet/ -i -O--buildsystem=ruby dh_ruby --install /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet dh_ruby --install /usr/bin/ruby2.7 -S gem build --config-file /dev/null --verbose /tmp/d20211201-430064-vybxg7/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' WARNING: open-ended dependency on rspec (>= 0, development) is not recommended use a bounded requirement, such as '~> x.y' WARNING: open-ended dependency on simplecov (>= 0, development) is not recommended use a bounded requirement, such as '~> x.y' WARNING: open-ended dependency on cane (>= 0, development) is not recommended use a bounded requirement, such as '~> x.y' WARNING: open-ended dependency on yard (>= 0, development) is not recommended use a bounded requirement, such as '~> x.y' WARNING: open-ended dependency on redcarpet (>= 0, development) is not recommended use a bounded requirement, such as '~> x.y' WARNING: See https://guides.rubygems.org/specification-reference/ for help Successfully built RubyGem Name: semantic_puppet Version: 1.0.4 File: semantic_puppet-1.0.4.gem /usr/bin/ruby2.7 -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/d20211201-430064-vybxg7/semantic_puppet-1.0.4.gem Failed to load /dev/null because it doesn't contain valid YAML hash /build/ruby-semantic-puppet-BDJkVg/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-BDJkVg/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 /build/ruby-semantic-puppet-BDJkVg/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/graph.rb /build/ruby-semantic-puppet-BDJkVg/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/graph_node.rb /build/ruby-semantic-puppet-BDJkVg/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/module_release.rb /build/ruby-semantic-puppet-BDJkVg/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/source.rb /build/ruby-semantic-puppet-BDJkVg/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/unsatisfiable_graph.rb /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all/gems/semantic_puppet-1.0.4/lib/semantic_puppet/gem_version.rb /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all/gems/semantic_puppet-1.0.4/lib/semantic_puppet/version.rb /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all/gems/semantic_puppet-1.0.4/lib/semantic_puppet/version_range.rb Successfully installed semantic_puppet-1.0.4 1 gem installed cd debian/ruby-semantic-puppet/usr/share/rubygems-integration/all rm -rf bin rm -rf build_info rm -rf cache rm -rf doc rm -rf extensions rmdir plugins cd gems/semantic_puppet-1.0.4 rm -f chmod 644 lib/semantic_puppet.rb lib/semantic_puppet/dependency.rb lib/semantic_puppet/dependency/graph.rb lib/semantic_puppet/dependency/graph_node.rb lib/semantic_puppet/dependency/module_release.rb lib/semantic_puppet/dependency/source.rb lib/semantic_puppet/dependency/unsatisfiable_graph.rb lib/semantic_puppet/gem_version.rb lib/semantic_puppet/version.rb lib/semantic_puppet/version_range.rb find lib/ -type d -empty -delete cd - cd - dh_installchangelogs -pruby-semantic-puppet /build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/CHANGELOG.md upstream /usr/bin/ruby2.7 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby2.7 │ └──────────────────────────────────────────────────────────────────────────────┘ GEM_PATH=/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all:/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/2.7.0:/var/lib/gems/2.7.0:/usr/local/lib/ruby/gems/2.7.0:/usr/lib/ruby/gems/2.7.0:/usr/lib/x86_64-linux-gnu/ruby/gems/2.7.0:/usr/share/rubygems-integration/2.7.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0 ruby2.7 -e gem\ \"semantic_puppet\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby2.7 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=. GEM_PATH=/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all:/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/2.7.0:/var/lib/gems/2.7.0:/usr/local/lib/ruby/gems/2.7.0:/usr/lib/ruby/gems/2.7.0:/usr/lib/x86_64-linux-gnu/ruby/gems/2.7.0:/usr/share/rubygems-integration/2.7.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/2.7.0 ruby2.7 -S rake -f debian/ruby-tests.rake /usr/bin/ruby2.7 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.10.3/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.10.1/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.10.1/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation Run options: include {:focus=>true} All examples were filtered out; ignoring {:focus=>true} Randomized with seed 29066 SemanticPuppet::Dependency::Graph #add_graph_constraint can create a new constraint on a graph permits multiple graph constraints #add_constraint can create a new constraint on a module permits multiple constraints against the same module name #satisfies_dependency? is satisfied by modules that do fulfill all the constraints is not satisfied by modules it does not depend on is not satisfied by modules that do not fulfill all the constraints is not satisfied by modules that do not fulfill the constraint #satisfies_graph? returns true if the solution violates no graph constraints returns false if the solution violates any graph constraint returns false if the solution violates a graph constraint #initialize adds the named dependencies for every key in the passed hash adds constraints for every key in the passed hash implements the GraphNode protocol can be called without arguments SemanticPuppet::Dependency .sources defaults to an empty list is frozen can be emptied by using #clear_sources can be modified by using #add_source .query with one source populates all returned ModuleReleases with related dependencies populates the returned ModuleRelease with related dependencies queries the source for release information returns a ModuleRelease with the requested dependencies queries the source for each dependency queries the source for each dependency only once with multiple sources queries each source in turn resolves all dependencies against all sources without sources returns an unsatisfied ModuleRelease .resolve 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 with circular dependencies that cannot be resolved fails with an appropriate message that can be resolved terminates for a module with competing dependencies that overlap returns the greatest release satisfying all dependencies that do not overlap fails with an appropriate message that violate graph constraints that can be resolved terminates that cannot be resolved fails with an appropriate message for a module with dependencies that violate module constraints on the graph that cannot be resolved fails with an appropriate message that can be resolved terminates for a module without dependencies returns the greatest release matching the version range when the query omits all versions fails with an appropriate message when the query includes both stable and prerelease versions returns the greatest stable release matching the range when the query omits all stable versions returns the greatest prerelease version matching the range 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 #satisfied is unsatisfied when no nodes have been appended is unsatisfied when any dependencies are missing is satisfied when all dependencies are fulfilled dependencies are maintained in the #dependencies Hash are added by #add_dependency #<< does not append unsatisfying nodes sorts the dependencies for each addition to the same node sorts once the dependencies for a specific node does not append nodes with unknown names appends satisfying nodes to the dependencies SemanticPuppet::Version .parse Spec v2.0.0 Section 9 rejects prerelease identifiers with non-alphanumerics rejects empty prerelease version identifiers rejects empty prerelease versions permits numeric prerelease identifiers of zero permits non-numeric prerelease identifiers with leading zeroes rejects numeric prerelease identifiers with leading zeroes examples 1.0.0-alpha 1.0.0-alpha.1 1.0.0-x.7.z.92 1.0.0-0.3.7 Section 10 rejects empty build identifiers permits non-numeric build identifiers with leading zeroes permits numeric build identifiers with leading zeroes rejects build identifiers with non-alphanumerics permits numeric build identifiers of zero rejects empty build metadata examples 1.0.0+20130313144700 1.0.0-beta+exp.sha.5114f85 1.0.0-alpha+001 Section 2 permits zeroes in version number parts 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 examples 1.11.0 1.10.0 1.9.0 Spec v1.0.0 Section 2 rejects versions that contain non-integers permits zeroes in version number parts rejects versions that contain too many parts rejects versions that contain too few parts examples 1.10.0 1.11.0 1.9.0 Section 4 rejects numeric prerelease identifiers with leading zeroes rejects empty prerelease versions permits numeric prerelease identifiers of zero rejects prerelease identifiers with non-alphanumerics permits non-numeric prerelease identifiers with leading zeroes examples 1.0.0-beta2 1.0.0-rc1 1.0.0-beta1 1.0.0-alpha1 #next with :minor returns the next minor version removes any build information resets the patch version to 0 does not modify the original version removes any prerelease information with :patch returns the next patch version removes any build information does not modify the original version removes any prerelease information with :major resets the minor and patch versions to 0 does not modify the original version returns the next major version removes any build information removes any prerelease information #<=> Spec v1.0.0 Section 4 sorted order Spec v2.0.0 Section 11 comparisons without prereleases sorted order comparisons against prereleases prereleases have lower precedence comparisions between prereleases build metadata does not figure into precendence larger identifier sets have precendence numeric identifiers sort numerically build metadata does figure into equality non-numeric identifiers have a higher precendence identifiers are parsed left-to-right non-numeric identifiers sort ASCIIbetically identical prereleases are equal sorted order .valid? Spec v1.0.0 Section 2 rejects versions that contain too few parts permits zeroes in version number parts rejects versions that contain too many parts rejects versions that contain non-integers Section 4 permits non-numeric prerelease identifiers with leading zeroes permits numeric prerelease identifiers of zero rejects empty prerelease versions rejects prerelease identifiers with non-alphanumerics rejects numeric prerelease identifiers with leading zeroes Spec v2.0.0 Section 9 rejects numeric prerelease identifiers with leading zeroes permits non-numeric prerelease identifiers rejects empty prerelease version identifiers rejects empty prerelease versions rejects prerelease identifiers with non-alphanumerics permits numeric prerelease identifiers of zero permits non-numeric prerelease identifiers with leading zeroes Section 2 rejects version numbers containing leading zeroes rejects versions that contain negative integers rejects versions that contain too many parts rejects versions that contain too few parts rejects versions that contain non-integers permits zeroes in version number parts Section 10 rejects build identifiers with non-alphanumerics permits numeric build identifiers with leading zeroes permits non-numeric build identifiers with leading zeroes rejects empty build metadata permits numeric build identifiers of zero rejects empty build identifiers #== should yield false when the major differs should yield false when the minor differs should yield true when comparing two equal instances should yield false when compared to something that is not a Version should yield false when the patch differs should yield false when the prerelease differs SemanticPuppet::Dependency::ModuleRelease #satisfies_dependency? returns false when there are no dependencies to satisfy returns true when the release matches the dependency returns false when the release does not match the dependency version returns false when the release does not match the dependency name #to_s is expected to =~ /1.2.3/ is expected to =~ /foobarbaz/ #<=> orders releases by name first orders releases with different names lexographically considers releases with lesser version numbers lesser considers releases with greater version numbers greater #<< marks matching dependencies as satisfied does not mark mis-matching dependency versions as satisfied does not mark mis-matching dependency names as satisfied #dependency_names lists the names of all the release's dependencies #== considers two equal releases to be equal considers a release different from something that is not a release considers two releases with different versions to be different considers two releases with different names to be different can compare a release with something that is not a release #satisfied? returns true when there are no dependencies to satisfy returns false when no dependencies have been satisified returns true when all dependencies have been satisified returns false when not all dependencies have been satisified returns false when not all dependency versions have been satisified SemanticPuppet::VersionRange #intersection cannot intersect with non-VersionRanges between >=10.0.0 <5.0.0 & 9.0.0 - 6.0.0 >=7.0.0 <1.0.0 6.0.0 - 1.0.0 15.0.0 - 11.0.0 >=5.0.0 <1.0.0 >=10.0.0 <5.0.0 15.0.0 - 9.0.0 4.0.0 - 1.0.0 15.0.0 - 10.0.0 10.0.0 - 5.0.0 11.0.0 - 4.0.0 5.0.0 - 1.0.0 is commutative between 10.0.0 - 5.0.0 & >=7.0.0 <1.0.0 between >=10.0.0 <5.0.0 & 4.0.0 - 1.0.0 between 10.0.0 - 5.0.0 & 11.0.0 - 4.0.0 between 10.0.0 - 5.0.0 & 6.0.0 - 1.0.0 between >=10.0.0 <5.0.0 & >=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 & >=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 & 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 & 15.0.0 - 9.0.0 between 10.0.0 - 5.0.0 & 15.0.0 - 10.0.0 between >=10.0.0 <5.0.0 & >=10.0.0 <5.0.0 between 10.0.0 - 5.0.0 & 9.0.0 - 6.0.0 between 10.0.0 - 5.0.0 & 15.0.0 - 9.0.0 between >=10.0.0 <5.0.0 & 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 & 15.0.0 - 11.0.0 between >=10.0.0 <5.0.0 & 15.0.0 - 10.0.0 between >=10.0.0 <5.0.0 & 10.0.0 - 5.0.0 between >=10.0.0 <5.0.0 & 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 - 11.0.0 >=5.0.0 <1.0.0 11.0.0 - 4.0.0 9.0.0 - 6.0.0 10.0.0 - 5.0.0 4.0.0 - 1.0.0 15.0.0 - 10.0.0 >=7.0.0 <1.0.0 >=10.0.0 <5.0.0 6.0.0 - 1.0.0 5.0.0 - 1.0.0 15.0.0 - 9.0.0 The version 0.7.0 should be above range <0.7.x 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.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 0.5.5 should not be below range ~v0.5.4-pre 1.2.3 should not be below range 1.2.x || 2.x 1.1.3 should be below range 2.*.* 1.2.3 should not be below range * 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) 2.0.0 should be above range 1.0.0 1.2.0 should be above range <1.2 1.0.0 should be above range <1 3.2.2 should not be below range ~>3.2.1 0.5.5 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) 1.2.1 should be above range < 1.2 1.1.1 should not be below range <1.2 3.3.2 should be above range ~>3.2.1 0.2.4 should not be below range >=0.2.3 <=0.2.4 2.4.0 should not be below range ~2.4 2.9.9 should not be below range 1.0.0 - 2.0.0 0.1.2 should be below range ~1.0 2.2.4 should be above range ~>1 0.2.3 should be below range ~1 0.2.9 should not be above range <2.0.0(<2.0.0) 4.0.0 should be above range 1.2.* || 2.* 0.1.20 should not be below range 0.1.20 || 1.2.4 2.3.5 should be below range ~2.4 0.2.3 should be below range ~>1 2.5.0 should be above range ~2.4 1.2.9 should be below range >=2.0.0 1.0.0 should not be above range >= 1.0.0(>=1.0.0) 0.2.9 should not be below range <2.0.0 2.2.1 should be below range 2.3 2.9999.9999 should be above range <=2.0.0 2.0.0 should not be above range <=2.0.0(<=2.0.0) 0.7.2 should not be below range =0.7.x 1.3.3 should be above range 1.2.x 2.1.3 should not be above range 2.x.x(>=2.0.0 <3.0.0) 1.0.0-beta should be above range <1 2.1.3 should not be below range 1.2.x || 2.x 1.0.1 should not be below range >= 1.0.0 2.1.1 should be above range <=2.0.0 1.2.4 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) 0.2.3 should not be below range >=0.2.3 || <0.0.1 1.9999.9999 should not be above range <=2.0.0(<=2.0.0) 1.3.3 should be above range 1.2.* 0.7.0-asdf should be below range =0.7.x 3.1.3 should be above range 1.2.x || 2.x 1.1.0 should not be above range >=1.0.0(>=1.0.0) 0.6.2 should not be above range <=0.7.x(<0.8.0) 3.2.0 should be below range ~>3.2.1 3.0.0 should be above range <=2.0.0 1.2.3 should not be below range * 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) 1.0.0 should not be below range 1.0.0 3.0.0 should be above range 2.x.x 1.2.3 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) 1.3.4 should not be above range ||(*) 1.2.3 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 0.9.9 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 1.1.1 should be below range >=2.0.0 2.0.0-beta should be above range 1 1.2.3 should not be below range ~>1 2.3.2 should be below range ~>3.2.1 1.1.1 should not be below range < 1.2 1.3.0 should be above range ~1.2.2 1.2.3 should not be above range *(*) 1.1.3 should be below range 1.2.* 0.7.1-1 should be above range ~0.6.1-1 0.0.0 should be below range ~1.0 0.6.0-asdf should be below range =0.7.x 1.9999.9999 should be below range 2 1.1.2 should be above range ~1.0 1.9999.9999 should not be above range <2.0.0(<2.0.0) 2.4.5 should not be below range ~2.4 1.0.0 should not be above range >=1.0.0(>=1.0.0) 1.2.3 should not be below range ~1 2.1.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 2.0.0 should not be above range <= 2.0.0(<=2.0.0) 1.0.1 should not be below range >=1.0.0 1.0.0 should not be below range >= 1.0.0 0.7.2 should not be above range =0.7.x(>=0.7.0 <0.8.0) 0.7.2 should be above range <0.7.x 5.0.1 should be above range 2.*.* 0.7.0-asdf should not be above range =0.7.x(>=0.7.0 <0.8.0) 2.0.0 should not be above range ^3.0.0(>=3.0.0 <4.0.0) 1.1.0 should be above range ~1.0 3.3.0 should be above range ~>3.2.1 0.6.1-0 should be below range ~0.6.1-1 1.0.0-beta should be below range 1 2.0.0 should not be below range <=2.0.0 1.0.0-beta should be below range 2 0.6.0 should be below range >=0.7.x 3.2.0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 1.1.0 should not be above range >1.0.0(>1.0.0) 0.2.3 should be below range ~> 1 0.8.2 should be above range =0.7.x 1.2.4 should not be below range 0.1.20 || >1.2.4 0.1.97 should not be above range >=0.1.97(>=0.1.97) 1.0.2 should not be above range ~1.0(>=1.0.0 <1.1.0) 0.6.0 should be below range =0.7.x 0.7.2 should not be below range >=0.7.x 1.0.1 should not be above range >1.0.0(>1.0.0) 1.0.1 should not be below range > 1.0.0 3.2.3 should be above range ~> 1 1.2.3-foo should not be above range *(*) 1.0.0 should not be above range 1.0.0(1.0.0) 2.2.2 should be below range 2.3 1.1.3 should be below range 1.2.* || 2.* 3.1.3 should be above range 2.*.* 0.6.1-pre should be above range ~v0.5.4-pre 0.1.5 should be below range 0.1.20 || 1.2.4 1.2.4 should not be above range 0.1.20 || >1.2.4(0.1.20 || >1.2.4) 0.2.9 should not be above range <=2.0.0(<=2.0.0) 1.9999.9999 should not be below range <= 2.0.0 2.0.0 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 2.0.0 should be below range >2.0.0 1.0.1 should not be below range >1.0.0 0.6.1-1 should not be above range ~0.6.1-1(>=0.6.1-1 <0.7.0) 1.2.1 should be below range > 1.2 1.0.2 should not be below range ~1.0 1.0.1 should not be above range >= 1.0.0(>=1.0.0) 0.0.1 should be below range 1.0.0 - 2.0.0 1.1.0 should not be below range > 1.0.0 0.2.3 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 0.2.5 should not be above range >0.2.3 >0.2.4 <=0.2.5(>0.2.4 <=0.2.5) 0.0.0-0 should not be above range ^1(>=1.0.0 <2.0.0) 1.0.0-beta should be below range >1 1.9999.9999 should be below range >=2.0.0 2.3.1 should not be below range 2.3 0.2.5 should not be below range >0.2.3 >0.2.4 <=0.2.5 0.2.4 should not be above range >=0.2.3 <=0.2.4(>=0.2.3 <=0.2.4) 2.0.0 should not be below range 1.0.0 - 2.0.0 1.0.0 should not be below range >=1 2.3.1 should not be above range 2.3(>=2.3.0 <2.4.0) 1.0.0-0 should be below range ^1 1.2.5 should be above range 0.1.20 || 1.2.4 1.1.0 should not be below range ~ 1.0 0.2.9 should not be above range < 2.0.0(<2.0.0) 2.2.9 should be above range <=2.0.0 0.1.0 should be below range ~ 1.0 2.1.3 should not be below range 2.x.x 2.1.2 should not be below range 2 2.4.2 should be above range 2.3 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 below range 1.2.* || 2.* 0.6.2 should not be below range <=0.7.x 1.9999.9999 should not be below range <=2.0.0 3.1.3 should be above range 2.x.x 1.0.0 should not be below range =0.1.0 1.0.0 should be below range 2 1.0.0 should be below range >=2.0.0 0.5.4-alpha should be below range ~v0.5.4-pre 0.0.0 should be below range 1.0.0 0.8.0 should be above range =0.7.x 0.1.97 should not be above range >=0.1.97(>=0.1.97) 0.0.1 should be below range 1.0.0 1.0.2 should not be below range ~ 1.0 1.0.1 should not be above range >=1.0.0(>=1.0.0) 1.2.3 should not be above range 1.2.*(>=1.2.0 <1.3.0) 2.3.0 should be below range ~2.4 1.2.9 should be below range >2.0.0 0.0.0 should not be below range >=0.2.3 || <0.0.1 1.2.1 should be below range ~1.2.2 2.9999.9999 should be above range <2.0.0 2.4.1 should be above range 2.3 0.0.0-beta should be below range 1 1.2.3 should not be below range 1.0.0 - 2.0.0 0.1.20 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) 1.0.0 should not be above range >=1(>=1.0.0) 1.2.3 should not be above range ~> 1(>=1.0.0 <2.0.0) 1.0.0 should not be below range 0.5.4 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) 0.6.2 should be below range =0.7.x 0.2.4 should not be below range >=0.2.3 || <0.0.1 0.1.97 should not be below range >=0.1.97 2.2.3 should be above range 1.0.0 - 2.0.0 1.2.4 should not be below range 0.1.20 || 1.2.4 1.1.3 should be below range 1.2.x || 2.x 0.2.3 should be below range 1.0.0 - 2.0.0 0.2.9 should not be below range < 2.0.0 1.2.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 0.6.1-1 should not be below range ~0.6.1-1 1.1.0 should not be below range >=1.0.0 1.2.0 should be below range >1.2 2.4.0 should not be above range ~2.4(>=2.4.0 <2.5.0) 1.2.3 should not be above range x(*) 0.2.4 should be below range ~>1 0.0.0 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 1.2.9 should be below range >=2.0.0 1.1.0 should not be above range > 1.0.0(>1.0.0) 1.1.0 should be below range 1.2.x 3.5.0 should not be below range ^0.1.0 || ~3.0.1 || >4 <=5.0.0 1.1.0 should not be below range >= 1.0.0 0.5.4-alpha should be below range ~v0.5.4-pre 1.0.0 should be below range 2.x.x 1.0.0-beta.1 should be below range 1.0.0-beta.2 1.0.0-beta should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) 1.2.3 should not be above range 1.2.x(>=1.2.0 <1.3.0) 0.2.4 should not be above range >=*(>=0.0.0) 3.2.9 should be above range <=2.0.0 2.1.3 should not be below range 1.2.* || 2.* 1.1.1 should not be above range <1.2(<1.2.0) 1.2.3 should not be below range 1.2.* 0.2.9 should not be above range <= 2.0.0(<=2.0.0) 1.0.0-beta should not be above range 1(>=1.0.0 <2.0.0) 1.1.0 should not be below range >1.0.0 5.0.0-0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 1.1.0 should be above range ~ 1.0 0.2.9 should not be below range <= 2.0.0 1.2.3 should not be below range x 0.2.4 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 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.3.4 should not be below range || 0.2.4 should not be below range >=* 1.2.3 should not be above range ~>1(>=1.0.0 <2.0.0) 5.0.0-0 should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) 2.1.3 should not be below range 2.*.* 1.3.0 should be above range ~1.2.2 1.0.0-beta should be below range > 1 1.0.1 should be above range 1.0.0 1.2.3 should not be below range 1.2.* || 2.* 4.0.0 should not be below range ^3.0.0 1.3.0 should be above range 1.2.x 0.8.0-asdf should be above range =0.7.x 2.3.0 should be below range ~2.4 1.3.3 should be above range 1.2.* 1.1.0 should not be above range >= 1.0.0(>=1.0.0) 2.4.5 should not be above range ~2.4(>=2.4.0 <2.5.0) 1.0.0 should not be above range >= 1(>=1.0.0) 1.1.9999 should be below range 1.2.* || 2.* 0.6.2 should be below range >=0.7.x 1.0.0 should be below range >1 1.1.1 should not be above range < 1.2(<1.2.0) 2.0.0 should be below range >2.0.0 3.0.0 should be above range 2 2.2.3 should be above range ~1 2.2.3 should be above range ~>1 1.2.3 should not be below range 0.1.20 || 1.2.4 0.5.4 should not be below range ~v0.5.4-pre 1.9999.9999 should not be below 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) 1.0.2 should not be above range ~ 1.0(>=1.0.0 <1.1.0) 3.2.2 should not be above range ~>3.2.1(>=3.2.1 <3.3.0) 2.5.0 should be above range ~2.4 2.0.0 should not be below range ^1.0.0 || ~2.0.1 1.0.0 should be below range 1.2.x || 2.x 1.0.0-beta should not be below range ^1.0.0-alpha 1.2.3 should not be above range *(*) 1.0.1 should not be above range > 1.0.0(>1.0.0) 0.7.0-asdf should not be above range >=0.7.x(>=0.7.0) 2.0.0-beta should be above range 1 1.2.3 should not be below range 1.2.x 2.0.0 should be above range <2.0.0 1.0.0 should not be below range >= 1 0.2.3 should be below range ~1 1.1.3 should be below range 2.x.x 1.0.0 should not be above range (*) 1.9999.9999 should not be below range < 2.0.0 1.0.0-beta should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 1.2.3 should not be above range ~1(>=1.0.0 <2.0.0) 1.1.3 should be below range 1.2.* 1.1.3 should be below range 1.2.x 2.0.1 should be above range 1.0.0 - 2.0.0 3.1.3 should be above range 1.2.* || 2.* 0.6.0 should be above range ~v0.5.4-pre 0.2.9 should not be below range <=2.0.0 1.0.1-beta1 should be above range 1.0.0 0.7.0-asdf should be below range >=0.7.x 1.0.0 should not be below range >=1.0.0 2.2.9 should be above range <2.0.0 2.0.0 should not be below range <= 2.0.0 2.1.3 should not be above range 2.*.*(>=2.0.0 <3.0.0) 1.0.0-beta should be above range < 1 3.1.2 should be above range 2 3.0.0 should be above range 1.2.x || 2.x 0.7.2 should not be above range >=0.7.x(>=0.7.0) 2.2.3 should be above range ~1 1.0.0-beta should not be below range ~1.0.0-alpha 1.0.1 should be below range 2.*.* 2.1.2 should not be above range 2(>=2.0.0 <3.0.0) 1.2.1 should be below range ~1.2.2 2.5.5 should be above range ~2.4 .parse inclusive range expressions "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.4-alpha0 "1.2.3-alpha - 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-alpha - 1.3.4").to_s excludes 1.3.5-0 "1.2.3-alpha - 1.3.4-alpha" includes 1.2.3-alpha "1.2.3 - 1.3.4-alpha" excludes 1.3.4-alpha0 "1.2.3-alpha - 1.3.4" includes 1.2.3-alpha parse("1.2.3 - 1.3.4").to_s includes 1.3.4 "1.2.3-alpha - 1.3.4" excludes 1.2.3-alph "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 parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.2 "1.2.3 - 1.3.4-alpha" excludes 1.2.3-0 parse("1.2.3 - 1.3.4").to_s excludes 1.2.3-0 "1.2.3-alpha - 1.3.4-alpha" includes 1.3.4-alpha "1.2.3-alpha - 1.3.4-alpha" excludes 1.2.3-alph "1.2.3-alpha - 1.3.4" stringifies as >=1.2.3-alpha <=1.3.4 parse("1.2.3 - 1.3.4").to_s excludes 1.2.2 parse("1.2.3 - 1.3.4").to_s includes 1.2.3 "1.2.3 - 1.3.4" excludes 1.3.5-0 parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.5 parse("1.2.3-alpha - 1.3.4-alpha").to_s includes 1.3.4-alpha parse("1.2.3 - 1.3.4").to_s excludes 1.3.5-0 parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.5 parse("1.2.3 - 1.3.4-alpha").to_s includes 1.3.4-alpha parse("1.2.3-alpha - 1.3.4").to_s includes 1.3.4 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 "1.2.3 - 1.3.4-alpha" includes 1.2.3 "1.2.3 - 1.3.4" includes 1.3.4 "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.4-alpha0 "1.2.3 - 1.3.4-alpha" excludes 1.3.5 "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.5 parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 "1.2.3 - 1.3.4" excludes 1.2.3-0 "1.2.3 - 1.3.4-alpha" excludes 1.2.2 "1.2.3 - 1.3.4-alpha" stringifies as >=1.2.3 <=1.3.4-alpha parse("1.2.3 - 1.3.4-alpha").to_s includes 1.2.3 parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.3-0 "1.2.3 - 1.3.4" excludes 1.2.2 "1.2.3 - 1.3.4-alpha" includes 1.3.4-alpha "1.2.3-alpha - 1.3.4" excludes 1.3.5-0 loose version expressions "1.2.3-alpha" includes 1.2.3-alpha parse("1.2.x").to_s excludes 1.1.999 "1.2.x" excludes 1.1.999 "1.2.3" excludes 1.2.2 "1.2.X" excludes 1.3.0-0 parse("1.X").to_s excludes 2.0.0-0 "1.2.x" excludes 1.3.0-0 "1.2.3" excludes 1.2.3-alpha parse("1.2.3").to_s excludes 1.2.3-alpha "1.2.3-alpha" stringifies as 1.2.3-alpha parse("1.2.X").to_s excludes 1.1.999 parse("1.2").to_s includes 1.2.0 parse("1.x").to_s excludes 2.0.0-0 "1.2.3-alpha" excludes 1.2.3-beta "1.2.3" includes 1.2.3 "1.X" includes 1.999.0 parse("1").to_s excludes 2.0.0-0 parse("1.x").to_s includes 1.0.0 parse("1").to_s excludes 0.999.999 parse("1.2.3").to_s excludes 1.2.2 parse("1.x").to_s excludes 1.0.0-alpha parse("1.2").to_s excludes 1.3.0-0 parse("1").to_s includes 1.999.0 "1.x" excludes 0.999.999 parse("1.x").to_s excludes 0.999.999 "1.2" includes 1.2.0 "1.2.X" excludes 1.2.0-alpha "1.2.3" stringifies as 1.2.3 parse("1.2.3-alpha").to_s excludes 1.2.3-999 "1.x" excludes 1.0.0-alpha "1.X" stringifies as >=1.0.0 <2.0.0 "1.x" excludes 2.0.0-0 "1.X" excludes 0.999.999 parse("1.2.3-alpha").to_s excludes 1.2.3-beta "1.2.3" excludes 1.2.4-alpha "1.2.x" includes 1.2.0 "1.2.x" includes 1.2.999 parse("1.x").to_s includes 1.999.0 "1" excludes 2.0.0-0 parse("1.2.X").to_s includes 1.2.0 parse("1.2.x").to_s includes 1.2.999 "1" includes 1.0.0 parse("1.X").to_s excludes 0.999.999 "1.2" excludes 1.3.0-0 "1.x" includes 1.0.0 "1.2.X" excludes 1.1.999 "1.2" excludes 1.2.0-alpha parse("1.2.x").to_s excludes 1.3.0-0 "1.x" stringifies as >=1.0.0 <2.0.0 "1.2.X" includes 1.2.0 "1.2.x" stringifies as >=1.2.0 <1.3.0 parse("1.2.X").to_s includes 1.2.999 parse("1").to_s excludes 1.0.0-alpha "1" excludes 1.0.0-alpha parse("1.2.3-alpha").to_s includes 1.2.3-alpha parse("1.2").to_s excludes 1.2.0-alpha "1" excludes 0.999.999 "1.2.3-alpha" excludes 1.2.3-999 "1.x" includes 1.999.0 "1.2" includes 1.2.999 parse("1.2").to_s excludes 1.1.999 parse("1.2").to_s includes 1.2.999 "1.2" excludes 1.1.999 parse("1.X").to_s excludes 1.0.0-alpha "1" includes 1.999.0 parse("1.2.x").to_s excludes 1.2.0-alpha "1.X" excludes 2.0.0-0 "1.2.x" excludes 1.2.0-alpha parse("1.2.3").to_s excludes 1.2.4-alpha "1.2" stringifies as >=1.2.0 <1.3.0 "1.2.X" includes 1.2.999 "1" stringifies as >=1.0.0 <2.0.0 "1.X" includes 1.0.0 "1.2.X" stringifies as >=1.2.0 <1.3.0 parse("1.2.X").to_s excludes 1.3.0-0 parse("1").to_s includes 1.0.0 parse("1.X").to_s includes 1.0.0 parse("1.X").to_s includes 1.999.0 parse("1.2.X").to_s excludes 1.2.0-alpha parse("1.2.3").to_s includes 1.2.3 parse("1.2.x").to_s includes 1.2.0 "1.X" excludes 1.0.0-alpha unioned expressions parse("1.2 <1.2.5").to_s excludes 1.9.0 "1.2 <1.2.5" includes 1.2.4 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 includes 4.999.999 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 5.0.0-0 "1.2 <1.2.5" excludes 1.2.0-0 parse("1 <=1.2.5").to_s excludes 0.999.999 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 3.0.0-0 parse("1.2 <1.2.5").to_s includes 1.2.4 parse("1 <=1.2.5").to_s 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 includes 1.0.0 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 2.999.999 "1 <=1.2.5" excludes 0.999.999 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 5.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" excludes 3.0.0-0 "1 <=1.2.5" includes 1.2.5 "<1.0.0 >2.0.0" stringifies as <0.0.0 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 2.999.999 parse("1.2 <1.2.5").to_s excludes 1.2.5-0 "1 <=1.2.5" stringifies as >=1.0.0 <=1.2.5 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 3.0.0 parse("1.2 <1.2.5").to_s excludes 1.2.0-0 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 3.0.0 "1.2 <1.2.5" stringifies as >=1.2.0 <1.2.5 "1.2 <1.2.5" excludes 1.9.0 parse("1.2 <1.2.5").to_s excludes 1.1.999 parse("1 <=1.2.5").to_s includes 1.2.5 "1.2 <1.2.5" includes 1.2.0 "1.2 <1.2.5" excludes 1.2.5-0 "<1.0.0 >2.0.0" excludes 0.0.0 "1 <=1.2.5" excludes 1.0.0-0 "1 <=1.2.5" excludes 1.2.6-0 "<1.0.0 >2.0.0" excludes 0.0.0-0 "1 <=1.2.5" includes 1.0.0 parse("1.2 <1.2.5").to_s includes 1.2.0 parse("1 <=1.2.5").to_s excludes 1.9.0 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" stringifies as >=3.0.0 <5.0.0 parse("1 <=1.2.5").to_s excludes 1.2.6-0 "1 <=1.2.5" excludes 1.9.0 "1.2 <1.2.5" excludes 1.1.999 "reasonably close" expressions "~1" includes 1.0.0 "~ 1.2.3" includes 1.2.3 "~1.2" excludes 1.1.999 parse("~1.2.3-alpha").to_s includes 1.2.3-alpha "~1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 parse("~1").to_s excludes 2.0.0-0 parse("~1").to_s includes 1.999.999 parse("~ 1").to_s excludes 2.0.0-0 "~ 1.2.3" excludes 1.2.2 "~ 1" includes 1.999.999 parse("~ 1.2.3").to_s excludes 1.2.3-0 "~ 1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 parse("~ 1").to_s includes 1.0.0 parse("~1.2.3").to_s includes 1.2.5 "~1.2" excludes 1.2.0-0 parse("~ 1.2.3-alpha").to_s includes 1.2.3-alpha "~1.2.3" excludes 1.2.2 parse("~ 1.2").to_s excludes 1.2.0-0 parse("~ 1").to_s includes 1.999.999 parse("~ 1.2.3-alpha").to_s excludes 1.2.3-alph "~1.2.3" excludes 1.2.3-0 "~1.2.3-alpha" includes 1.2.3-alpha "~1" includes 1.999.999 parse("~ 1.2.3-alpha").to_s includes 1.2.3 "~1" excludes 2.0.0-0 parse("~ 1.2.3").to_s excludes 1.3.0-0 "~1.2.3" excludes 1.3.0-0 "~ 1.2" excludes 1.2.0-0 "~1" stringifies as >=1.0.0 <2.0.0 "~ 1.2.3" stringifies as >=1.2.3 <1.3.0 parse("~1.2.3").to_s excludes 1.2.3-0 "~1" excludes 1.0.0-0 "~ 1.2.3" includes 1.2.5 "~ 1" stringifies as >=1.0.0 <2.0.0 parse("~1").to_s excludes 1.0.0-0 parse("~ 1.2.3").to_s includes 1.2.5 parse("~ 1.2.3").to_s excludes 1.2.2 "~ 1.2" stringifies as >=1.2.0 <1.3.0 parse("~ 1.2").to_s includes 1.2.999 "~1.2" includes 1.2.999 "~ 1.2" includes 1.2.0 "~1.2.3-alpha" excludes 1.2.3-alph parse("~1.2.3").to_s excludes 1.2.2 parse("~1").to_s excludes 0.999.999 parse("~1.2").to_s excludes 1.2.0-0 parse("~ 1").to_s excludes 0.999.999 "~ 1.2" excludes 1.3.0-0 "~ 1" excludes 1.0.0-0 parse("~ 1").to_s excludes 1.0.0-0 "~ 1.2" excludes 1.1.999 "~1.2.3" includes 1.2.5 parse("~1.2").to_s includes 1.2.0 parse("~1.2").to_s excludes 1.3.0-0 parse("~1.2.3-alpha").to_s excludes 1.2.4-0 parse("~1.2").to_s includes 1.2.999 parse("~1.2").to_s excludes 1.1.999 "~1.2" excludes 1.3.0-0 parse("~ 1.2").to_s excludes 1.3.0-0 "~1.2.3" includes 1.2.3 "~1" excludes 0.999.999 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").to_s includes 1.2.3 "~ 1.2.3" excludes 1.2.3-0 parse("~ 1.2.3").to_s includes 1.2.3 "~1.2.3" stringifies as >=1.2.3 <1.3.0 parse("~1.2.3-alpha").to_s excludes 1.2.3-alph "~ 1.2.3-alpha" excludes 1.2.3-alph "~1.2.3-alpha" excludes 1.2.4-0 "~1.2" includes 1.2.0 "~1.2.3-alpha" includes 1.2.3 "~ 1.2.3-alpha" includes 1.2.3 "~ 1.2.3-alpha" excludes 1.2.4-0 "~ 1.2" includes 1.2.999 "~ 1" excludes 0.999.999 parse("~1.2.3").to_s excludes 1.3.0-0 "~ 1" includes 1.0.0 "~ 1.2.3-alpha" includes 1.2.3-alpha parse("~1").to_s includes 1.0.0 parse("~ 1.2").to_s includes 1.2.0 "~ 1.2.3" excludes 1.3.0-0 "~1.2" stringifies as >=1.2.0 <1.3.0 parse("~1.2.3-alpha").to_s includes 1.2.3 "~ 1" excludes 2.0.0-0 open-ended expressions ">=1.2.3" excludes 1.2.3-0 parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha0 parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha0 "<= 1.2.3" includes 0.0.0 parse("> 1.2.3").to_s excludes 1.2.3 "<=1.2.3-alpha" includes 1.2.3-alpha "<1.2.3" includes 1.2.2 "<1.2.3" stringifies as <1.2.3 parse("<= 1.2.3-alpha").to_s excludes 0.0.0-0 ">= 1.2.3" stringifies as >=1.2.3 parse("< 1.2.3-alpha").to_s excludes 1.2.3-alpha parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha.0 parse("<=1.2.3-alpha").to_s includes 0.0.0 parse(">=1.2.3-alpha").to_s excludes 1.2.4-alpha parse("< 1.2.3").to_s excludes 1.2.3-0 "<= 1.2.3-alpha" excludes 1.2.3-alphb ">= 1.2.3" excludes 1.2.3-0 "<= 1.2.3" excludes 1.2.3-0 "<=1.2.3-alpha" excludes 1.2.3-alphb parse("< 1.2.3").to_s excludes 0.0.0-0 parse(">1.2.3").to_s excludes 1.2.4-0 ">=1.2.3-alpha" includes 999.0.0 ">=1.2.3-alpha" stringifies as >=1.2.3-alpha "> 1.2.3-alpha" excludes 1.2.3-alpha ">= 1.2.3-alpha" excludes 1.2.3-alph parse(">= 1.2.3-alpha").to_s excludes 1.2.4-alpha parse("< 1.2.3").to_s excludes 2.0.0 parse(">=1.2.3").to_s excludes 1.2.2 parse(">=1.2.3-alpha").to_s excludes 1.2.3-alph 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" excludes 1.2.4-0 parse(">1.2.3-alpha").to_s excludes 1.2.3-alpha parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha.0 "<= 1.2.3" includes 1.2.3 parse("<=1.2.3").to_s excludes 0.0.0-0 parse(">= 1.2.3-alpha").to_s excludes 1.2.3-alph ">1.2.3-alpha" includes 1.2.3-alpha0 "< 1.2.3" excludes 0.0.0-0 "<=1.2.3-alpha" excludes 1.2.3-alpha0 "> 1.2.3" includes 999.0.0 parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha parse("> 1.2.3").to_s excludes 1.2.4-0 ">=1.2.3" stringifies as >=1.2.3 "< 1.2.3-alpha" excludes 2.0.0 "<1.2.3-alpha" stringifies as <1.2.3-alpha "<= 1.2.3-alpha" stringifies as <=1.2.3-alpha "< 1.2.3" includes 1.2.2 parse("<1.2.3").to_s includes 0.0.0 parse("<= 1.2.3-alpha").to_s includes 1.2.3-alpha parse("> 1.2.3-alpha").to_s excludes 1.2.3-alpha ">= 1.2.3-alpha" excludes 1.2.4-alpha parse("< 1.2.3-alpha").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-alpha" includes 1.2.3-alpha.0 ">1.2.3" stringifies as >1.2.3 "<=1.2.3-alpha" includes 0.0.0 parse("<1.2.3-alpha").to_s includes 0.0.0 "<=1.2.3" includes 0.0.0 "<1.2.3" excludes 2.0.0 parse("<1.2.3").to_s excludes 1.2.3-0 "< 1.2.3" excludes 1.2.3-0 parse(">1.2.3").to_s excludes 1.2.3 parse("<1.2.3-alpha").to_s excludes 1.2.3-alpha ">= 1.2.3-alpha" includes 1.2.3-alpha "<= 1.2.3-alpha" excludes 1.2.3-alpha0 "< 1.2.3-alpha" excludes 1.2.3-alpha "<= 1.2.3-alpha" excludes 1.2.3-alpha.0 "<=1.2.3" stringifies as <=1.2.3 ">= 1.2.3" includes 999.0.0 ">= 1.2.3-alpha" includes 1.2.3-alpha0 ">= 1.2.3" excludes 1.2.2 "<=1.2.3" excludes 0.0.0-0 "> 1.2.3-alpha" includes 1.2.3-alpha0 ">1.2.3" excludes 1.2.4-0 "> 1.2.3-alpha" includes 1.2.3-alpha.0 "<1.2.3-alpha" includes 0.0.0 parse(">1.2.3-alpha").to_s includes 1.2.3-alpha.0 parse("< 1.2.3").to_s includes 1.2.2 "<=1.2.3-alpha" stringifies as <=1.2.3-alpha ">=1.2.3-alpha" includes 1.2.3-alpha parse(">=1.2.3-alpha").to_s includes 999.0.0 parse("<=1.2.3").to_s includes 0.0.0 parse("<1.2.3").to_s excludes 2.0.0 parse("<= 1.2.3").to_s includes 0.0.0 parse("<=1.2.3").to_s includes 1.2.3 parse("> 1.2.3").to_s includes 999.0.0 ">=1.2.3-alpha" excludes 1.2.4-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" includes 0.0.0 parse("<1.2.3-alpha").to_s excludes 2.0.0 parse(">= 1.2.3").to_s includes 999.0.0 "<= 1.2.3-alpha" excludes 0.0.0-0 "<1.2.3-alpha" excludes 1.2.3-alpha parse(">= 1.2.3").to_s excludes 1.2.2 ">1.2.3-alpha" includes 999.0.0 "<=1.2.3" excludes 1.2.3-0 ">1.2.3" includes 999.0.0 "<1.2.3" excludes 1.2.3-0 parse("<= 1.2.3").to_s includes 1.2.3 ">1.2.3-alpha" stringifies as >1.2.3-alpha parse(">= 1.2.3").to_s excludes 1.2.3-0 "<=1.2.3" includes 1.2.3 parse("<= 1.2.3-alpha").to_s includes 0.0.0 "> 1.2.3-alpha" includes 999.0.0 parse(">= 1.2.3-alpha").to_s includes 999.0.0 ">= 1.2.3-alpha" includes 999.0.0 ">1.2.3" excludes 1.2.3 "< 1.2.3" stringifies as <1.2.3 ">= 1.2.3-alpha" stringifies as >=1.2.3-alpha "< 1.2.3-alpha" excludes 0.0.0-0 parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alphb 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-alpha").to_s excludes 0.0.0-0 "<1.2.3" excludes 0.0.0-0 parse("< 1.2.3-alpha").to_s excludes 0.0.0-0 ">1.2.3-alpha" excludes 1.2.3-alpha "<=1.2.3-alpha" excludes 0.0.0-0 parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha0 ">=1.2.3-alpha" excludes 1.2.3-alph ">=1.2.3" excludes 1.2.2 parse("<=1.2.3-alpha").to_s includes 1.2.3-alpha "<= 1.2.3-alpha" includes 1.2.3-alpha parse(">1.2.3-alpha").to_s includes 1.2.3-alpha0 parse("< 1.2.3-alpha").to_s includes 1.2.3-alph parse("<= 1.2.3").to_s excludes 0.0.0-0 "> 1.2.3" stringifies as >1.2.3 "< 1.2.3-alpha" includes 1.2.3-alph "< 1.2.3" excludes 2.0.0 "> 1.2.3-alpha" stringifies as >1.2.3-alpha ">=1.2.3" includes 999.0.0 "<= 1.2.3" excludes 0.0.0-0 "< 1.2.3-alpha" includes 0.0.0 "<1.2.3-alpha" excludes 2.0.0 parse(">1.2.3-alpha").to_s includes 999.0.0 parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha.0 parse("<=1.2.3-alpha").to_s excludes 1.2.3-alphb parse("<1.2.3").to_s includes 1.2.2 parse("< 1.2.3").to_s includes 0.0.0 "<= 1.2.3" stringifies as <=1.2.3 ">=1.2.3-alpha" includes 1.2.3-alpha0 "<= 1.2.3-alpha" includes 0.0.0 parse("<=1.2.3").to_s excludes 1.2.3-0 parse(">=1.2.3").to_s excludes 1.2.3-0 parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha parse(">=1.2.3").to_s includes 999.0.0 "<1.2.3-alpha" includes 1.2.3-alph parse("<1.2.3-alpha").to_s includes 1.2.3-alph parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha0 "<=1.2.3-alpha" excludes 1.2.3-alpha.0 "< 1.2.3-alpha" stringifies as <1.2.3-alpha parse("<1.2.3").to_s excludes 0.0.0-0 "<1.2.3" includes 0.0.0 ored expressions non-overlapping returns nil on exclude_end? returns nil on begin returns nil on end "1.2.3 || 1.2.5" excludes 1.2.3-0 "1.2.3 || 1.2.5" includes 1.2.5 parse("1.2.3 || 1.2.5").to_s excludes 1.2.3-0 "1.2.3 || 1.2.5" excludes 1.2.4 "1.2.3 || 1.2.5" excludes 1.2.5-0 returns nil on exclude_begin? parse("1.2.3 || 1.2.5").to_s 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 excludes 1.2.5-0 "1.2.3 || 1.2.5" includes 1.2.3 parse("1.2.3 || 1.2.5").to_s includes 1.2.5 parse("1.2.3 || 1.2.5").to_s includes 1.2.3 overlapping ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 parse(">=1.2.3 || 1.2.5").to_s includes 1.2.4 ">=1.2.3 || 1.2.5" excludes 1.2.4-0 parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.3-0 ">=1.2.3 || 1.2.5" includes 1.2.3 ">=1.2.3 || 1.2.5" stringifies as >=1.2.3 parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 ">=1.2.3 || 1.2.5" excludes 1.2.3-0 parse(">=1.2.3 || 1.2.5").to_s includes 1.2.3 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 ">=1.2.3 || 1.2.5" includes 1.2.4 parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.6 parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.6-0 parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.4-0 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 adjacent "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.3 ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.5-0 parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.5-0 ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.6 ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 parse(">=1.2.3 <1.2.5 || >=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 returns nil on end returns expected begin 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" includes 1.2.5 parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.3-0 returns nil on exclude_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.3 returns nil on exclude_end? ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 "1.2.3 || 1.2.4 || 1.2.5" stringifies as >=1.2.3 <=1.2.5 "1.2.3 || 1.2.4 || 1.2.5" excludes 1.2.3-0 invalid expressions raise an appropriate exception SemanticPuppet::Dependency::UnsatisfiableGraph #sentence_from_list with a list of one item is expected to eql "foo" with a list of more than three items is expected to eql "foo, bar, baz, and quux" with a list of three items is expected to eql "foo, bar, and baz" with a list of two items is expected to eql "foo and bar" #message is expected to match /foo, bar, and baz/ Finished in 0.35129 seconds (files took 0.34116 seconds to load) 987 examples, 0 failures Randomized with seed 29066 /usr/bin/ruby3.0 /usr/bin/gem2deb-test-runner ┌──────────────────────────────────────────────────────────────────────────────┐ │ Checking Rubygems dependency resolution on ruby3.0 │ └──────────────────────────────────────────────────────────────────────────────┘ GEM_PATH=/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all:/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.0.0:/var/lib/gems/3.0.0:/usr/local/lib/ruby/gems/3.0.0:/usr/lib/ruby/gems/3.0.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.0.0:/usr/share/rubygems-integration/3.0.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.0.0 ruby3.0 -e gem\ \"semantic_puppet\" ┌──────────────────────────────────────────────────────────────────────────────┐ │ Run tests for ruby3.0 from debian/ruby-tests.rake │ └──────────────────────────────────────────────────────────────────────────────┘ RUBYLIB=. GEM_PATH=/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/ruby-semantic-puppet/usr/share/rubygems-integration/all:/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4/debian/.debhelper/generated/_source/home/.local/share/gem/ruby/3.0.0:/var/lib/gems/3.0.0:/usr/local/lib/ruby/gems/3.0.0:/usr/lib/ruby/gems/3.0.0:/usr/lib/x86_64-linux-gnu/ruby/gems/3.0.0:/usr/share/rubygems-integration/3.0.0:/usr/share/rubygems-integration/all:/usr/lib/x86_64-linux-gnu/rubygems-integration/3.0.0 ruby3.0 -S rake -f debian/ruby-tests.rake /usr/bin/ruby3.0 -I/usr/share/rubygems-integration/all/gems/rspec-support-3.10.3/lib:/usr/share/rubygems-integration/all/gems/rspec-core-3.10.1/lib /usr/share/rubygems-integration/all/gems/rspec-core-3.10.1/exe/rspec --pattern ./spec/\*\*/\*_spec.rb --format documentation Run options: include {:focus=>true} All examples were filtered out; ignoring {:focus=>true} Randomized with seed 54281 SemanticPuppet::Version #== should yield false when the minor differs should yield false when the prerelease differs should yield true when comparing two equal instances should yield false when compared to something that is not a Version should yield false when the patch differs should yield false when the major differs #<=> Spec v1.0.0 Section 4 sorted order Spec v2.0.0 Section 11 comparisons without prereleases sorted order comparisons against prereleases prereleases have lower precedence comparisions between prereleases non-numeric identifiers sort ASCIIbetically sorted order build metadata does not figure into precendence non-numeric identifiers have a higher precendence larger identifier sets have precendence identifiers are parsed left-to-right numeric identifiers sort numerically identical prereleases are equal build metadata does figure into equality .valid? Spec v2.0.0 Section 9 permits non-numeric prerelease identifiers rejects numeric prerelease identifiers with leading zeroes permits non-numeric prerelease identifiers with leading zeroes permits numeric prerelease identifiers of zero rejects prerelease identifiers with non-alphanumerics rejects empty prerelease versions rejects empty prerelease version identifiers Section 10 rejects empty build identifiers rejects build identifiers with non-alphanumerics permits non-numeric build identifiers with leading zeroes rejects empty build metadata permits numeric build identifiers with leading zeroes permits numeric build identifiers of zero Section 2 rejects versions that contain non-integers rejects versions that contain too many parts rejects versions that contain negative integers permits zeroes in version number parts rejects versions that contain too few parts rejects version numbers containing leading zeroes Spec v1.0.0 Section 2 rejects versions that contain non-integers rejects versions that contain too few parts rejects versions that contain too many parts permits zeroes in version number parts Section 4 rejects numeric prerelease identifiers with leading zeroes rejects empty prerelease versions permits numeric prerelease identifiers of zero permits non-numeric prerelease identifiers with leading zeroes rejects prerelease identifiers with non-alphanumerics #next with :patch removes any build information returns the next patch version removes any prerelease information does not modify the original version with :major does not modify the original version removes any prerelease information removes any build information resets the minor and patch versions to 0 returns the next major version with :minor returns the next minor version does not modify the original version removes any prerelease information removes any build information resets the patch version to 0 .parse Spec v1.0.0 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.10.0 1.11.0 1.9.0 Section 4 permits numeric prerelease identifiers of zero rejects prerelease identifiers with non-alphanumerics rejects numeric prerelease identifiers with leading zeroes permits non-numeric prerelease identifiers with leading zeroes rejects empty prerelease versions examples 1.0.0-rc1 1.0.0-alpha1 1.0.0-beta2 1.0.0-beta1 Spec v2.0.0 Section 9 permits numeric prerelease identifiers of zero permits non-numeric prerelease identifiers with leading zeroes rejects empty prerelease versions rejects empty prerelease version identifiers rejects prerelease identifiers with non-alphanumerics rejects numeric prerelease identifiers with leading zeroes examples 1.0.0-alpha 1.0.0-x.7.z.92 1.0.0-alpha.1 1.0.0-0.3.7 Section 2 rejects versions that contain negative integers rejects version numbers containing leading zeroes rejects versions that contain too many parts permits zeroes in version number parts rejects versions that contain non-integers rejects versions that contain too few parts examples 1.10.0 1.11.0 1.9.0 Section 10 rejects build identifiers with non-alphanumerics permits numeric build identifiers of zero rejects empty build identifiers permits numeric build identifiers with leading zeroes permits non-numeric build identifiers with leading zeroes rejects empty build metadata examples 1.0.0-alpha+001 1.0.0-beta+exp.sha.5114f85 1.0.0+20130313144700 SemanticPuppet::VersionRange #intersection cannot intersect with non-VersionRanges is commutative between >=10.0.0 <5.0.0 & >=7.0.0 <1.0.0 between 10.0.0 - 5.0.0 & 6.0.0 - 1.0.0 between 10.0.0 - 5.0.0 & >=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 & >=5.0.0 <1.0.0 between >=10.0.0 <5.0.0 & 4.0.0 - 1.0.0 between 10.0.0 - 5.0.0 & 15.0.0 - 10.0.0 between >=10.0.0 <5.0.0 & 15.0.0 - 11.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 & 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 & >=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 & 15.0.0 - 11.0.0 between 10.0.0 - 5.0.0 & 15.0.0 - 9.0.0 between >=10.0.0 <5.0.0 & 9.0.0 - 6.0.0 between 10.0.0 - 5.0.0 & >=10.0.0 <5.0.0 between 10.0.0 - 5.0.0 & 4.0.0 - 1.0.0 between >=10.0.0 <5.0.0 & 5.0.0 - 1.0.0 between 10.0.0 - 5.0.0 & 9.0.0 - 6.0.0 between 10.0.0 - 5.0.0 & 10.0.0 - 5.0.0 between >=10.0.0 <5.0.0 & 10.0.0 - 5.0.0 between 10.0.0 - 5.0.0 & 5.0.0 - 1.0.0 between 10.0.0 - 5.0.0 & >=7.0.0 <1.0.0 6.0.0 - 1.0.0 10.0.0 - 5.0.0 >=10.0.0 <5.0.0 15.0.0 - 9.0.0 4.0.0 - 1.0.0 15.0.0 - 10.0.0 >=5.0.0 <1.0.0 9.0.0 - 6.0.0 5.0.0 - 1.0.0 11.0.0 - 4.0.0 15.0.0 - 11.0.0 between >=10.0.0 <5.0.0 & >=10.0.0 <5.0.0 9.0.0 - 6.0.0 5.0.0 - 1.0.0 >=7.0.0 <1.0.0 6.0.0 - 1.0.0 4.0.0 - 1.0.0 15.0.0 - 11.0.0 15.0.0 - 10.0.0 11.0.0 - 4.0.0 15.0.0 - 9.0.0 >=5.0.0 <1.0.0 10.0.0 - 5.0.0 The version 1.1.0 should not be below range ~ 1.0 0.5.4 should not be above range ~v0.5.4-pre(>=0.5.4-pre <0.6.0) 1.1.3 should be below range 2.*.* 2.0.0 should not be below range ^1.0.0 || ~2.0.1 1.2.3 should not be above range *(*) 1.1.0 should not be above range >= 1.0.0(>=1.0.0) 0.0.0-beta should be below range 1 2.2.3 should be above range 1.0.0 - 2.0.0 1.1.2 should be above range ~1.0 1.0.0 should not be below range >= 1 1.0.1 should not be below range >= 1.0.0 1.3.3 should be above range 1.2.x 2.1.1 should be above range <=2.0.0 1.0.1 should not be above range >= 1.0.0(>=1.0.0) 2.2.9 should be above range <2.0.0 1.2.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 0.2.9 should not be above range < 2.0.0(<2.0.0) 2.2.1 should be below range 2.3 1.2.4 should not be above range 0.1.20 || >1.2.4(0.1.20 || >1.2.4) 0.2.9 should not be above range <= 2.0.0(<=2.0.0) 4.0.0 should not be below range ^3.0.0 1.0.0-beta should not be below range ~1.0.0-alpha 1.2.3 should not be below range 0.1.20 || 1.2.4 1.1.1 should not be below range < 1.2 3.2.2 should not be below range ~>3.2.1 1.0.0-beta should be below range >1 1.3.3 should be above range 1.2.* 1.2.3-foo should not be above range *(*) 2.3.1 should not be below range 2.3 0.2.9 should not be below range <=2.0.0 1.0.0 should not be above range >=1(>=1.0.0) 1.0.0-beta should not be above range ^0.1.0 || ~3.0.1 || 5.0.0(>=0.1.0 <0.2.0 || >=3.0.1 <3.1.0 || 5.0.0) 0.6.0 should be above range ~v0.5.4-pre 0.2.4 should not be below range >=* 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.0 should be above range ~ 1.0 1.0.1 should be below range 2.*.* 3.3.2 should be above range ~>3.2.1 2.0.0 should not be above range ^1.0.0 || ~2.0.1(>=1.0.0 <2.0.0 || >=2.0.1 <2.1.0) 1.2.3 should not be below range x 2.9999.9999 should be above range <=2.0.0 0.1.20 should not be below range 0.1.20 || 1.2.4 3.0.0 should be above range <=2.0.0 2.1.3 should not be below range 1.2.x || 2.x 2.2.3 should be above range ~1 0.1.20 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) 1.2.3 should not be above range 1.2.x(>=1.2.0 <1.3.0) 0.0.1 should be below range 1.0.0 1.0.1 should not be above range >=1.0.0(>=1.0.0) 1.0.0 should be below range 2 1.1.0 should not be above range > 1.0.0(>1.0.0) 2.0.0 should be below range >2.0.0 0.7.0-asdf should be below range =0.7.x 0.7.2 should be above range <0.7.x 1.0.0-beta should be below range 2 0.1.2 should be below range ~1.0 0.7.2 should not be below range =0.7.x 1.2.0 should be below range >1.2 0.0.0 should be below range 1.0.0 0.6.1-1 should not be below range ~0.6.1-1 1.3.0 should be above range ~1.2.2 1.0.0 should not be below range 1.0.0 1.1.3 should be below range 1.2.x 1.0.0-beta should not be above range 1(>=1.0.0 <2.0.0) 0.7.0 should be above range <0.7.x 1.1.1 should be below range >=2.0.0 0.7.0-asdf should be below range >=0.7.x 0.7.2 should not be above range =0.7.x(>=0.7.0 <0.8.0) 1.0.2 should not be below range ~1.0 1.0.0 should be below range >=2.0.0 1.0.0-0 should be below range ^1 0.6.2 should not be below range <=0.7.x 0.7.0-asdf 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) 0.7.2 should not be below range >=0.7.x 1.1.9999 should be below range 1.2.* || 2.* 2.5.0 should be above range ~2.4 2.0.0-beta should be above range 1 1.0.0-beta should be below range > 1 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) 3.2.0 should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 2.1.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 2.3.0 should be below range ~2.4 0.6.2 should not be above range <=0.7.x(<0.8.0) 1.1.1 should not be above range < 1.2(<1.2.0) 0.2.4 should not be below range >=0.2.3 <=0.2.4 0.8.2 should be above range =0.7.x 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.3 should be above range ~1 5.0.1 should be above range 2.*.* 3.2.9 should be above range <=2.0.0 0.6.1-0 should be below range ~0.6.1-1 0.6.2 should be below range =0.7.x 2.2.9 should be above range <=2.0.0 1.0.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) 0.6.1-pre should be above range ~v0.5.4-pre 1.2.1 should be above range < 1.2 2.3.0 should be below range ~2.4 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 1.9999.9999 should not be below range <=2.0.0 1.3.3 should be above range 1.2.* 2.1.3 should not be above range 2.*.*(>=2.0.0 <3.0.0) 0.2.3 should not be below range >=0.2.3 || <0.0.1 0.8.0-asdf should be above range =0.7.x 3.1.2 should be above range 2 3.0.0 should be above range 1.2.x || 2.x 1.9999.9999 should not be above range < 2.0.0(<2.0.0) 1.2.3 should not be below range 1.2.x || 2.x 1.3.4 should not be above range ||(*) 0.2.3 should be below range 1.0.0 - 2.0.0 0.9.9 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 1.0.2 should not be below range ~ 1.0 2.1.3 should not be below range 2.*.* 0.7.0-asdf should not be above range >=0.7.x(>=0.7.0) 2.5.0 should be above range ~2.4 1.0.1-beta1 should be above range 1.0.0 1.9999.9999 should not be below range <= 2.0.0 1.2.1 should be below range ~1.2.2 1.2.3 should not be above range x(*) 1.0.0-beta.1 should be below range 1.0.0-beta.2 1.2.3 should not be below range ~> 1 0.2.4 should not be above range >=*(>=0.0.0) 1.0.1 should not be above range > 1.0.0(>1.0.0) 0.2.4 should not be below range >=0.2.3 || <0.0.1 1.2.3 should not be below range 1.2.x 0.2.3 should be below range ~>1 2.4.2 should be above range 2.3 3.1.3 should be above range 2.x.x 1.2.3 should not be below range 1.2.* || 2.* 1.9999.9999 should not be above range <=2.0.0(<=2.0.0) 1.9999.9999 should be below range 2 2.1.2 should not be above range 2(>=2.0.0 <3.0.0) 1.2.0 should be above range <1.2 1.1.0 should not be above range >1.0.0(>1.0.0) 1.9999.9999 should not be below range <2.0.0 0.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.0.0-beta should not be below range ^1.0.0-alpha 1.2.3 should not be above range 1.2.x || 2.x(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 2.4.0 should not be below range ~2.4 1.1.1 should not be above range <1.2(<1.2.0) 1.0.1 should not be above range >1.0.0(>1.0.0) 1.2.3 should not be above range ~>1(>=1.0.0 <2.0.0) 1.2.3 should not be below range 1.2.* 1.1.0 should be above range ~1.0 0.2.9 should not be below range < 2.0.0 2.1.3 should not be above range 2.x.x(>=2.0.0 <3.0.0) 2.0.0 should not be above range <=2.0.0(<=2.0.0) 3.0.0 should be above range 2.x.x 1.1.0 should not be above range >=1.0.0(>=1.0.0) 1.1.3 should be below range 2.x.x 1.9999.9999 should not be below range < 2.0.0 2.4.0 should not be above range ~2.4(>=2.4.0 <2.5.0) 3.1.3 should be above range 1.2.* || 2.* 1.9999.9999 should be below range >=2.0.0 0.5.4-alpha should be below range ~v0.5.4-pre 1.1.0 should be below range 1.2.x 3.1.3 should be above range 1.2.x || 2.x 2.0.0-beta should be above range 1 0.1.97 should not be below range >=0.1.97 2.0.0 should be above range <2.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.1 should be below range > 1.2 3.5.0 should not be below range ^0.1.0 || ~3.0.1 || >4 <=5.0.0 2.4.5 should not be above range ~2.4(>=2.4.0 <2.5.0) 0.2.3 should be below range ~> 1 1.3.0 should be above range 1.2.x 1.2.3 should not be above range ~1(>=1.0.0 <2.0.0) 1.0.0-beta should be above range < 1 2.1.2 should not be below range 2 1.2.3 should not be above range 1.2.* || 2.*(>=1.2.0 <1.3.0 || >=2.0.0 <3.0.0) 1.0.0 should not be below range >=1.0.0 1.0.1 should not be below range >=1.0.0 1.0.1 should not be below range >1.0.0 1.0.0-beta should be below range 1 1.0.0 should not be above range >= 1.0.0(>=1.0.0) 4.0.0 should be above range 1.2.* || 2.* 2.2.2 should be below range 2.3 1.0.0-beta should not be below range ^0.1.0 || ~3.0.1 || 5.0.0 1.2.4 should not be below range 0.1.20 || 1.2.4 1.2.9 should be below range >2.0.0 1.0.2 should not be above range ~ 1.0(>=1.0.0 <1.1.0) 0.2.3 should be below range ~1 1.1.0 should not be below range > 1.0.0 0.7.1-1 should be above range ~0.6.1-1 1.0.0 should not be above range (*) 1.0.0 should not be above range >= 1(>=1.0.0) 1.9999.9999 should not be above range <= 2.0.0(<=2.0.0) 1.0.0-beta should be above range <1 1.2.3 should not be above range ~> 1(>=1.0.0 <2.0.0) 1.0.0 should not be below range 2.3.1 should not be above range 2.3(>=2.3.0 <2.4.0) 1.2.3 should not be below range 1.2.* || 2.* 1.1.3 should be below range 1.2.* 1.2.3 should not be below range ~>1 2.9.9 should not be below range 1.0.0 - 2.0.0 1.2.3 should not be below range * 1.1.1 should not be below range <1.2 2.3.2 should be below range ~>3.2.1 0.0.0 should not be below range >=0.2.3 || <0.0.1 2.0.0 should not be below range 1.0.0 - 2.0.0 2.2.4 should be above range ~>1 0.2.9 should not be above range <=2.0.0(<=2.0.0) 0.1.97 should not be above range >=0.1.97(>=0.1.97) 1.2.3 should not be below range ~1 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 2 0.2.5 should not be below range >0.2.3 >0.2.4 <=0.2.5 2.0.0 should not be above range <= 2.0.0(<=2.0.0) 1.1.0 should not be below range >1.0.0 0.2.3 should be below range ~1 0.1.0 should be below range ~ 1.0 2.1.3 should not be below range 2.x.x 2.2.3 should be above range ~>1 0.2.3 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 1.2.4 should not be below range 0.1.20 || >1.2.4 0.0.1 should be below range 1.0.0 - 2.0.0 1.0.0 should not be above range >=1.0.0(>=1.0.0) 0.2.4 should be below range ~>1 0.2.9 should not be above range <2.0.0(<2.0.0) 1.2.3 should not be above range 1.2.*(>=1.2.0 <1.3.0) 0.5.5 should not be below range ~v0.5.4-pre 0.1.5 should be below range 0.1.20 || 1.2.4 1.2.3 should not be above range *(*) 0.6.0-asdf should be below range =0.7.x 1.0.0 should be below range 1.2.x || 2.x 1.2.3 should not be below range * 1.0.0 should be above range <1 3.3.0 should be above range ~>3.2.1 1.1.3 should be below range 1.2.x || 2.x 1.2.3 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 1.2.1 should be below range ~1.2.2 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) 3.1.3 should be above range 2.*.* 2.3.5 should be below range ~2.4 1.3.4 should not be below range || 1.0.0 should not be below range =0.1.0 2.5.5 should be above range ~2.4 3.2.3 should be above range ~> 1 2.4.1 should be above range 2.3 2.0.0 should be above range 1.0.0 0.5.4 should not be below range ~v0.5.4-pre 0.2.5 should not be above range >0.2.3 >0.2.4 <=0.2.5(>0.2.4 <=0.2.5) 2.0.0 should be below range >2.0.0 0.2.4 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 1.0.0 should be below range 2.x.x 0.8.0 should be above range =0.7.x 1.0.0 should not be below range >=1 2.0.0 should not be above range 1.0.0 - 2.0.0(>=1.0.0 <=2.0.0) 1.9999.9999 should not be above range <2.0.0(<2.0.0) 1.1.3 should be below range 1.2.* || 2.* 0.0.0-0 should not be above range ^1(>=1.0.0 <2.0.0) 0.0.0 should not be above range >=0.2.3 || <0.0.1(>=0.2.3 || <0.0.1) 1.2.3 should not be below range 1.0.0 - 2.0.0 0.1.97 should not be above range >=0.1.97(>=0.1.97) 0.6.1-1 should not be above range ~0.6.1-1(>=0.6.1-1 <0.7.0) 1.0.1 should be above range 1.0.0 0.7.2 should not be above range >=0.7.x(>=0.7.0) 2.0.0 should not be above range ^3.0.0(>=3.0.0 <4.0.0) 2.0.1 should be above range 1.0.0 - 2.0.0 1.0.0 should not be above range 1.0.0(1.0.0) 1.1.0 should not be below range >=1.0.0 0.6.2 should be below range >=0.7.x 0.2.9 should not be below range <2.0.0 0.6.0 should be below range =0.7.x 0.2.9 should not be below range <= 2.0.0 0.5.4-alpha should be below range ~v0.5.4-pre 1.1.0 should not be below range >= 1.0.0 0.2.4 should not be above range >=0.2.3 <=0.2.4(>=0.2.3 <=0.2.4) 1.2.4 should not be above range 0.1.20 || 1.2.4(0.1.20 || 1.2.4) 2.1.3 should not be below range 1.2.* || 2.* 2.9999.9999 should be above range <2.0.0 1.0.1 should not be below range > 1.0.0 1.0.0 should be below range >1 1.1.3 should be below range 1.2.* 0.0.0 should be below range ~1.0 2.4.5 should not be below range ~2.4 1.2.5 should be above range 0.1.20 || 1.2.4 1.2.9 should be below range >=2.0.0 2.0.0 should not be below range <= 2.0.0 3.2.0 should be below range ~>3.2.1 .parse inclusive range expressions "1.2.3 - 1.3.4" excludes 1.2.3-0 "1.2.3-alpha - 1.3.4-alpha" excludes 1.2.3-alph "1.2.3-alpha - 1.3.4-alpha" excludes 1.3.5 parse("1.2.3-alpha - 1.3.4").to_s includes 1.2.3-alpha parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.4-alpha0 parse("1.2.3 - 1.3.4").to_s excludes 1.3.5-0 "1.2.3 - 1.3.4" excludes 1.3.5-0 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 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.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 - 1.3.4-alpha" excludes 1.3.4-alpha0 parse("1.2.3 - 1.3.4").to_s includes 1.2.3 "1.2.3 - 1.3.4" excludes 1.2.2 "1.2.3-alpha - 1.3.4-alpha" stringifies as >=1.2.3-alpha <=1.3.4-alpha "1.2.3-alpha - 1.3.4-alpha" includes 1.2.3-alpha "1.2.3 - 1.3.4-alpha" excludes 1.2.3-0 parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.3.5 "1.2.3-alpha - 1.3.4" excludes 1.2.3-alph "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.2 parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.3-0 "1.2.3-alpha - 1.3.4" includes 1.3.4 parse("1.2.3-alpha - 1.3.4").to_s includes 1.3.4 "1.2.3 - 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-alpha - 1.3.4-alpha").to_s includes 1.2.3-alpha parse("1.2.3 - 1.3.4-alpha").to_s includes 1.3.4-alpha parse("1.2.3 - 1.3.4").to_s includes 1.3.4 "1.2.3 - 1.3.4-alpha" excludes 1.3.5 parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.3.5 parse("1.2.3-alpha - 1.3.4-alpha").to_s excludes 1.2.3-alph "1.2.3 - 1.3.4" includes 1.2.3 "1.2.3 - 1.3.4-alpha" stringifies as >=1.2.3 <=1.3.4-alpha "1.2.3 - 1.3.4" stringifies as >=1.2.3 <=1.3.4 parse("1.2.3-alpha - 1.3.4").to_s excludes 1.3.5-0 parse("1.2.3 - 1.3.4-alpha").to_s excludes 1.2.2 "1.2.3 - 1.3.4-alpha" includes 1.2.3 "1.2.3-alpha - 1.3.4-alpha" includes 1.3.4-alpha parse("1.2.3 - 1.3.4-alpha").to_s includes 1.2.3 "1.2.3-alpha - 1.3.4" excludes 1.3.5-0 "1.2.3 - 1.3.4" includes 1.3.4 unioned expressions "1 <=1.2.5" stringifies as >=1.0.0 <=1.2.5 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 4.999.999 parse("1.2 <1.2.5").to_s includes 1.2.4 parse("1 <=1.2.5").to_s includes 1.0.0 "<1.0.0 >2.0.0" excludes 0.0.0 parse("1.2 <1.2.5").to_s excludes 1.2.0-0 "1.2 <1.2.5" excludes 1.1.999 "<1.0.0 >2.0.0" stringifies as <0.0.0 "1 <=1.2.5" includes 1.2.5 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 5.0.0-0 "1.2 <1.2.5" includes 1.2.4 parse("1.2 <1.2.5").to_s excludes 1.9.0 "1 <=1.2.5" excludes 1.0.0-0 "1 <=1.2.5" excludes 0.999.999 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 5.0.0-0 parse("<1.0.0 >2.0.0").to_s excludes 0.0.0-0 "<1.0.0 >2.0.0" excludes 0.0.0-0 parse("1 <=1.2.5").to_s excludes 1.9.0 parse("1 <=1.2.5").to_s excludes 1.0.0-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 includes 4.999.999 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s excludes 2.999.999 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 3.0.0-0 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" includes 3.0.0 parse("1 <=1.2.5").to_s excludes 1.2.6-0 "1.2 <1.2.5" excludes 1.9.0 parse(">1.0.0 >2.0.0 >=3.0.0 <5.0.0").to_s includes 3.0.0 parse("1.2 <1.2.5").to_s excludes 1.1.999 "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 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.2 <1.2.5" excludes 1.2.0-0 parse("1 <=1.2.5").to_s includes 1.2.5 "1 <=1.2.5" excludes 1.2.6-0 "1 <=1.2.5" excludes 1.9.0 ">1.0.0 >2.0.0 >=3.0.0 <5.0.0" excludes 2.999.999 "1.2 <1.2.5" includes 1.2.0 parse("1.2 <1.2.5").to_s includes 1.2.0 "1.2 <1.2.5" excludes 1.2.5-0 parse("1.2 <1.2.5").to_s excludes 1.2.5-0 "1 <=1.2.5" includes 1.0.0 parse("1 <=1.2.5").to_s excludes 0.999.999 "reasonably close" expressions "~1.2" includes 1.2.999 parse("~ 1.2.3").to_s excludes 1.3.0-0 parse("~1.2.3-alpha").to_s includes 1.2.3-alpha parse("~ 1.2.3").to_s excludes 1.2.3-0 parse("~1").to_s includes 1.999.999 parse("~1.2.3-alpha").to_s excludes 1.2.3-alph "~ 1.2.3" excludes 1.2.3-0 "~1.2.3-alpha" excludes 1.2.3-alph "~1" excludes 1.0.0-0 "~1.2.3-alpha" includes 1.2.3 parse("~1.2").to_s excludes 1.1.999 parse("~ 1.2").to_s includes 1.2.0 "~1.2.3" excludes 1.3.0-0 parse("~1.2.3").to_s excludes 1.3.0-0 "~1.2" excludes 1.1.999 parse("~1.2").to_s includes 1.2.0 "~ 1.2" stringifies as >=1.2.0 <1.3.0 parse("~1").to_s excludes 1.0.0-0 "~1.2.3" includes 1.2.5 parse("~ 1.2.3-alpha").to_s excludes 1.2.4-0 "~1.2.3" excludes 1.2.2 "~ 1.2.3" includes 1.2.5 parse("~ 1.2.3-alpha").to_s includes 1.2.3 parse("~ 1.2.3").to_s includes 1.2.5 "~ 1.2.3-alpha" includes 1.2.3-alpha "~ 1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 "~1" includes 1.999.999 "~ 1.2.3-alpha" excludes 1.2.4-0 "~1.2" stringifies as >=1.2.0 <1.3.0 "~ 1.2" excludes 1.3.0-0 parse("~ 1.2.3").to_s includes 1.2.3 parse("~1.2.3").to_s excludes 1.2.2 "~1.2.3" stringifies as >=1.2.3 <1.3.0 parse("~ 1").to_s excludes 0.999.999 parse("~1").to_s excludes 2.0.0-0 "~1" includes 1.0.0 "~ 1.2" excludes 1.1.999 parse("~ 1").to_s excludes 1.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" excludes 1.3.0-0 parse("~1.2").to_s includes 1.2.999 "~ 1" includes 1.999.999 parse("~1.2.3").to_s includes 1.2.5 "~ 1" excludes 1.0.0-0 "~ 1.2.3" excludes 1.2.2 "~1.2.3" excludes 1.2.3-0 parse("~1.2.3").to_s excludes 1.2.3-0 parse("~ 1.2").to_s excludes 1.1.999 "~1.2" excludes 1.3.0-0 parse("~ 1").to_s excludes 2.0.0-0 parse("~ 1.2").to_s includes 1.2.999 parse("~ 1.2.3-alpha").to_s excludes 1.2.3-alph parse("~ 1.2.3").to_s excludes 1.2.2 "~ 1.2" excludes 1.2.0-0 parse("~ 1.2.3-alpha").to_s includes 1.2.3-alpha "~ 1.2.3-alpha" excludes 1.2.3-alph parse("~1.2").to_s excludes 1.2.0-0 "~1" excludes 2.0.0-0 "~1" excludes 0.999.999 "~1.2" excludes 1.2.0-0 parse("~ 1.2").to_s excludes 1.2.0-0 "~1.2" includes 1.2.0 "~ 1" excludes 2.0.0-0 "~ 1" includes 1.0.0 "~1.2.3-alpha" stringifies as >=1.2.3-alpha <1.3.0 parse("~1.2").to_s excludes 1.3.0-0 "~1" stringifies as >=1.0.0 <2.0.0 parse("~ 1").to_s includes 1.0.0 "~ 1" excludes 0.999.999 parse("~ 1.2").to_s excludes 1.3.0-0 parse("~1.2.3-alpha").to_s includes 1.2.3 "~1.2.3" includes 1.2.3 parse("~1.2.3-alpha").to_s excludes 1.2.4-0 parse("~1").to_s includes 1.0.0 parse("~1.2.3").to_s includes 1.2.3 parse("~1").to_s excludes 0.999.999 "~ 1" stringifies as >=1.0.0 <2.0.0 parse("~ 1").to_s includes 1.999.999 "~ 1.2" includes 1.2.999 "~1.2.3-alpha" excludes 1.2.4-0 "~ 1.2" includes 1.2.0 "~ 1.2.3-alpha" includes 1.2.3 "~ 1.2.3" includes 1.2.3 ored expressions 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 excludes 1.2.6-0 ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.6 parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.6 "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.3 "1.2.3 || 1.2.4 || 1.2.5" stringifies as >=1.2.3 <=1.2.5 returns nil on exclude_end? 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.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 returns nil on end ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" includes 1.2.3 parse("1.2.3 || 1.2.4 || 1.2.5").to_s includes 1.2.3 "1.2.3 || 1.2.4 || 1.2.5" includes 1.2.5 parse(">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.3-0 returns expected begin parse("1.2.3 || 1.2.4 || 1.2.5").to_s excludes 1.2.5-0 ">=1.2.3 <1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 overlapping ">=1.2.3 || 1.2.5" includes 1.2.4 ">=1.2.3 || 1.2.5" stringifies as >=1.2.3 parse(">=1.2.3 || 1.2.5").to_s includes 1.2.4 parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s includes 1.2.3 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.6-0 parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.6-0 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" 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" includes 1.2.3 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" stringifies as >=1.2.3 <1.3.0 parse(">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0").to_s excludes 1.2.3-0 ">=1.2.3 <=1.2.5 || >=1.2.5 <1.3.0" excludes 1.2.3-0 ">=1.2.3 || 1.2.5" excludes 1.2.3-0 parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.4-0 parse(">=1.2.3 || 1.2.5").to_s excludes 1.2.3-0 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 includes 1.2.6 ">=1.2.3 || 1.2.5" excludes 1.2.4-0 non-overlapping returns nil on exclude_begin? parse("1.2.3 || 1.2.5").to_s excludes 1.2.3-0 "1.2.3 || 1.2.5" excludes 1.2.3-0 parse("1.2.3 || 1.2.5").to_s includes 1.2.5 "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" excludes 1.2.4 returns nil on end returns nil on begin returns nil on exclude_end? parse("1.2.3 || 1.2.5").to_s includes 1.2.3 "1.2.3 || 1.2.5" includes 1.2.3 "1.2.3 || 1.2.5" includes 1.2.5 parse("1.2.3 || 1.2.5").to_s excludes 1.2.5-0 "1.2.3 || 1.2.5" stringifies as 1.2.3 || 1.2.5 loose version expressions parse("1.X").to_s includes 1.0.0 "1.x" stringifies as >=1.0.0 <2.0.0 parse("1").to_s excludes 0.999.999 "1.2.3-alpha" excludes 1.2.3-999 "1.x" includes 1.0.0 "1.2.X" includes 1.2.0 "1.x" excludes 1.0.0-alpha "1.2" excludes 1.1.999 parse("1.2.x").to_s excludes 1.2.0-alpha parse("1.x").to_s excludes 1.0.0-alpha "1.X" excludes 0.999.999 "1.2.X" excludes 1.1.999 parse("1.2.x").to_s excludes 1.1.999 parse("1.x").to_s includes 1.999.0 parse("1.X").to_s includes 1.999.0 "1.2.X" stringifies as >=1.2.0 <1.3.0 "1.2.x" excludes 1.2.0-alpha parse("1.2.X").to_s includes 1.2.999 parse("1.2").to_s excludes 1.3.0-0 parse("1").to_s includes 1.999.0 "1" excludes 2.0.0-0 parse("1.2.3-alpha").to_s excludes 1.2.3-beta parse("1.2.3").to_s includes 1.2.3 parse("1.2.x").to_s includes 1.2.0 "1.2.x" excludes 1.1.999 "1.X" includes 1.0.0 parse("1.2.X").to_s includes 1.2.0 "1.X" stringifies as >=1.0.0 <2.0.0 "1" excludes 0.999.999 parse("1.2.X").to_s excludes 1.2.0-alpha parse("1.2").to_s excludes 1.1.999 parse("1.2.3").to_s excludes 1.2.4-alpha parse("1.2.x").to_s excludes 1.3.0-0 "1" includes 1.999.0 parse("1.2").to_s includes 1.2.0 parse("1.2.3-alpha").to_s excludes 1.2.3-999 "1.X" excludes 2.0.0-0 parse("1.2.x").to_s includes 1.2.999 "1.2.x" includes 1.2.0 parse("1.X").to_s excludes 1.0.0-alpha parse("1.2.3").to_s excludes 1.2.2 "1.2.3-alpha" includes 1.2.3-alpha "1.x" excludes 2.0.0-0 parse("1").to_s excludes 2.0.0-0 "1.2.3-alpha" stringifies as 1.2.3-alpha "1.X" excludes 1.0.0-alpha parse("1.2").to_s includes 1.2.999 parse("1.x").to_s excludes 0.999.999 "1.2.3" stringifies as 1.2.3 "1.2.X" excludes 1.3.0-0 "1.2.3" includes 1.2.3 "1.2.X" includes 1.2.999 "1.2" includes 1.2.0 "1.2.3-alpha" excludes 1.2.3-beta "1.2.3" excludes 1.2.4-alpha parse("1.X").to_s excludes 2.0.0-0 "1.x" excludes 0.999.999 "1.2" includes 1.2.999 "1.2.x" includes 1.2.999 parse("1.2").to_s excludes 1.2.0-alpha "1.2.x" excludes 1.3.0-0 "1" stringifies as >=1.0.0 <2.0.0 parse("1").to_s excludes 1.0.0-alpha "1.2.3" excludes 1.2.3-alpha parse("1.2.X").to_s excludes 1.3.0-0 parse("1.2.3").to_s excludes 1.2.3-alpha parse("1.X").to_s excludes 0.999.999 "1.2.3" excludes 1.2.2 "1.x" includes 1.999.0 parse("1").to_s includes 1.0.0 "1" excludes 1.0.0-alpha parse("1.2.3-alpha").to_s includes 1.2.3-alpha "1.2.x" stringifies as >=1.2.0 <1.3.0 parse("1.2.X").to_s excludes 1.1.999 "1" includes 1.0.0 "1.2" excludes 1.2.0-alpha parse("1.x").to_s includes 1.0.0 "1.2" excludes 1.3.0-0 parse("1.x").to_s excludes 2.0.0-0 "1.X" includes 1.999.0 "1.2.X" excludes 1.2.0-alpha "1.2" stringifies as >=1.2.0 <1.3.0 invalid expressions raise an appropriate exception open-ended expressions parse("<=1.2.3").to_s excludes 1.2.3-0 parse("<1.2.3").to_s includes 1.2.2 "<1.2.3-alpha" includes 1.2.3-alph "<=1.2.3" stringifies as <=1.2.3 parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha0 parse(">= 1.2.3-alpha").to_s excludes 1.2.3-alph "<=1.2.3" includes 1.2.3 parse("<1.2.3").to_s excludes 2.0.0 "<=1.2.3" excludes 0.0.0-0 "<1.2.3" excludes 0.0.0-0 ">=1.2.3" excludes 1.2.3-0 "<= 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 0.0.0-0 "<1.2.3-alpha" excludes 2.0.0 "<1.2.3-alpha" includes 0.0.0 parse("< 1.2.3").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-alpha ">= 1.2.3-alpha" excludes 1.2.3-alph "<= 1.2.3-alpha" includes 0.0.0 parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha0 parse("<= 1.2.3").to_s excludes 0.0.0-0 parse(">=1.2.3").to_s includes 999.0.0 "<= 1.2.3-alpha" excludes 1.2.3-alpha.0 "< 1.2.3-alpha" excludes 1.2.3-alpha ">1.2.3" includes 999.0.0 "< 1.2.3-alpha" excludes 0.0.0-0 "> 1.2.3-alpha" includes 1.2.3-alpha.0 "<= 1.2.3" excludes 1.2.3-0 parse(">= 1.2.3").to_s excludes 1.2.2 parse("< 1.2.3").to_s includes 1.2.2 parse(">= 1.2.3").to_s includes 999.0.0 parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha parse("<1.2.3-alpha").to_s excludes 0.0.0-0 ">1.2.3" excludes 1.2.3 "<= 1.2.3-alpha" includes 1.2.3-alpha parse(">= 1.2.3").to_s excludes 1.2.3-0 ">1.2.3" excludes 1.2.4-0 parse("<= 1.2.3-alpha").to_s includes 0.0.0 ">= 1.2.3" excludes 1.2.3-0 "<= 1.2.3" includes 1.2.3 parse("<= 1.2.3").to_s includes 1.2.3 parse(">1.2.3").to_s excludes 1.2.3 parse(">= 1.2.3-alpha").to_s includes 1.2.3-alpha0 ">1.2.3-alpha" includes 999.0.0 "< 1.2.3" excludes 0.0.0-0 parse("<=1.2.3").to_s includes 1.2.3 parse(">1.2.3").to_s excludes 1.2.4-0 parse(">1.2.3-alpha").to_s includes 1.2.3-alpha.0 "<=1.2.3-alpha" excludes 1.2.3-alphb "<=1.2.3-alpha" excludes 0.0.0-0 "<= 1.2.3-alpha" stringifies as <=1.2.3-alpha "< 1.2.3" includes 0.0.0 parse("<1.2.3-alpha").to_s includes 0.0.0 ">=1.2.3-alpha" excludes 1.2.4-alpha "> 1.2.3-alpha" stringifies as >1.2.3-alpha parse("<= 1.2.3").to_s excludes 1.2.3-0 ">= 1.2.3-alpha" stringifies as >=1.2.3-alpha parse("< 1.2.3-alpha").to_s excludes 1.2.3-alpha "<=1.2.3" excludes 1.2.3-0 "<1.2.3" excludes 2.0.0 "> 1.2.3-alpha" excludes 1.2.3-alpha parse("<= 1.2.3-alpha").to_s excludes 0.0.0-0 ">= 1.2.3-alpha" excludes 1.2.4-alpha parse("> 1.2.3").to_s includes 999.0.0 "<= 1.2.3-alpha" excludes 1.2.3-alpha0 "< 1.2.3-alpha" includes 0.0.0 "<1.2.3-alpha" stringifies as <1.2.3-alpha parse("<1.2.3").to_s excludes 1.2.3-0 "<1.2.3" excludes 1.2.3-0 "<=1.2.3-alpha" excludes 1.2.3-alpha.0 "> 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" stringifies as >=1.2.3-alpha "< 1.2.3-alpha" includes 1.2.3-alph "< 1.2.3" excludes 2.0.0 "> 1.2.3-alpha" includes 999.0.0 ">1.2.3-alpha" stringifies as >1.2.3-alpha parse("<= 1.2.3").to_s includes 0.0.0 "<= 1.2.3-alpha" excludes 1.2.3-alphb ">= 1.2.3-alpha" includes 1.2.3-alpha0 parse("<1.2.3-alpha").to_s excludes 1.2.3-alpha parse("<1.2.3-alpha").to_s includes 1.2.3-alph parse(">= 1.2.3-alpha").to_s excludes 1.2.4-alpha parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alpha.0 "> 1.2.3" excludes 1.2.4-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 ">=1.2.3" includes 999.0.0 parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha.0 "<1.2.3-alpha" excludes 1.2.3-alpha parse("> 1.2.3-alpha").to_s includes 999.0.0 ">=1.2.3-alpha" includes 1.2.3-alpha0 ">= 1.2.3" includes 999.0.0 parse("<1.2.3-alpha").to_s excludes 2.0.0 parse("<= 1.2.3-alpha").to_s includes 1.2.3-alpha parse("<1.2.3").to_s includes 0.0.0 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 excludes 1.2.2 ">=1.2.3" stringifies as >=1.2.3 parse("> 1.2.3").to_s excludes 1.2.3 "<= 1.2.3" excludes 0.0.0-0 parse("< 1.2.3-alpha").to_s excludes 0.0.0-0 "<=1.2.3-alpha" excludes 1.2.3-alpha0 "> 1.2.3" stringifies as >1.2.3 parse(">1.2.3-alpha").to_s excludes 1.2.3-alpha ">=1.2.3" excludes 1.2.2 ">= 1.2.3-alpha" includes 999.0.0 "<1.2.3" includes 1.2.2 "<1.2.3" includes 0.0.0 parse("< 1.2.3-alpha").to_s includes 1.2.3-alph "<=1.2.3-alpha" stringifies as <=1.2.3-alpha "<=1.2.3" includes 0.0.0 parse(">=1.2.3-alpha").to_s excludes 1.2.3-alph parse(">= 1.2.3-alpha").to_s includes 999.0.0 parse(">=1.2.3").to_s excludes 1.2.3-0 parse("<=1.2.3-alpha").to_s includes 0.0.0 "<= 1.2.3" includes 0.0.0 parse(">1.2.3-alpha").to_s includes 999.0.0 ">1.2.3" stringifies as >1.2.3 "> 1.2.3" excludes 1.2.3 ">=1.2.3-alpha" excludes 1.2.3-alph parse(">=1.2.3-alpha").to_s excludes 1.2.4-alpha parse("<= 1.2.3-alpha").to_s excludes 1.2.3-alphb parse(">1.2.3-alpha").to_s includes 1.2.3-alpha0 parse("< 1.2.3").to_s excludes 2.0.0 parse("<1.2.3").to_s excludes 0.0.0-0 parse("< 1.2.3").to_s excludes 0.0.0-0 "<=1.2.3-alpha" includes 0.0.0 "< 1.2.3" stringifies as <1.2.3 parse("> 1.2.3-alpha").to_s includes 1.2.3-alpha.0 "<1.2.3" stringifies as <1.2.3 ">1.2.3-alpha" includes 1.2.3-alpha.0 "> 1.2.3-alpha" includes 1.2.3-alpha0 parse("<=1.2.3-alpha").to_s excludes 1.2.3-alpha0 "< 1.2.3" includes 1.2.2 ">=1.2.3-alpha" includes 999.0.0 "< 1.2.3-alpha" stringifies as <1.2.3-alpha ">= 1.2.3" excludes 1.2.2 "<1.2.3-alpha" excludes 0.0.0-0 parse(">1.2.3").to_s includes 999.0.0 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 2.0.0 parse("<=1.2.3-alpha").to_s excludes 1.2.3-alphb parse("< 1.2.3-alpha").to_s includes 0.0.0 ">= 1.2.3-alpha" includes 1.2.3-alpha ">1.2.3-alpha" excludes 1.2.3-alpha "<= 1.2.3" stringifies as <=1.2.3 parse(">=1.2.3-alpha").to_s includes 1.2.3-alpha parse("<=1.2.3").to_s includes 0.0.0 ">=1.2.3-alpha" includes 1.2.3-alpha parse("<=1.2.3-alpha").to_s includes 1.2.3-alpha SemanticPuppet::Dependency .query with one source queries the source for each dependency populates all returned ModuleReleases with related dependencies queries the source for release information populates the returned ModuleRelease with related dependencies queries the source for each dependency only once returns a ModuleRelease with the requested dependencies without sources returns an unsatisfied ModuleRelease with multiple sources resolves all dependencies against all sources queries each source in turn .sources can be emptied by using #clear_sources is frozen can be modified by using #add_source defaults to an empty list .resolve for a module without dependencies returns the greatest release matching the version range when the query omits all stable versions returns the greatest prerelease version matching the range when the query omits all versions fails with an appropriate message when the query includes both stable and prerelease versions returns the greatest stable release matching the range for a module with dependencies returns the greatest releases matching the dependency range when the dependency has no stable versions returns the greatest prerelease version matching the range when the dependency cannot be satisfied fails with an appropriate message when the dependency has both stable and prerelease versions returns the greatest stable release matching the range for a module with circular dependencies that cannot be resolved fails with an appropriate message that can be resolved terminates for a module with competing dependencies that overlap returns the greatest release satisfying all dependencies that do not overlap fails with an appropriate message 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 that violate graph constraints that cannot be resolved fails with an appropriate message that can be resolved terminates SemanticPuppet::Dependency::UnsatisfiableGraph #sentence_from_list with a list of one item is expected to eql "foo" with a list of more than three items is expected to eql "foo, bar, baz, and quux" with a list of three items is expected to eql "foo, bar, and baz" with a list of two items is expected to eql "foo and bar" #message is expected to match /foo, bar, and baz/ SemanticPuppet::Dependency::ModuleRelease #satisfied? returns false when not all dependencies have been satisified returns false when no dependencies have been satisified returns true when there are no dependencies to satisfy returns true when all dependencies have been satisified returns false when not all dependency versions have been satisified #satisfies_dependency? returns false when there are no dependencies to satisfy returns false when the release does not match the dependency name returns true when the release matches the dependency returns false when the release does not match the dependency version #to_s is expected to =~ /1.2.3/ is expected to =~ /foobarbaz/ #<=> orders releases by name first considers releases with greater version numbers greater considers releases with lesser version numbers lesser orders releases with different names lexographically #<< does not mark mis-matching dependency names as satisfied marks matching dependencies as satisfied does not mark mis-matching dependency versions as satisfied #dependency_names lists the names of all the release's dependencies #== considers two releases with different versions to be different considers two equal releases to be equal can compare a release with something that is not a release considers a release different from something that is not a release considers two releases with different names to be different SemanticPuppet::Dependency::Graph #initialize adds the named dependencies for every key in the passed hash adds constraints for every key in the passed hash implements the GraphNode protocol can be called without arguments #add_graph_constraint permits multiple graph constraints can create a new constraint on a graph #add_constraint permits multiple constraints against the same module name can create a new constraint on a module #satisfies_dependency? is not satisfied by modules it does not depend on is not satisfied by modules that do not fulfill the constraint is satisfied by modules that do fulfill all the constraints is not satisfied by modules that do not fulfill all the constraints #satisfies_graph? returns true if the solution violates no graph constraints returns false if the solution violates a graph constraint returns false if the solution violates any graph constraint SemanticPuppet::Dependency::GraphNode dependencies are maintained in the #dependencies Hash are added by #add_dependency #populate_children saves all relevant nodes as its children accepts a graph solution and populates it across all nodes #satisfied is satisfied when all dependencies are fulfilled is unsatisfied when any dependencies are missing is unsatisfied when no nodes have been appended #<< does not append nodes with unknown names appends satisfying nodes to the dependencies sorts the dependencies for each addition to the same node sorts once the dependencies for a specific node does not append unsatisfying nodes #<=> can be compared Finished in 0.36854 seconds (files took 0.38941 seconds to load) 987 examples, 0 failures Randomized with seed 54281 ┌──────────────────────────────────────────────────────────────────────────────┐ │ dh_ruby --install finished │ └──────────────────────────────────────────────────────────────────────────────┘ dh_installdocs -i -O--buildsystem=ruby dh_ruby_fixdocs -i -O--buildsystem=ruby debian/rules override_dh_installchangelogs make[1]: Entering directory '/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4' dh_installchangelogs CHANGELOG.md -O--buildsystem=ruby make[1]: Leaving directory '/build/ruby-semantic-puppet-BDJkVg/ruby-semantic-puppet-1.0.4' dh_installsystemduser -i -O--buildsystem=ruby dh_perl -i -O--buildsystem=ruby dh_link -i -O--buildsystem=ruby dh_strip_nondeterminism -i -O--buildsystem=ruby dh_compress -X.rb -i -O--buildsystem=ruby dh_fixperms -i -O--buildsystem=ruby dh_missing -i -O--buildsystem=ruby dh_ruby_fixdepends -i -O--buildsystem=ruby dh_installdeb -i -O--buildsystem=ruby dh_gencontrol -i -O--buildsystem=ruby dpkg-gencontrol: warning: Depends field of package ruby-semantic-puppet: substitution variable ${shlibs:Depends} used, but is not defined dh_md5sums -i -O--buildsystem=ruby dh_builddeb -i -O--buildsystem=ruby dpkg-deb: building package 'ruby-semantic-puppet' in '../ruby-semantic-puppet_1.0.4-1_all.deb'. dpkg-genbuildinfo --build=all dpkg-genchanges --build=all >../ruby-semantic-puppet_1.0.4-1_all.changes dpkg-genchanges: info: binary-only arch-indep upload (source code and arch-specific packages not included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) I: running special hook: sync-out /build/ruby-semantic-puppet-BDJkVg /tmp/ruby-semantic-puppet-1.0.4-1v14i9jl6 I: cleaning package lists and apt cache... I: creating tarball... I: done I: removing tempdir /tmp/mmdebstrap.hcVG73dL2c... I: success in 1734.5084 seconds md5: ruby-semantic-puppet_1.0.4-1_all.deb: OK sha1: ruby-semantic-puppet_1.0.4-1_all.deb: OK sha256: ruby-semantic-puppet_1.0.4-1_all.deb: OK Checksums: OK